McJtyMods / InControl

Be In Control of Mob Spawns and others
MIT License
46 stars 17 forks source link

trying to set certain mobs to spawn to a specific biome #304

Closed JeezyOG closed 1 year ago

JeezyOG commented 2 years ago

Spawn { "mob": "elitesscpsneatherupdate:scp_049", "healthmultiply": 2, "damagemultiply": 2, "minlight": 0, "maxlight": 5, "biome": "yggdrasil:dragontree_desert", "result": "allow" }, { "result": "deny" }

Spawner { "mob": "elitesscpsneatherupdate:scp_049", "persecond": 0.5, "attempts": 1, "amount": { "minimum": 1, "maximum": 1 }, "conditions": { "dimension": "minecraft:overworld", "mindist": 5, "maxdist": 20, "minheight": 45, "maxheight": 175, "maxthis": 1 } }

Mob keeps spawning in any biome and now no mobs will spawn in the dragon tree desert after tweaking the configs to what's above. Couldn't find any similar issues that worked as a fix.

McJty commented 2 years ago

This rule will deny ALL mob spawns. I doubt that's what you want:

{ "result": "deny" }

JeezyOG commented 2 years ago

Def not, how would I go about listing the mob too a specific biome? from reading up on the wiki was mentioning the deny portion so I had added it after the biome I want it to spawn in.

Edit: Still no mobs in dragon tree biome but are spawning again in surrounding ones. the mob I've set to the biome is the only one occasionally spawning however still spawning in other biomes as well.

McJty commented 2 years ago

Rules need to work on their own. The problem with your deny rule is that it doesn't know on what mob to work. So it will deny everything. You need to specify the mob again (specifying it in the first rule is irrelevant for this, rules work independent from each other)

JeezyOG commented 2 years ago

when you say specify the mob again, so I would leave the deny and add the mob ID after? or would it be setup different. I'm a bit new too learning how to set these things up so sorry in advance for the amount of questions

McJty commented 2 years ago

Specify the mob and then result deny in the same rule

JeezyOG commented 2 years ago

I've tried a few combinations and it seems it'll either completely disable the spawn or still spawn it in any biome. I've also tried putting the deny under the entity name which causes it to be removed from spawning unless I'm putting it into the wrong area

{ "mob": "elitesscpsneatherupdate:scp_049", "result": "default", "healthmultiply": 2, "damagemultiply": 2, "minlight": 0, "maxlight": 5, "biome": "yggdrasil:dragontree_desert", "result": "allow" }, { "mob": "elitesscpsneatherupdate:scp_049", "result": "deny" },

Edit: I've also tried adding them all to the same rule at the bottom and while it will spawn it doesn't whitelist biome spawns for it, I've also tried to se each spawn in its own [] section to no avail as it doesn't seem that's the proper way to do it

McJty commented 2 years ago

Why do you have both result default and allow in your rule? It can be only one The rule you pasted there. What's the effect of that one?

JeezyOG commented 2 years ago

I'm attempting to spawn the scp 049 in light levels between 0-5 specific to the dragon tree desert, while trying to blacklist the entity from spawning in any other biome. The default I added back in due to just trying multiple things to see if something will work. I also tried to add in phases which didn't seem to change anything as well. The biome will sill only spawn this entity and only because its set to spawn on a player. any other entity doesn't seem to spawn in the biome however they are spawning in hordes in surrounding biomes now.

McJty commented 2 years ago

Ok, show me the final rule file you tested and the result you got as well as the expected result. Your report is a bit confusing. I need a clear report with input and output

JeezyOG commented 2 years ago

I was just trying out this to no avail, I'm not really sure where to add the entity name to the deny rule without removing the entity spawn itself. With the rule listed there's no current spawn of the entity. Removing the deny portion at the bottom spawns it, however its not set to a specific biome. I'm expecting the mob to only trigger a spawn chance when the player enters the specific biome. In this case - yggdrasil:dragontree_desert. I've also tried with phases and putting the biomes in the spawner section however no luck. After tweaking the configs for a bit it seems no mobs are spawning at all in the biome now even when the name is removed from any configs.

"mob": "elitesscpsneatherupdate:scp_049",
"healthmultiply": 2,
"damagemultiply": 2,
"minlight": 0,
"maxlight": 5,
"biome": "yggdrasil:dragontree_desert",
"result": "allow" 

}, { "result": "deny", "mob": "elitesscpsneatherupdate:scp_049" }, As a side not i tried both deny above and below the entity name with no change.

Without the bottom portion and when the mob will spawn but not set to the specific biome.

"mob": "elitesscpsneatherupdate:scp_049",
"healthmultiply": 2,
"damagemultiply": 2,
"minlight": 0,
"maxlight": 5,
"biome": "yggdrasil:dragontree_desert",
"result": "allow" 

},

McJty commented 2 years ago

Are you sure that biome is correct?

JeezyOG commented 2 years ago

I believe so but I'll check up on it after work as it's late, I'll test some base minecraft biomes or some of the BYG ones around and see if something works. Is the actual rules setup where they should work in the case of the biome being properly placed?

McJty commented 2 years ago

Seems ok. Order within the rule itself doesn't matter. Order of rules does though

JeezyOG commented 2 years ago

So I've tested a few different combos. adding phases into the spawn, moving around the biome string, adding results in different places. I'm not really having any luck and seems changing to a Minecraft desert biome has sopped the entity from spawning at all. My latest lines I've been testing are as follows

Spawn { "biome": "minecraft:desert", "mob": "elitesscpsneatherupdate:scp_049", "result": "default", "healthmultiply": 2, "damagemultiply": 2, "minlight": 0, "maxlight": 5 },

Spawner

{ "biome": "minecraft:desert", "mob": "elitesscpsneatherupdate:scp_049", "result": "default", "healthmultiply": 2, "damagemultiply": 2, "minlight": 0, "maxlight": 5 },

As of now I'm just trying to have the mob spawn to the specific biome. If there was a way o randomize the spawn with a percentage or something that would be a great thing to know. Is there any example maybe you could give on how to setup a string to spawn the mob to the specific biome?

McJty commented 2 years ago

That spawner syntax is totally wrong though. That's not what you put in spawner.json

JeezyOG commented 2 years ago

oh shoot! it didnt copy the right one oon the spawner, This is what i have in spawner { "mob": "elitesscpsneatherupdate:scp_049", "persecond": 1.0, "attempts": 1, "amount": { "minimum": 1, "maximum": 1 }, "conditions": { "dimension": "minecraft:overworld", "mindist": 5, "maxdist": 20, "minheight": 45, "maxheight": 175, "maxthis": 1 }

McJty commented 2 years ago

I recommend trying with another mob first. i.e. experiment with trying to spawn blazes in the overworld. See if you can get that working. Then work your way up to your custom mob

JeezyOG commented 2 years ago

With the above lines switching it out with soemthing like a blaze will spawn it but it won't be set to the specific biome I want it to spawn in. The spawns are working fine it's really just making it only spawn to wither a certain biome type or a certain biome.