ThatGravyBoat / Goodall

8 stars 2 forks source link

[Bug]: Massive amount of Dumbo Octopus spawning #6

Closed generalm13 closed 2 years ago

generalm13 commented 2 years ago

Bug Description

With "Just" goodall in a modded version of minecraft things are more or less fine, but the moment a modpack alters the spawn limits the game goes NUTS with spawning Dumbo Octopus

EDIT 1: I've tested the same thing with the other animals in the mod, but it seems to only happen with the Dumbo Octopus.

EDIT 2: Messed around with the configuration file, i assumed that setting Min and Max to 0 would DISABLE the Octopus, this is NOT the case. They keep spawning regardless Reducing the Weight to 0 made them stop spawning though :D

In my case i did some testing inside "All of Fabric 5" 1.22 (and in a custom client with only a minimap and Goodall

These are the results:

With just FTB Ultimine, Chunks, Teams and Goodall in the pack the same thing happens but the amount of octopus is not so big the game starts to suffer. 2022-05-21_12 28 43

====================

BUT this is what happened in "All of Fabric 5" I am assuming the pack alters the spawn limits of mobs but i've witnessed the same "behaviour" from the mod in Vanilla minecraft, but due to mob limits being lower it does not cause any actual issues. But due to the behaviour i decided to report this in both the Github of AoF5 and here.

I first noticed it when i wanted to go mining near my mushroom island, i had a few diamonds i found which i went to collect, but the moment i went a bit deeper this happened octopus

Testing has learned me that they start to massively spawn the moment i go deeper underground (Y=-10?) 2022-05-21_11 51 58

/kill @e[type=goodall:dumbo_octopus] resulted in numerous entity numbers kill

I tested other locations to see if it happens to other goodall mobs but it only seems to happen with the dumbo octopus, but it only seems to happen in areas where they can actually spawn. I tested a different part of the ocean i didn't see any of them spawn and the game was fine there. 2022-05-21_12 17 14

How to Reproduce?

  1. Add goodall to a client
  2. Go to a location Dumbo Octopus spawn
  3. Go deeper underground (Y=-10 usually did the trick for me)
  4. Watch the amount of Dumbo Octopus go up almost instantly.

Expected Behavior

No response

Version

1.0.1

Mod Loader Version

MC: 1.18.2 / Fabric API: 0.51.1

Mod Loader

Fabric

Logs or additional context

No response

Acknowledgement

ThatGravyBoat commented 2 years ago
  1. The setting for the min and max thing must be a vanilla thing because I tell vanilla that is the 2 sizes.
  2. By default the dumbo only spawns with a weight of 2 (7.5 times less than fish) and in the biome you showed it would spawn even less because salmon spawn at a weight of 15 so to calculate it the dumbo octopus spawn chance to spawn would be 6.25% and has the same spawn checks as every other water creature with a little more limit of forcing it to only spawn 15 below sea level for a 13 block range the only difference between the dumbo octopus and any other vanilla water creature that spawns in that same biome is that my spawn check checks for the SPAWNER spawn reason and lets it go through so unless the mod that increases spawn caps also change the spawn reason to SPAWNER which is bad as literally almost every mob in vanilla has a special check for SPAWNER spawn reason to make sure it can spawn from a spawner without checking for weird world spawn conditions.
  3. There is not much I can do as the default weight is 2 the only thing I can do is set it to 1 as literally everything else is just the same conditions as a cod, salmon, pufferfish, tropical fish, squid, and dolphin and actually a bit more restrictive.

If you can get the mod that changes the mob spawns that would be great.

generalm13 commented 2 years ago
  1. The setting for the min and max thing must be a vanilla thing because I tell vanilla that is the 2 sizes.
  2. By default the dumbo only spawns with a weight of 2 (7.5 times less than fish) and in the biome you showed it would spawn even less because salmon spawn at a weight of 15 so to calculate it the dumbo octopus spawn chance to spawn would be 6.25% and has the same spawn checks as every other water creature with a little more limit of forcing it to only spawn 15 below sea level for a 13 block range the only difference between the dumbo octopus and any other vanilla water creature that spawns in that same biome is that my spawn check checks for the SPAWNER spawn reason and lets it go through so unless the mod that increases spawn caps also change the spawn reason to SPAWNER which is bad as literally almost every mob in vanilla has a special check for SPAWNER spawn reason to make sure it can spawn from a spawner without checking for weird world spawn conditions.
  3. There is not much I can do as the default weight is 2 the only thing I can do is set it to 1 as literally everything else is just the same conditions as a cod, salmon, pufferfish, tropical fish, squid, and dolphin and actually a bit more restrictive.

If you can get the mod that changes the mob spawns that would be great.

I am not familiar with the spawnrates of all mobs in minecraft but the moment i go deep underground the mod starts spawning MORE Dumbo's, so i think something is not going 100% as intended? (and this is regardless of wether or not the spawnrates are adjusted)

dandin87 commented 2 years ago

We do not have a mod that alters spawn rate/mob cap in the pack. This did happen once on 1 of our servers but I hadn't seen it again, and couldn't reproduce in single player so did not make a report.

dandin87 commented 2 years ago

I did look through your code at the time to try and find the issue. But nothing stood out that would bypass the cap. But I do question why the Dumbo seems to be in Water Ambient, and Water Creature groups. SpawnData dumboSpawnData = new SpawnData(ModEntities.DUMBO.get(), SpawnGroup.WATER_AMBIENT, dumbo.weight, dumbo.min, dumbo.max);

public static final Supplier<EntityType> DUMBO = register("dumbo_octopus", DumboEntity::new, SpawnGroup.WATER_CREATURE, 0.9F, 0.9F);

also curious why you don't just do ::canMobSpawn? setSpawnRules(ModEntities.DUMBO.get(), SpawnRestriction.Location.IN_WATER, Heightmap.Type.OCEAN_FLOOR, DumboEntity::canDumboSpawn); setSpawnRules(ModEntities.BOOBY.get(), SpawnRestriction.Location.ON_GROUND, Heightmap.Type.MOTION_BLOCKING_NO_LEAVES, BoobyEntity::canMobSpawn);

generalm13 commented 2 years ago

In defense of the mod: The mob cap is a LOT higher in AoF5 then it is in a client with just Goodall. (one of my /kill commands killed 4043 Dumbo's!) The max i've seen with JUST Goodall installed was below 100

ALSO: Dusk Mod: Increases mob cap the later the night gets

In defense of AoF5: The Dumbo spawns actually INCREASE when i go deeper underground, isn't it supposed to start Despawning at that point?

dandin87 commented 2 years ago

I am not a programmer so this goes above my head, Might wanna post that info in the topic i linked earlier?

I did look through your code at the time to try and find the issue. But nothing stood out that would bypass the cap. But I do question why the Dumbo seems to be in Water Ambient, and Water Creature groups. SpawnData dumboSpawnData = new SpawnData(ModEntities.DUMBO.get(), SpawnGroup.WATER_AMBIENT, dumbo.weight, dumbo.min, dumbo.max); public static final Supplier DUMBO = register("dumbo_octopus", DumboEntity::new, SpawnGroup.WATER_CREATURE, 0.9F, 0.9F); also curious why you don't just do ::canMobSpawn? setSpawnRules(ModEntities.DUMBO.get(), SpawnRestriction.Location.IN_WATER, Heightmap.Type.OCEAN_FLOOR, DumboEntity::canDumboSpawn); setSpawnRules(ModEntities.BOOBY.get(), SpawnRestriction.Location.ON_GROUND, Heightmap.Type.MOTION_BLOCKING_NO_LEAVES, BoobyEntity::canMobSpawn);

Might wanna chuck that info towards the Goodall Dev. I have like way too little knowledge about this stuff XD

I posted the link earlier, but here it is again: #6

You realize this is where I posted this correct?? This is the Goodall github

dandin87 commented 2 years ago

In defense of the mod: The mob cap is a LOT higher in AoF5 then it is in a client with just Goodall. (one of my /kill commands killed 4043 Dumbo's!) The max i've seen with JUST Goodall installed was below 100

ALSO: Dusk Mod: Increases mob cap the later the night gets

In defense of AoF5: The Dumbo spawns actually INCREASE when i go deeper underground, isn't it supposed to start Despawning at that point?

The mob cap is not altered. A bug is allowing it to bypass the mob cap. Can you post a link to your save world with them spawning out of control? Or perhaps its reproduceable with your world seed and the location?

generalm13 commented 2 years ago

I am not a programmer so this goes above my head, Might wanna post that info in the topic i linked earlier?

I did look through your code at the time to try and find the issue. But nothing stood out that would bypass the cap. But I do question why the Dumbo seems to be in Water Ambient, and Water Creature groups. SpawnData dumboSpawnData = new SpawnData(ModEntities.DUMBO.get(), SpawnGroup.WATER_AMBIENT, dumbo.weight, dumbo.min, dumbo.max); public static final Supplier DUMBO = register("dumbo_octopus", DumboEntity::new, SpawnGroup.WATER_CREATURE, 0.9F, 0.9F); also curious why you don't just do ::canMobSpawn? setSpawnRules(ModEntities.DUMBO.get(), SpawnRestriction.Location.IN_WATER, Heightmap.Type.OCEAN_FLOOR, DumboEntity::canDumboSpawn); setSpawnRules(ModEntities.BOOBY.get(), SpawnRestriction.Location.ON_GROUND, Heightmap.Type.MOTION_BLOCKING_NO_LEAVES, BoobyEntity::canMobSpawn);

Might wanna chuck that info towards the Goodall Dev. I have like way too little knowledge about this stuff XD I posted the link earlier, but here it is again: #6

You realize this is where I posted this correct?? This is the Goodall github

Hence i deleted my post when i found out 2 seconds after i posted the stupid comment XD

generalm13 commented 2 years ago

In defense of the mod: The mob cap is a LOT higher in AoF5 then it is in a client with just Goodall. (one of my /kill commands killed 4043 Dumbo's!) The max i've seen with JUST Goodall installed was below 100 ALSO: Dusk Mod: Increases mob cap the later the night gets In defense of AoF5: The Dumbo spawns actually INCREASE when i go deeper underground, isn't it supposed to start Despawning at that point?

The mob cap is not altered. A bug is allowing it to bypass the mob cap. Can you post a link to your save world with them spawning out of control? Or perhaps its reproduceable with your world seed and the location?

Easy as pie: Start a new world, go to a Deep ocean, or anywhere the Dumbo spawn and just Start digging down.

This was the result in a world i created JUST for this screenshot cc7a49eff52a267f0e93d236a9af5abf

Please note that the Modpack is NOT causing this (unless it's any of the FTB mods (Chunks, Teams etc, which i installed to get a minimap to help search and observe))

The only difference is that the mobcap is in place and it stops spawning squids after a little bit.

generalm13 commented 2 years ago

afd8233bcce9806c37a02a91ec3112e4 This is the result with just FTB mods and Goodall

In both cases i went to about -25 height for the result, but they don't stop spawning or start despawning if i go lower.

dandin87 commented 2 years ago

Thanks! when I test originally I flew over the ocean. Now I know I need to dig down.

generalm13 commented 2 years ago

Got an update: The moment i ADDED: Oh The Biomes You'll Go...

This happened: 18491afec7e69a5019288fd4ac5d5bc6

(Again this is at a height of ~ -30)

dandin87 commented 2 years ago

2022-05-21_11 37 20 Here you can see the Water Creature Mob Cap of 5 on the right, but there are 1605 Water Creatures. All Dumbos.

generalm13 commented 2 years ago

2022-05-21_11 37 20 Here you can see the Water Creature Mob Cap of 5 on the right, but there are 1605 Water Creatures. All Dumbos.

Just a few over the cap :P nothing to worry about ROFL

dandin87 commented 2 years ago

SpawnData dumboSpawnData = new SpawnData(ModEntities.DUMBO.get(), SpawnGroup.WATER_AMBIENT, dumbo.weight, dumbo.min, dumbo.max); I think this is really the issue. I'm guessing its checking the Water Ambient spawn cap, seeing its ok, and continuing to spawn Water Creatures. Which will never increase the cap of the Water Ambient.

ThatGravyBoat commented 2 years ago

Oh that makes much more sense I didn't realize that they were being registered in 1 category and spawned in another. Im now more confused why that is even possible but ill fix that for the next update for now ill just say set the weight to 0 so you don't have thousands spawn.

ThatGravyBoat commented 2 years ago

give me like an hour and ill have a bug fix out

dandin87 commented 2 years ago

Changed Water Ambient to Water Creature. Its working now. SpawnData dumboSpawnData = new SpawnData(ModEntities.DUMBO.get(), SpawnGroup.WATER_AMBIENT, dumbo.weight, dumbo.min, dumbo.max) 2022-05-21_12 50 13 ;

ThatGravyBoat commented 2 years ago

yep here just got approved. https://www.curseforge.com/minecraft/mc-mods/goodall/files/3800471

ThatGravyBoat commented 2 years ago

I changed how I store the spawn data now to make sure they cant be different as it will always use the entitytype spawn group so this can never happen again.

generalm13 commented 2 years ago

Good! :D Glad i was able to help point this out :D