Mob Replacement not respecting Spawning Rules?
Golrith opened this issue ยท 4 comments
I tried using MobReplacement in conjunction with the addStage so that early game hostile mobs were replaced by passives. But my gameworld just filled up with Passives, and they just kept spawning. I had to use the Kill command to get rid of them all, killing 2k of each type of passive replacement!
I've then scrapped that idea, just using MobStages, but I used one replacement. Replacing Witch Spawns with Silverfish, but Silverfish are spawning very frequently. Even when all the other hostile mobs are unlocked, Silverfish are very common. Given how rare Witches do spawn, I wasn't expecting this.
This is just a gut feeling, but it feels like the replacements are not then following the spawning rules.
I'm also using a mod that blacklists blocks for spawning, so I've made the surface blocks blacklisted (grass, sand, gravel) but these Silverfish will spawn on these blocks which does support the idea the spawning rules are not being followed.
Am I misunderstanding how it works, or have I found a bug, or some weird cross mod interaction?
This is the simple code:
mods.MobStages.addStage("XXXXX", "minecraft:witch");
mods.MobStages.addReplacement("minecraft:witch", "minecraft:silverfish");
The mod doesn't replace the spawning logic, it replaces the mobs being spawned. For example, if you have a zombie spawner and zombies are set to become pigs, the spawner will effectively become a pig spawner. In your case, the mob cap for hostile mobs is never being filled because they are being converted into non-hostile spawns. This is more so a limitation of the vanilla mechanics not being usable in the way you want. I can add in a second spawn check for the new mob which should solve your issue, although this will have other unintended side effects.
Thanks. I was wondering in the first instance that it was a mob cap limit and a never ending loop. Perhaps it might be worth some sort of entity count check? Could easily kill worlds by accident with an incorrect script.
But, regarding the Witch to Silverfish replacement, I can understand a lot being spawned due to the limited pool of hostiles available early on, but it's bypassing the additional block blacklist defined by another mod. This seems to be just one of those cross-mod interactions that can happen. This other mod does allow for a lot of configurability, so I'll investigate options available there. Was just hoping the Replacement option would be the easier route :D
This can definitely be fixed, just need to look into it when I have a moment. With Forge 1.13.2 dropping, I have to start wrapping up some of my WIP projects, and finish up all the critical bugs on 1.12, so things are getting pretty busy soon. When it comes to the witch/silverfish issue, is it an issue of the witch being able to spawn on blocks that silverfish can not? If that is the case that would be pretty hard to fix unfortunately.
All hostiles were blacklisted from spawning on grass, sand, gravel (but not stone), with the idea that the surface is generally safe, but mobs will emerge from caves and mountains.
With the mob replacement rule in place, silverfish were spawning on these blacklisted blocks.
Not a problem now, I've used the other mod to do the spawning, and not used the mob replacement feature. Most likely a rare cross mod interaction oddity.
Really love your Stage Mods, really expands on what you can do in a modpack, keep up the good work!