For those interested, I'm starting this thread to discuss any findings, tests, and observations concerning the properties of mob spawning.
It is my hope that through this, we can gain a better understanding of how the process works, and in doing so use that information to improve upon features that rely upon the process, namely that of mob spawning mods and mob spawn list configurations.
*** This post last updated 8/28/13 ***
We've come a long way in such a short time, with lots of useful information collected in the form of tests, observations, code explanations, videos, and even a new mod!
I felt that with our current findings, it would be useful to post the most important items here in the OP.
Some players are experiencing an issue where CMS for 1.6.2 (DEV - not sure which version but it seems to be the recent one) is resetting its configs. Until this is fixed, you can set your MoC/CMS configs to "read-only" after you have them edited as desired.
Some servers running Mo' Creatures v5.2.3 are experiencing issues with invisible or "mixed up" mobs. If you have this issue, try updating to v5.2.4 or higher, and make sure to let the new configs generate (meaning you'll want to rename/move/delete old configs). In MoCGlobal.cfg, set useGlobalEntityRegistration to false. Do this for both server/client configs. (source)
Crudedragos (creator of Project Zulu) has released the JAS (Just Another Spawner) mod. JAS was made with the issues discussed in this thread directly in mind, and comes with a number of features to tailor the spawning of mobs. Compatible with all popular mob-adding mods (and hopefully all mods). Click here for more information.
Gurrok (that's me) has come up with a workaround for people that are experiencing a lack of creature spawns using Davidee's Mob Spawn Controls (original version, not MSC2). Compatible with all popular mob-adding mods (including Mo' Creatures 4.5.0). Click here for setup information.
Mo' Creatures v4.5.1 (for MC 1.4.7) sets your game/server to /gamerule doMobSpawning false each time your game/server loads/restarts. This stops all mob spawns except those through CMS. When you reload your game/server, you'll need to /gamerule doMobSpawning true (as an op on the server, or via cheats enabled in SSP) each time you restart the game or server. (source)
Non-despawning Mobs
One problem many players experience with unexpected spawn results occurs when despawning and non-despawning mobs share the same spawn list. There are several options to mitigate or sidestep this completely.
Add despawning creatures to the monster spawn list in Mob Spawn Controls. This allows the vanilla creatures to keep the creature spawn list to themselves, but spawn caps are typically hard to balance because of it.
Lower the chances of non-despawning mobs. Using any of the various mob spawning mods, you set the frequency/weight of non-despawners as low as you can while boosting the numbers for despawning creatures. This alleviates the problem, but is really more of a band-aid fix. Statistically speaking, non-despawning mobs will eventually take over the population, crowding out despawning mobs.
Move the despawning creatures to its own spawn list. Just Another Spawner adds two categories - Opensky and Underground - which could be used to separate despawners from non-despawners. JAS comes with other options as well for a number of variations.
Force all mobs to be despawners. Custom Mob Spawner and Just Another Spawner both have options to make any or all mobs despawn like most monsters do (or how all Minecraft mobs worked in the past). This levels the playing field, but makes it incredibly difficult to have farms, zoos, or in some cases even pets or mounts.
Below is a list of mobs that inherently do not despawn. Please send me a PM or reply in this thread to add/edit suggestions to this list.
Note: Mobs marked in yellow are unconfirmed - please notify me if you can confirm this mob's despawn status. - Vanilla Minecraft -
Chicken
Cow
EntityHorse (aka Horse)
MushroomCow (aka Mooshroom)
Pig
Sheep
SnowMan (aka Snow Golem)
Villager
VillagerGolem (aka Iron Golem)
Wolf (when non-hostile)
- Atmosmobs -
AtmosMobs.Bison
AtmosMobs.Salamander
- Primitive Mobs -
Primitive Mobs.Baby Spider (was this fixed in an update?)
Primitive Mobs.Mimic Chest
- Witches & More -
entity.WitchesandMore.Cobalt Knight
entity.WitchesandMore.Dark Knight
entity.WitchesandMore.Obsidian Knight
entity.WitchesandMore.Templar Knight
Global Entity ID Conflicts
Recently, it has come to my attention that one possible cause of spawn issues could be Entity ID conflicts. Vanilla MC can have up to 255 entities. This number is way more than vanilla uses, but once you start adding mods the list fills up pretty fast.
To remedy this, Forge has a feature for mod authors allowing them to have their own list of up to 255 entities per mod that will be safe from entity ID conflicts. Basically, the author references their modID then the entity ID (for example 'PrimitiveMobs.Summoner' as opposed to just 'Summoner').
Below is a list of mods (likely incomplete - please notify me of missing mods/corrections) that currently use Global EntityIDs rather than mod-specific EntityIDs.
Note: Mods highlighted in green come with configurable global Entity IDs.
Ars Magica
Atum: Journey into the Sands Biomes O' Plenty Dimensional Doors
DivineRPG (mainly its original mobs, newer ones use mod-specific IDs)
Dungeon Mobs
Elemental Creepers
Gravestone mod
Millenaire
Mo' Creatures (currently transitioning to mod-specific, see their thread for details) Mystcraft Thaumcraft
If you are experiencing Entity ID conflicts with one of the above mods, you may want to inform the mod author of this issue. They can get more information on how to use mod-specific Entity IDs from the following link: http://www.minecraft...0#entry18822284
MapleBacon has started a thread to help those installing multiple mods - what to keep in mind, watch out for, etc. which you can find here.
MapleBacon has also been kind enough to make a banner for the thread! Thank you so much!
...and now, the remainder of the original post from March 10, 2013.
With that, here are my findings for today. There were a number of surprises.
Started up a single player world, using Superflat Overworld preset. No additonal mob mods, vanilla mobs only. Using Mob Spawn Controls (MSC) to conduct tests. Using Rei's Minimap in Creative Mode with all entities set to be shown on map, using surface area setting. I started by making sure that all mobs were disabled by default, so I had an absolutely clean start. Had creature spawn frequency set to 20 in MSC config file (down from the default of 200). Using the standard debug screen (F3) with pie chart on.
After waiting a moment for the world to build and load, I spawn in the plains with no entities other than myself in the area (as predicted). Note that at times, I found villages, and made sure to move away from them before allowing new mobs to spawn. In retrospect, I probably should've turned village generation off.
Using MSC, I start by setting all Spawn Caps to 1. I then set the Bat (Ambient) to a min/max of 1/1 and enabled it. After about a minute, I had around 6 bats spawned in underground caves.
Disabled Bats, then walked away from them to let them despawn, which they prompty did.
Enabled Squid (Water creature) at 1/1. In the various small pools generated above and below ground, I had between 1-5 up at any given time. Disabled, and let them despawn.
Enabled Spider (Monster) at 1/1, set time to night. Immediately, the entity number climbed to the high teens, and at one point I saw a dozen spiders spawn in at once (2 clusters of roughly six each) with other spiders already up in different areas. Remember this is with a monster spawn cap of 1.
Waited until day, then moved away from spiders to allow despawn. Underground, between 1-3 were up at any given time during day. Disabled spiders, let despawn.
Enabled Cow (Creature) at 1/1, set time to day. A group of 4 cows promptly spawned nearby. I wandered a bit, letting new chunks load. At what seemed appropriate to normal vanilla animal spawn conditions according to the Minceraft wiki (about 1 chunk per 10 loaded), Cows spawned, but only in groups of exactly 4. These spawned regardless of the spawn cap, which at times would peak at about 11.
Conclusion: The spawn caps of 1 seemingly did not work, nor did the individual mob spawn size of 1/1 min/max.
I then wondered if perhaps MSC could not override something buried in Minecraft's code concerning minimum spawn caps. Checking the wiki (http://www.minecraft...net/wiki/Spawn), I set the caps to that of the mentioned single player caps.
Started by killing the cows in the immediate area, bringing the entities number back to 1 (me alone).
Enabled Bat at 1/1. Within a minute, I had about 16 bats up underground (comparable to cap). Number fluctuated slightly over the day, but remained mostly steady at cap. Disabled bat, moved away to allow despawn.
Enabled Squid 1/1. Two squid popped up immediately, with 3 more to follow in another pool a few moments later. Stood far enough away to allow despawn, and others spawned in new locations. Throughout, I had 5-6 squid up at any given time. Disabled squid, allowed despawn.
Enabled Spider 1/1, set to night. Entities shot up to about 40 in seconds, then topped off around 50. I moved towards the largest cluster to keep them spawned, and more spiders spawned in the distance to a total of around 60. Not hitting the cap, I decided to run back and forth between groupings of spiders to keep them active, and the total rose to 71 (a few shy of the cap, but very close). Stopped moving, and the number eventually hovered around 62.
Of note, a Spider Jockey spawned that night, allowing a Skeleton to "cheat the system" by piggybacking in via spider!
Disabled spider, set time to day (forgot to test spiders in day, sorry) and allowed them to despawn.
Enabled Cow 1/1 and began wandering around. Cows loaded as I explored new chunks at about the same rate as before, and again always in groups of 4. Entity total hit 23 at one point. I disabled cows and moved away until I had no extra entities.
Conclusion: The spawn caps and spawns were pretty comparable. Is it possible that Minecraft indeed has a minimum spawn cap that cannot be overridden by mods?
Finally, I decided to test one more thing... I've heard of other players using the MSCOverrides config to switch mobs to other categories (Creeper off monster list, and on creature list, for example). I installed Project Zulu to test out the finches, and changed MSCOverrides to place them as Ambient.
Making sure all mobs were disabled, I loaded world and set spawn caps to 1. I enabled Blue Finch at default weight, 1/2 min/max. Within moments I had a couple dozen blue finches flying around.
Enabled Bat, Green Finch, and Red Finch, all at default weights and 1/1 min max. In less than a minute, my entity list skyrocketed to over 500 and there were finches everywhere!!! My game became noticeably laggy, and I promptly Quit game and client before things got worse.
Conclusion: The ambient spawn cap... doesn't seem to work like the rest, that's for sure! What's really odd is the comparison of the bat's spawn and the finch spawn under the same settings.
Makes me wonder if the bat has an additonal spawn rule (like the ghast) which basically says 95% of the time, the spawn will fail. It's the only thing I can think of atm that keeps the bat population from shooting into the hundreds, especially while you're underground.
Hope you found this useful, or at least thought-provoking. Obviously, my experience is only a small sampling and cannot be seen as hard proof. Still, I found the results to be very interesting, though somewhat confusing.
As mentioned at the start of the post, feel free to add your observations, tests, and opinions.
MC doesn't check the spawn cap after every single mob spawn.
Not to offend, but I wasn't sure how accurate your statement was... however, looking at the MC wiki (http://www.minecraft....net/wiki/Spawn) I found this:
The cap is checked once at the beginning of each spawning cycle. If the number of living mobs in a category is over its cap, the entire spawning cycle for that category is skipped.
For each spawning cycle, one attempt is made to spawn a pack of mobs in each eligible chunk.
Which seems to back up your post. If there are multiple eligible chunks (which is often the case), the mobs spawned can definitely go over the cap in one spawn cycle. It was a fact I was unaware of, so thank you!
@MohawkyMagoo - I'll PM sirdave79 and Karganeth, but will be mentioning you when I do. I don't want them to think I'm spamming them with my thread.
The Meaning of Life, the Universe, and Everything.
Join Date:
2/18/2013
Posts:
53
Member Details
Good breakdown, individualized tests should shine some light on what's happening here. I have noticed much of the same in regards to spawn caps set to 1, which I have been utilizing for Ambient category mobs for a long time now. It seems like it spawns small clusters of creatures often 3 at a time close together, despite all ambient mobs being set to 1/1 for both min and max.
Currently I have most ambient "critters" from Mo'Creatures placed into that category with a flat 10/1/1 setting across all of them. It's giving good results when there's a fair variety of choose from in the category and the ambient cap fixed at 1. It doesn't honor that cap whatsoever, but given the information posted above regarding the cap checking routine it seems like it's doing one "pass" of spawning most or all the ambient creatures. Possibly per chunk? Definitely warrants further study.
From where I am sitting Davidee is ignoring the critical issues of using his mod with furthering irrelevancies like GUI operation/layout. For me MSC is not useable for a long term server where spawn control is desired (for biome control, relative population management). I dont think Davidee knows this, he may do but he doesnt seem to have acknowledged it. If he does (and I was him) I would feel like theres not a lot of point in MSC. Ive suggested the 1 change that I think could make a massive difference to MSC - seperate non-despawning spawner tick frequencies (a la mo creatures). I suspect my suggestion/idea has been ignored/lost/not noticed, maybe my fault for posting so much.
Actually, you suggestion being "ignored/lost/not noticed" is probably Davidee just being as polite as possible. Honestly, despawning is not the point of his mod, or any of the topics here. The focus of his mod, and all the topics on all the 3 threads I have been tracking on these issues, is getting the spawn rates correct for all the mobs from several mods to work together. If you cannot get the spawn rates correct, and monsters/creatures/ambiants all spawning correctly, isnt "despawning" kind of a mute point?
The Meaning of Life, the Universe, and Everything.
Join Date:
2/18/2013
Posts:
53
Member Details
I can second your setup, MohawkyMagoo, in regards to minimizing vanilla animals and trying to substitute modded creatures in their place. I mentioned over in the Highlands thread and probably elsewhere that I've basically done the following:
Cows -> Twilight Forest Wild Deer (forest biomes primarily which are plentiful in Highlands worlds)
Chickens -> Mo'Creatures Ducks, but downside is lack of raw chicken for cooking variety
Pigs -> Mo'Creatures boars, lower supply of porkchops but overall not terrible
There's really nothing to replace sheep creature wise, but delving abandoned mineshafts and collecting all the spiderwebs is an okay alternative in my opinion. We're not the most peaceful of servers, mob difficulty wise
I currently have all vanilla monsters spawning in most biomes, with the addition of DivineRPG Ender Spiders. I have removed the DivineRPG "deep cavern" spawned creatures for the moment because I'm kind of wondering if they end up spawning during the day well out of the way of any nearby players due to the lack of available spawns in daylight. DivineRPG mobs mostly spawn in any light level.
With this arrangement I've seen adequate spawning of hostiles, Wild Deer, Ducks and other modded mobs throughout acceptably long server uptime. Normally within a couple hours it's choking on the spawns, but after 8-10 hours I'm still seeing spawns perhaps at a slightly decreased rate overall at the worst. A step in the right direction, for sure.
This is along post and I haven't been as strudent an editor as I should have been, so some of what I'm replying with may not come out in any semblance of order. My thoughs here are almost entirely based on code, which Minecraft does through a class name by MCP as Spawner Animals. If someone programmically minded would like me to be more verbose in the code example I'd be more than happy to. Or download MCP and poke it for fun yourself. I have for the most part ommitted them as large parts of it are just looking at the top and end of the class and not obviously useful in demonstration.
I'd also like to applaud Gurrok for starting a much needed disucssion into how exactly spawning works. The wiki is really not a significat help in this manner.
Using Rei's Minimap in Creative Mode with all entities set to be shown on map, using surface area setting.
Some ignorance on my part. Does Rei's display a number? And does 'surface area setting' neglect those underground, which are important?
Otherwise excellent, fairly clear on test conditions. As Sirdave noted, 1 is an extreme value. Testing using it is a potentially useful data point as it is the minimum, but using a seperate data point (other than default which is the base) to see what changes occur would probably give a clearer picture. Two data points in genral is dangerous, making one the extereme is likely unwise.
In case anyone doesn't know. The Spawncap condition is:
MaxNumberOfCreature is the issue I was talking about in Davidee's thread as noted by Sirdave. I'll talk more about it later. Creature cap is the value you set in MSC as the spawn cap.
eligibleChunksForSpawning is 441 according to http://www.minecraftwiki.net/wiki/Chunks I have no reason to doubt it.
For 1 'MaxNumberOfCreature <= 1.722656' integer division will truncate the right result 'MaxNumberOfCreature <= 1'
I can at least confirm that in SpawnerAnimals under the loop goes:
for every EnumCreatureTYpe // Monster/Creature/Ambient
if( ... MaxNumberOfCreature <= creatureCap * eligibleChunksForSpawning / 256 ) //Then Checks if type should Spawn
for every eligibleChunk // Then Proceeds to spawn for each chunk, checking if location is valid, etc.
...
SpawnEntity
I feel like talking about creature type now. They are unique in that they have 2 spawn loops. One when chunks generate, which does not respect the spawnCap, and the same regular spawning algorithm the rest of types have which does have a spawn cap. It would be strange that they would spawn naturally, as the spawn cap would be reached. If on the other hand if you were and were observing new chunks with groups, that would not be suprising at all and is intended. For the sake of sanity, i refer to the spawning with chunk as chunk spawning, and the other as regular spawning.
On the min/max. The min/max probably do not function as you would expect. They only funciton in chunk spawning. Cue dramatic music. It is a random number between >= min and <= max as intended. It will try to place, up to 4 times for each creature is tries to spawn in that loop. Making it highly likely to spawn the random number assuming it can be reached.
In regular spawning a call to EntityLiving (the creature itself) getMaxSpawnedInChunk is done. Which unless overriden by the mod author default to 4. Such is the Case for cows. It will try to spawn a creature 4 times. Before people run off to Davidee, it should be noted this functions similar to mob drops in that external modders cannot effect them so there is nothing he can do.
Spawn Cap 1 Results:
I believe most of the cap related instances probably have to do with the issue of only checking at beggining of spawn cycle. Futher testing away from the extreme point of 1 would be interesting.
My thinking about the explanation of your cow event would be that you initiall loaded with cow disabled and explored a number of chunks, such that now chunk spawning occured. Once you enabled cows again, on a plains it is almost gauranteed all 4 would spawn, so as you explored and old cows moved out of spawn range new ones would spawn at the aforementioned 4. If you loaded a new world with cows enabled you would see a much larger number of them.
The normal results:
These seem normal for the most part.
You mention specifically cows spawning with chunks, which as I've pointed out above, happens independently of spawn cap.
Conclusion: The spawn caps and spawns were pretty comparable. Is it possible that Minecraft indeed has a minimum spawn cap that cannot be overridden by mods?
As you pretty much hit the nail on the head. Score one for data.
And now we get to Finches. First, birds are an exceptional case. Unlike regular mobs, once they spawn they move upwards, allowing other mobs to spawn. They do not decrease the available spawning surface area. They do eventually if the flight height is limited, but it takes a much large volume to fill.
But that is not the root of the problem, it is that they are not as you correctly infered (score two for data) counted to the spawn cap. This is not just limited to ambient, but the issue is more pronounced there because nothing else will fill caps. Bats rarely spawn as it is. So finch spawn indefinetly. This is an incredibly large problem that is non-trivial to fix. I've submitted a PR to forge so that the creature mods will be able to change their creatures. Providing a hook for external mob mods is difficult to do, and likely harder to get into forge. The way it is setup does not lend it to being trivial to alter without significant base edits. So don't push to hard on davidee, particularly when he's in the process of rebuilding what his mod can actually control.
Technically, my finch are compensated by a secondarySpawnRate which all my mobs have. What it does is provide a chance that the creature spawn attempt will fail outright. What this means is that when placed in the monster category, it naturally spawns a bit but a significantly lower rate, allowing actual mobs to fill up the world. Once the forge hook gets added this will be able to be tweaked more precisely.
To sirdaves point about them not being ambient, which is a good point. I would try to contact someone directly and ask if those classes extend EntityAmbientCreature. The language here can be kinda iffy, as creature or ambient can be mean several things. And don't forget that Mo'C using its own spawner, so I'm not sure it would mention categories in a vanilla way.
I'm not sure how likely the wiki is to mention this. And even worse language can be confusing, You can say creature, for example, to refer to any minecraft entity, to something that looks like a creature IRL, to an EntityAnimal, to a creature spawnlist. Ambient itself could refer to the spawnList ambient, or if it extends EntityAmbientCreature, or if its passive and doesn't drop anything.
Reminder that even if there is no spawn cap, if creatures despawn there is a limit that will be hit. Since ground creatures, unlike the air mentioned above, reduce the spawnable surface as they spawn, the effecttive spawn rate decreases as there are more of them, effectively creating a spawn cap.
From where I am sitting Davidee is ignoring the critical issues of using his mod with furthering irrelevancies like GUI operation/layout. For me MSC is not useable for a long term server where spawn control is desired (for biome control, relative population management).
MSC is a great concept but its struggling against Minecraft itself. It doesnt entirely work, but its better than nothing and letting the various mod mobs operate in a free for all, which they will inevietably lose out on to Mo Creatures which is actively designed to hog the spawn caps.
This is an important point I'd really like to drive home. It's not even so much that the vanilla system is terrible or unfixable. It is that it is not extensible in its current form in several key ways. Preventing some of the intermob balancing it is supposed to achieve. Some of the things, such as creature type, are even difficult to change with access to the creature. It can be change via forge, and I'm sure we can get hooks placed in. But it takes time and effort to properly setup these hooks as they are simply insert a get or set in key places. Then it takes time to gel and get others to agree to them. Every vanilla edit needs to be maintained. Forge guys don't tend to accept half developed hooks simply to bide time until someone gets around to finishing it.
As as FYI, Finchs do despawn. All my birds do. Or they should *shifty eyes*.
TLDR: For the record this post is over 9000. I'd be scared to.
Guys, that is A LOT of good data to begin with. This kind of thing will help a lot of people out. I have ready several post about these spawning issues. While I have not had the issue of spawns getting out of hand with 500+ creatures, that is probably because I stop my server at the first signs of an issue. (learned that after we lost a few days of Thaum researching).
I am going to paste some snippets from all the posts I have read. Maybe we can get myths and facts seperated here......
1.)
"A clean install of Mo'Creatures and Thaumcraft together = nothing but Brainy Zombies. Increasing the "MaxMobs" config by 10-20 gave breathing room for Mo'Creatures to make mobs without problems."
My finding... Seems to work on freash install, although I raised mine 120.... not sure how long that will last.
2.)
"In MoCreatures.cfg•Set every Freq=0 for all creatures"
My finding... Not necessary at all.
3.)
"You need to change these paramters to "despawnvanilla=false"," modifyvanillaspawns=false", and "usecustomspawner=false". Doing this in game via the GUI doesn't work."
My finding... I have confused myself with these. I have used different set-ups with these durring too many conditions to have an educated guess.
4.)"10/1/1 accross the board for MSC spawn settingd is a good standard for all mobs"
My findings... Again, I personally don't have enough data to give an opinion. If anyone has a good base to begin with, I would be happy to do some further testing with it.
I currently use a forge server with mo' creatures, Thaumcraft, Twilight forest, MSC and some others that shouldnt effect these tests.
I for one appreciate everyones efforts in finding the best set-up.
First off, thank you all for joining in on the discussion. The experience of seasoned players, as well as mob/spawn modders, goes a long way into understanding the inner workings.
@sirdave79 - I totally agree that my test methods for the minimum caps were incorrect, especially after being pointed to the tidbit of info about an undercapped area signals spawn chances in all eligible chunks. If I have time to do new tests, I'll make sure to take this into account.
Some ignorance on my part. Does Rei's display a number? And does 'surface area setting' neglect those underground, which are important?
Rei's does not display a number, so you have to rely on the entity entry in the debug screen. As for surface setting, you can indeed see mobs above/below. While testing Dungeon Mobs, for example, I let beholders spawn which all appeared about 50 blocks down from ground level (64). I dug through a mineshaft on the way down, and then found them in a much lower section of the mineshaft, meaning that they (as hinted at in their description) spawn below a certain level. Point being though, that Rei's picked them up from over 50m away below me.
On the min/max. The min/max probably do not function as you would expect. They only funciton in chunk spawning. Cue dramatic music. It is a random number between >= min and <= max as intended. It will try to place, up to 4 times for each creature is tries to spawn in that loop. Making it highly likely to spawn the random number assuming it can be reached.
In regular spawning a call to EntityLiving (the creature itself) getMaxSpawnedInChunk is done. Which unless overriden by the mod author default to 4. Such is the Case for cows. It will try to spawn a creature 4 times. Before people run off to Davidee, it should be noted this functions similar to mob drops in that external modders cannot effect them so there is nothing he can do.
This is quite eye opening, but I am confused. Are you talking about vanilla livestock (not an offical term I know) or all creatures (added from mods of course). If I understand correctly, vanilla min/max would be irrelevant to set, modded mobs would adhere to the setting... but only during chunk spawning (or all spawning)?
Spawn Cap 1 Results:
I believe most of the cap related instances probably have to do with the issue of only checking at beggining of spawn cycle. Futher testing away from the extreme point of 1 would be interesting.
My thinking about the explanation of your cow event would be that you initiall loaded with cow disabled and explored a number of chunks, such that now chunk spawning occured. Once you enabled cows again, on a plains it is almost gauranteed all 4 would spawn, so as you explored and old cows moved out of spawn range new ones would spawn at the aforementioned 4. If you loaded a new world with cows enabled you would see a much larger number of them.
Yes, what you describe here is spot-on.
And now we get to Finches. First, birds are an exceptional case. Unlike regular mobs, once they spawn they move upwards, allowing other mobs to spawn. They do not decrease the available spawning surface area. They do eventually if the flight height is limited, but it takes a much large volume to fill.
Something I didn't consider at all, and as you mentioned is partially the problem, but really not the root of it.
Providing a hook for external mob mods is difficult to do, and likely harder to get into forge. The way it is setup does not lend it to being trivial to alter without significant base edits. So don't push to hard on davidee, particularly when he's in the process of rebuilding what his mod can actually control.
Again, a huge piece of information. If mob types cannot be altered (without severe consequences in some cases), then Davidee should be notified right away. His MSCOverrides file allows for type changes... O_O
Technically, my finch are compensated by a secondarySpawnRate which all my mobs have. What it does is provide a chance that the creature spawn attempt will fail outright. What this means is that when placed in the monster category, it naturally spawns a bit but a significantly lower rate, allowing actual mobs to fill up the world. Once the forge hook gets added this will be able to be tweaked more precisely.
Excellent use of making things work with what you have available!
To sirdaves point about them not being ambient, which is a good point. I would try to contact someone directly and ask if those classes extend EntityAmbientCreature. The language here can be kinda iffy, as creature or ambient can be mean several things. And don't forget that Mo'C using its own spawner, so I'm not sure it would mention categories in a vanilla way.
I'm not sure how likely the wiki is to mention this. And even worse language can be confusing, You can say creature, for example, to refer to any minecraft entity, to something that looks like a creature IRL, to an EntityAnimal, to a creature spawnlist. Ambient itself could refer to the spawnList ambient, or if it extends EntityAmbientCreature, or if its passive and doesn't drop anything.
True. Sadly, this means a lot of miscommunication.
As for the finches on ambient...
Rollback Post to RevisionRollBack
The config files are your friends! Get to know them, and shape your world!
Rei's does not display a number, so you have to rely on the entity entry in the debug screen. As for surface setting, you can indeed see mobs above/below. While testing Dungeon Mobs, for example, I let beholders spawn which all appeared about 50 blocks down from ground level (64). I dug through a mineshaft on the way down, and then found them in a much lower section of the mineshaft, meaning that they (as hinted at in their description) spawn below a certain level. Point being though, that Rei's picked them up from over 50m away below me.
This is quite eye opening, but I am confused. Are you talking about vanilla livestock (not an offical term I know) or all creatures (added from mods of course). If I understand correctly, vanilla min/max would be irrelevant to set, modded mobs would adhere to the setting... but only during chunk spawning (or all spawning)?
No, I'm not talking about the creature's actual type, I'm talking about any entity that is placed in the creature type spawnList (4 types: monsters, creatures, ambient, water). The Min/Max only matter for creatures and only during Chunk spawning. They are typical set by modders when they register the entity with the biome to spawn. They can be changed later easily using MSC. The rest of the time they are useless.
Again, a huge piece of information. If mob types cannot be altered (without severe consequences in some cases), then Davidee should be notified right away. His MSCOverrides file allows for type changes... O_O
The consequences are not neccesarily severe though. Suboptimal Usually. The Finch scenario you performed is a worst-case scenario. But if you had plenty of other mobs that were registered properly in the biome as ambient, you could safely change finch and not notice disatrous results.
Not to mention that we wouldn't nececsarily want MSC to lose the feature as eventually, if/when I get my hook accepted into forge, mob modders will be able to change the creature type (which they could potentially expose via config) but we still want MSC to do the spawnLists themselves.
Excellent use of making things work with what you have available!
Yes, originally it was because I had animals spawning as monsters, as I figured despawning might be prefered. But I noticed they showed up way to often so made them spawn more rare. I had data but didn't at the time realise the problem.
Nowadays most of them at at 100% as they are registered as animals.
Gurrok asked me to chime in, so here's what I know in summary:
There are two spawning systems in Minecraft. The first, which I have not analyzed in depth, spawns animals during worldgen for each chunk - it's supposed to be your food supply. This system is I think the main culprit for people not being happy with the results of Mob Spawn Controls, I suspect it may not follow the same rules as the other spawner, or at least use them in a very liberal way.
The second runs at regular interval during the game and is the one that seemingly has always been around (the "Custom Spawner" in MoCreatures is basically this code isolated from the rest). It follows the rules that you change in Mob Spawn Controls. I took the time to decompile and understand what it does, see this post.
When I click the link, I get asked to login again. When I do so, I am returned to this thread. I think link is inaccurate...
Rollback Post to RevisionRollBack
The config files are your friends! Get to know them, and shape your world!
Made a post in my thread about the spawn hook that was needed into Forge. Reposting relevent details here as they seems relevent.
The hook I wanted to get into forge that I mentioned in the Mob Spawn Discussion http://www.minecraft...d/page__st__860 was accepted into forge (~575) so I'll be implementing that to all my creatures before I release. All my creatures will belong to their appropriate spawn caps in 1.5. I hope this makes a noticeable difference. I don't know if the first release will have config options.
The hooks allows a few additional scenarios than before:
* A creature can change the creature type cap it belongs to based on its state (tamed, health, number of players nearby, other arbitrary parameter)
* A creature can belong to any number of creature type caps, as well as none
* The 'type' that it belongs to can be different depending on if its being counted for spawning purposes or if its being called to check creature type
Examples:
* A Tamed animal could be made not to count as a 'Creture' if its tamed, but if Called to check if hostile against Creatures could return that it is a Creature
* A Evil Corrupted Tree Ent could count as a 'Monster' but be purified and then count as a 'Creature'
* A Boss Monster does not cound as 'Monster' for spawning but counts as 'Monster' for hostile check.
Some of those, obviously, depend on others also using it to determine creature type, and using Creture type for those purposes. Most of the creatures will simply be a config option for a single type. Technically, the method can be different for every entity. I'll probably include an NBT for my creatures so if spawned from a GuiSpawner you could have them not count against spawning cap.
Sidenote: If it was an possible, would you prefer that all tamed animals don't count towards the spawn cap, or do you feel that would be bad for world balance?
The Meaning of Life, the Universe, and Everything.
Join Date:
2/18/2013
Posts:
53
Member Details
Some observations from the past couple nights:
The biggest thing we've noticed is that hostile mobs spawn in clusters, almost always 3 or 4 mobs in size but varied in what spawns. I've seen clusters with 2 endermen, 2 skeletons... 3 zombies, 1 skeleton, 4 of any of them, any sort of combination. Seems to behave the same regardless of the min/max on the mob spawn settings themselves, so I imagine it's related to the spawner's core as Crudedragos discussed previously.
Still trying to find where monsters are hitting a spawning bottleneck and where exactly the mobs are spawning to fill up slots. I think some of the DivineRPG "deep cave" mobs like the Caveclops, Eye, etc may have had a negative impact on my previous world judging by their removal in this new config giving us a couple more minecraft days of acceptable spawn rates. Since server reboots or running the ForgeEssentials /butcher command temporarily fix the lack of spawns there's something throwing a wrench in the gears somewhere.
At this point I'm actually fairly satisfied with the regular animal spawns and may reintroduce some limited vanilla spawns going forward. It's the hostiles I need to fix now, since I largely started with default spawn settings and scrapped my previous config altogether.
So i've been trying to get Witches & More running and decided, pre 1.5 to strip everything down to basics and rebuild a fresh 1.4.7 for storage in MultiMC. Without MSC running, and with Custom Mob Spawner on, I then saw the W&M creatures and mobs were putting up a good show spawning against Mo Creatures and wondered why.
When I loaded MSC and let the mods installed generate the MSC default spawner without any interference, almost every W&M entry looked like this:
*snip*
In every biome where its mobs and creatures appeared there are multiple entries of some of the same mobs. This is a short example. Does this actually have an effect?
Firstly, I applaud you for even attempting to get these mods to work together. I currently consider both Mo'C and W&M "troublesome" mods for various reasons, and have decidedly stopped using them until their modders can implement fixes. You're a braver man than I.
As for your findings, I'm not sure what to make of this. I am unaware of any mention of multiple entries per mob in MSC before, which makes me think that is perhaps a bug in MSC itself... a bug that may actually be a useful feature, however.
Why only W&M would have multiple entires also confuses me. Again, I would think this a bug either with W&M or MSC when the list generated, but it looks like W&M has a varied number of entries per mob (EnderTroll is in there 8 times if I counted right!). I would think that a bug in list generation would've yielded the same number of extra entries per mob.
I can only imagine two possibilities atm - either W&M is using a previously unheard-of feature for mob spawning (multiple entries per mob to increase spawn chances), or some anomaly occurred that brought about interesting results. Considering all the posts across various threads about Mo'C hogging the spawns, it wouldn't surprise me if other mob mod authors were trying to figure out a workaround.
To answer your question though, I have no clue if it actually works. Might have to test it for myself soon!
Rollback Post to RevisionRollBack
The config files are your friends! Get to know them, and shape your world!
I can help you with a pretty major issue. Zulu does not appear to correctly register anything that it spawns with forge. An easy way to test this is to install forge essentials, spawn a bunch of zulu mobs, and use the /butcher all command. They are unaffected. I have to assume that this means they are not correctly acccounted for with spawning/despawning and caps.
Rollback Post to RevisionRollBack
Check out my Mod Spotlights and Let's Play series! - https://www.youtube....?feature=vmdshb
Taking requests - PM me if you want me to spotlight your mod.
So i've been trying to get Witches & More running and decided, pre 1.5 to strip everything down to basics and rebuild a fresh 1.4.7 for storage in MultiMC. Without MSC running, and with Custom Mob Spawner on, I then saw the W&M creatures and mobs were putting up a good show spawning against Mo Creatures and wondered why.
When I loaded MSC and let the mods installed generate the MSC default spawner without any interference, almost every W&M entry looked like this:
On the technical side, the biomeSpawnList is a List so there is nothing inherent stopping a creature from appearing multiple times in it. Since it is a weighted chance, its probability of showing up is the sum of the weighted chances: there shoudl be no tangible advantage to placing it in multiple vs increaseing its weighted Chance. The 'official' forge hook to register a spawn (EntityRegistry.addSpawn) does not allow for multiple entries: it will replace the old wight/min/max with the newly provided ones. But the actual spawnlist in the Biomes are public, so it would not be any extra work to bypass it if so desired.
Also this might be useful, ive not tried it yet. Might be good even just as a tool if it doesnt work on a server. Shows mobs spawned (not sure abotu status of mod added mobs)
I could be mistaken, but I though that showed the creature and weights of things that could spawn.
As for Mo'Creatures Types. I put a check in some code to go through all entities on ServerStart and check what type they are. Did it for Atmos too. Obviously, this is on 1.4.7. Note this is all entities, not just creature entities.
Evaluated according to the vanilla count condition:
If the Creature class can Cast to IMob.class it is a Monster
If the Creature class can Cast to EntityAnimal.class it is a Creature
If the Creature class can Cast to EntityAmbientCreature.class it is a Ambient
If the Creature class can Cast to EntityWaterMob.class it is a WaterCreature
I can help you with a pretty major issue. Zulu does not appear to correctly register anything that it spawns with forge. An easy way to test this is to install forge essentials, spawn a bunch of zulu mobs, and use the /butcher all command. They are unaffected. I have to assume that this means they are not correctly acccounted for with spawning/despawning and caps.
Hey Crudedragos, I didn't intend for that post to be as snarky as it sounds in retrospect. I know everyone wants this stuff to work well together (except maybe zhark). I have been enormously frustrated and have spent upwards of 50 hours just trying to get a lush, full world of animals and mobs though. It seems that there are several major issues that seriously impact this goal:
-Are all mobs registered the same way? As you said before 1.5 there wasn't a specific hook which means that who knows how the individual spawners and vanilla sees what is being spawned
-Vanilla despawning. This is an enormous issue with Zharks spawner and probably with the other mods as well. Vanilla mobs eventually take over the universe
-Spawn caps. What counts, what doesnt? How often is it checked? How often are mobs attempted to spawn? How accurate are spawn weights? Are weights adjusted for existing spawns?
-Back to registration, where do villagers fall into this? How about Tameables? How about things that are tamed already? How does this impact spawn caps? What about despawning of hostiles that you don't WANT to despawn?
-Do custom spawners allow for mod specific spawn conditions ie: depth, type of block to spawn on, light level, existing conditions, how about weather, etc.
-SMP servers, should spawn caps automagically adjust based on total active chunks? How do chunk loaders and fake players impact spawns?
Ideally there would be a custom mob spawner build into forge that everyone who wanted to add mobs would have to follow the API for, without that, I honestly think a good solution to a lush world with multiple creature mobs is very far away.
e; specifically to answer your question, FE adds a command similar to the old /killall from bukkit. It scans any radius from the activating player (including the entire dimension) and will despawn either cretures, monsters, ambients, golems, or all (there may be another class or two). My specific point about the zulu version I am using is that /butcher world all (which kills everything in a dimension) completely ignored all zulu spawns. This leads me to believe that the way spawners interact with those creatures is similarly off.
Check out my Mod Spotlights and Let's Play series! - https://www.youtube....?feature=vmdshb
Taking requests - PM me if you want me to spotlight your mod.
Rhaz sounds like you rmaking good progress with your spawning. Are youusing REIs minimap with entityrader turned on ? I cant remember if ive seen you posting mentioning it or not. Might help ID whats spawned and stuff.
Yes, using Rei's with entity radar to check stuff out. I should also note that ambients and animals spawn in clusters the same way as monsters but my only gripe is with monsters showing up in groups It is worth noting the pattern though given the info from Crudedragos on how the spawner code just happens to make four spawn pass attempts and that's almost always the size of the groups of any mob. I guess add "make spawns spread out a bit" to my list of things to fix in the future.
Progress, but still haven't found what's bottlenecking things just yet.
Hey Crudedragos, I didn't intend for that post to be as snarky as it sounds in retrospect. I know everyone wants this stuff to work well together (except maybe zhark). I have been enormously frustrated and have spent upwards of 50 hours just trying to get a lush, full world of animals and mobs though. It seems that there are several major issues that seriously impact this goal:
The fault is mine, I was overly defensive. You were merely providing useful and relevent information to a problem that has plaqued many.
-Are all mobs registered the same way? As you said before 1.5 there wasn't a specific hook which means that who knows how the individual spawners and vanilla sees what is being spawned
The count check is based off the Class of the entity (or the parent class). Like I said its not a registration. Everything has a Class. I'm not sure I understand the 'who knows' statement? Are you trying to claim there is some unknowable black box vodoo going on? If you're talking about Custom mob Spawner, I can't speak for how it spawns things. My observations are from the forge source, unless you make edit base classes or make a coremod there are thins that a modder cannot do. There is only one spawn system in Minecraft: Not one for vanilla mobs and another for mod mobs.
The absence of a specific hook claim would more strongly suggest the inability to change things, not that anyone can do anything they want. If they could do anything they want, the hook wouldn't be neccesary.
-Spawn caps. What counts, what doesnt? How often is it checked? How often are mobs attempted to spawn? How accurate are spawn weights? Are weights adjusted for existing spawns?
Long Albeit relevent: http://www.minecraft.../#entry21382216
Their are 4 creature types: Monster, Ambient, Creature, and watermob. Their are 4 spawn lists: Monster, Ambient, Creature, and watermob. There is nothing stopping/warning a modder form putting any creature Type in any spawnlist. Each spawnlist has its own rate. See the long post about Creature having two spawn cycles: the 'normal' one and one that happens on chunk generation. Note the chunk generation doesn't care about spawn caps.
The Cap is checked at the beggining of a creatureList spawn cycle before it starts spawning across all eligible chunks. Mobs are attempted to spawn 4 times. (Agains see long post, creature chunk is more often).
The actual rate it's checked I don't know off hand. I know Creature spawn less often. Weights are relative to the number of spawns.
1) Weights of all cratures in the spawnList are summed.
2) Then a random number is generate from 0 to sum total.
3)The list is then iterated and for each entry the random weight subtract its value. Once it reaches 0 that is the selected item.
-Back to registration, where do villagers fall into this? How about Tameables? How about things that are tamed already? How does this impact spawn caps? What about despawning of hostiles that you don't WANT to despawn?
Villager does not belong to any spawncap. If I'm not mistaken its manually spanwed by the village structure generator.
The act of Taming doesn't change the creature class. The default check is against the Class of the Entity. Wolves, for example, extend EntityAnimal.class and are therefore counted by creatures by the spawning system. Even if register them to spawn in the Monster Spawnlist.
Technically, EntityWolf extends EntityTameable extends EntityAnimal...(hence why I call is a ClassHierarchy check).
-Do custom spawners allow for mod specific spawn conditions ie: depth, type of block to spawn on, light level, existing conditions, how about weather, etc.
What do you mean Custom Spawners? For the regular spawn cycle a method canGetSpawnHere gets called from the creature which can specify if the location determined by the spawning alogorithm is valid. This can include things such as depth, block, light level, etc. Note that it can't choose where to evealuate, so a more restrictive condition (i.e. height < 20) makes the creature less liekly to spawn than another mob, given equal weights.
-SMP servers, should spawn caps automagically adjust based on total active chunks? How do chunk loaders and fake players impact spawns?
I don't know if they should, but Spawn caps are proportional to number of active chunks.
From Long Albeit relevent: http://www.minecraft.../#entry21382216
Ideally there would be a custom mob spawner build into forge that everyone who wanted to add mobs would have to follow the API for, without that, I honestly think a good solution to a lush world with multiple creature mobs is very far away.
Why wouldn't we just use the vanilla minecraft entity spawning system? You can't arbitrary remove the ability to spawn an entity in the world. How do you think slimes split into several smaller pieces? Being able to spawn things, such as clicking the ground with an item and placing a block or summoning an ally does not constitute a spawning system. When a bow shoots an arrow? Spawning an entity.
You can't really force people to do anything either. Mo'Creatures CMS does things differently than the current system (which, as far as I know is the only other spawner?), should it be forbidden and be forced to use some other arbitrary system? Your offhand comment about DZ not wanting not wanting them to work well together seems misplaced as well. He has worked to elimate incompatability between those using CMS and those using the vanilla system. He simply has a different vision of how the spawning system should work (which is to my uderstanding identical to how it used to be before certain creature spawning changes were implemented) that he has put a lot of work into. This is not something we should try to shut down just because it might cause incompatabilities.
I possibly focused a little too muich on the "have to follow" aspect of that sentence. That said, you asked a lot of question about how the spawning system works (good questions that you should know if you want to muck with spawning) but if you don't know how it works, how can you say it can't work? And if even, what needs to change?
e; specifically to answer your question, FE adds a command similar to the old /killall from bukkit. It scans any radius from the activating player (including the entire dimension) and will despawn either cretures, monsters, ambients, golems, or all (there may be another class or two). My specific point about the zulu version I am using is that /butcher world all (which kills everything in a dimension) completely ignored all zulu spawns. This leads me to believe that the way spawners interact with those creatures is similarly off.
From your context that's what I assumed, thank you. Where were you weeks ago
It is my hope that through this, we can gain a better understanding of how the process works, and in doing so use that information to improve upon features that rely upon the process, namely that of mob spawning mods and mob spawn list configurations.
I felt that with our current findings, it would be useful to post the most important items here in the OP.
One problem many players experience with unexpected spawn results occurs when despawning and non-despawning mobs share the same spawn list. There are several options to mitigate or sidestep this completely.
Below is a list of mobs that inherently do not despawn. Please send me a PM or reply in this thread to add/edit suggestions to this list.
Note: Mobs marked in yellow are unconfirmed - please notify me if you can confirm this mob's despawn status.
- Vanilla Minecraft -
- Atmosmobs -
- Primitive Mobs -
- Witches & More -
Global Entity ID Conflicts
Recently, it has come to my attention that one possible cause of spawn issues could be Entity ID conflicts. Vanilla MC can have up to 255 entities. This number is way more than vanilla uses, but once you start adding mods the list fills up pretty fast.
To remedy this, Forge has a feature for mod authors allowing them to have their own list of up to 255 entities per mod that will be safe from entity ID conflicts. Basically, the author references their modID then the entity ID (for example 'PrimitiveMobs.Summoner' as opposed to just 'Summoner').
Below is a list of mods (likely incomplete - please notify me of missing mods/corrections) that currently use Global EntityIDs rather than mod-specific EntityIDs.
Note: Mods highlighted in green come with configurable global Entity IDs.
Ars Magica
Atum: Journey into the Sands
Biomes O' Plenty
Dimensional Doors
DivineRPG (mainly its original mobs, newer ones use mod-specific IDs)
Dungeon Mobs
Elemental Creepers
Gravestone mod
Millenaire
Mo' Creatures (currently transitioning to mod-specific, see their thread for details)
Mystcraft
Thaumcraft
Arkenor has some great information on Global Entity IDs, including Thaumcraft and Mystcraft conflicts, at the following posts:
http://www.minecraft...0#entry22079250
http://www.minecraft...0#entry22079338
MapleBacon has started a thread to help those installing multiple mods - what to keep in mind, watch out for, etc. which you can find here.
MapleBacon has also been kind enough to make a banner for the thread! Thank you so much!
...and now, the remainder of the original post from March 10, 2013.
With that, here are my findings for today. There were a number of surprises.
After waiting a moment for the world to build and load, I spawn in the plains with no entities other than myself in the area (as predicted). Note that at times, I found villages, and made sure to move away from them before allowing new mobs to spawn. In retrospect, I probably should've turned village generation off.
Using MSC, I start by setting all Spawn Caps to 1. I then set the Bat (Ambient) to a min/max of 1/1 and enabled it. After about a minute, I had around 6 bats spawned in underground caves.
Disabled Bats, then walked away from them to let them despawn, which they prompty did.
Enabled Squid (Water creature) at 1/1. In the various small pools generated above and below ground, I had between 1-5 up at any given time. Disabled, and let them despawn.
Enabled Spider (Monster) at 1/1, set time to night. Immediately, the entity number climbed to the high teens, and at one point I saw a dozen spiders spawn in at once (2 clusters of roughly six each) with other spiders already up in different areas. Remember this is with a monster spawn cap of 1.
Waited until day, then moved away from spiders to allow despawn. Underground, between 1-3 were up at any given time during day. Disabled spiders, let despawn.
Enabled Cow (Creature) at 1/1, set time to day. A group of 4 cows promptly spawned nearby. I wandered a bit, letting new chunks load. At what seemed appropriate to normal vanilla animal spawn conditions according to the Minceraft wiki (about 1 chunk per 10 loaded), Cows spawned, but only in groups of exactly 4. These spawned regardless of the spawn cap, which at times would peak at about 11.
Conclusion: The spawn caps of 1 seemingly did not work, nor did the individual mob spawn size of 1/1 min/max.
I then wondered if perhaps MSC could not override something buried in Minecraft's code concerning minimum spawn caps. Checking the wiki (http://www.minecraft...net/wiki/Spawn), I set the caps to that of the mentioned single player caps.
Started by killing the cows in the immediate area, bringing the entities number back to 1 (me alone).
Enabled Bat at 1/1. Within a minute, I had about 16 bats up underground (comparable to cap). Number fluctuated slightly over the day, but remained mostly steady at cap. Disabled bat, moved away to allow despawn.
Enabled Squid 1/1. Two squid popped up immediately, with 3 more to follow in another pool a few moments later. Stood far enough away to allow despawn, and others spawned in new locations. Throughout, I had 5-6 squid up at any given time. Disabled squid, allowed despawn.
Enabled Spider 1/1, set to night. Entities shot up to about 40 in seconds, then topped off around 50. I moved towards the largest cluster to keep them spawned, and more spiders spawned in the distance to a total of around 60. Not hitting the cap, I decided to run back and forth between groupings of spiders to keep them active, and the total rose to 71 (a few shy of the cap, but very close). Stopped moving, and the number eventually hovered around 62.
Of note, a Spider Jockey spawned that night, allowing a Skeleton to "cheat the system" by piggybacking in via spider!
Disabled spider, set time to day (forgot to test spiders in day, sorry) and allowed them to despawn.
Enabled Cow 1/1 and began wandering around. Cows loaded as I explored new chunks at about the same rate as before, and again always in groups of 4. Entity total hit 23 at one point. I disabled cows and moved away until I had no extra entities.
Conclusion: The spawn caps and spawns were pretty comparable. Is it possible that Minecraft indeed has a minimum spawn cap that cannot be overridden by mods?
Finally, I decided to test one more thing... I've heard of other players using the MSCOverrides config to switch mobs to other categories (Creeper off monster list, and on creature list, for example). I installed Project Zulu to test out the finches, and changed MSCOverrides to place them as Ambient.
Making sure all mobs were disabled, I loaded world and set spawn caps to 1. I enabled Blue Finch at default weight, 1/2 min/max. Within moments I had a couple dozen blue finches flying around.
Enabled Bat, Green Finch, and Red Finch, all at default weights and 1/1 min max. In less than a minute, my entity list skyrocketed to over 500 and there were finches everywhere!!! My game became noticeably laggy, and I promptly Quit game and client before things got worse.
Conclusion: The ambient spawn cap... doesn't seem to work like the rest, that's for sure! What's really odd is the comparison of the bat's spawn and the finch spawn under the same settings.
Makes me wonder if the bat has an additonal spawn rule (like the ghast) which basically says 95% of the time, the spawn will fail. It's the only thing I can think of atm that keeps the bat population from shooting into the hundreds, especially while you're underground.
Hope you found this useful, or at least thought-provoking. Obviously, my experience is only a small sampling and cannot be seen as hard proof. Still, I found the results to be very interesting, though somewhat confusing.
As mentioned at the start of the post, feel free to add your observations, tests, and opinions.
Not to offend, but I wasn't sure how accurate your statement was... however, looking at the MC wiki (http://www.minecraft....net/wiki/Spawn) I found this:
Which seems to back up your post. If there are multiple eligible chunks (which is often the case), the mobs spawned can definitely go over the cap in one spawn cycle. It was a fact I was unaware of, so thank you!
@MohawkyMagoo - I'll PM sirdave79 and Karganeth, but will be mentioning you when I do. I don't want them to think I'm spamming them with my thread.
Currently I have most ambient "critters" from Mo'Creatures placed into that category with a flat 10/1/1 setting across all of them. It's giving good results when there's a fair variety of choose from in the category and the ambient cap fixed at 1. It doesn't honor that cap whatsoever, but given the information posted above regarding the cap checking routine it seems like it's doing one "pass" of spawning most or all the ambient creatures. Possibly per chunk? Definitely warrants further study.
Actually, you suggestion being "ignored/lost/not noticed" is probably Davidee just being as polite as possible. Honestly, despawning is not the point of his mod, or any of the topics here. The focus of his mod, and all the topics on all the 3 threads I have been tracking on these issues, is getting the spawn rates correct for all the mobs from several mods to work together. If you cannot get the spawn rates correct, and monsters/creatures/ambiants all spawning correctly, isnt "despawning" kind of a mute point?
Cows -> Twilight Forest Wild Deer (forest biomes primarily which are plentiful in Highlands worlds)
Chickens -> Mo'Creatures Ducks, but downside is lack of raw chicken for cooking variety
Pigs -> Mo'Creatures boars, lower supply of porkchops but overall not terrible
There's really nothing to replace sheep creature wise, but delving abandoned mineshafts and collecting all the spiderwebs is an okay alternative in my opinion. We're not the most peaceful of servers, mob difficulty wise
I currently have all vanilla monsters spawning in most biomes, with the addition of DivineRPG Ender Spiders. I have removed the DivineRPG "deep cavern" spawned creatures for the moment because I'm kind of wondering if they end up spawning during the day well out of the way of any nearby players due to the lack of available spawns in daylight. DivineRPG mobs mostly spawn in any light level.
With this arrangement I've seen adequate spawning of hostiles, Wild Deer, Ducks and other modded mobs throughout acceptably long server uptime. Normally within a couple hours it's choking on the spawns, but after 8-10 hours I'm still seeing spawns perhaps at a slightly decreased rate overall at the worst. A step in the right direction, for sure.
I'd also like to applaud Gurrok for starting a much needed disucssion into how exactly spawning works. The wiki is really not a significat help in this manner.
Some ignorance on my part. Does Rei's display a number? And does 'surface area setting' neglect those underground, which are important?
Otherwise excellent, fairly clear on test conditions. As Sirdave noted, 1 is an extreme value. Testing using it is a potentially useful data point as it is the minimum, but using a seperate data point (other than default which is the base) to see what changes occur would probably give a clearer picture. Two data points in genral is dangerous, making one the extereme is likely unwise.
In case anyone doesn't know. The Spawncap condition is:
MaxNumberOfCreature is the issue I was talking about in Davidee's thread as noted by Sirdave. I'll talk more about it later. Creature cap is the value you set in MSC as the spawn cap.
eligibleChunksForSpawning is 441 according to http://www.minecraftwiki.net/wiki/Chunks I have no reason to doubt it.
For 1 'MaxNumberOfCreature <= 1.722656' integer division will truncate the right result 'MaxNumberOfCreature <= 1'
I can at least confirm that in SpawnerAnimals under the loop goes:
for every EnumCreatureTYpe // Monster/Creature/Ambient
if( ... MaxNumberOfCreature <= creatureCap * eligibleChunksForSpawning / 256 ) //Then Checks if type should Spawn
for every eligibleChunk // Then Proceeds to spawn for each chunk, checking if location is valid, etc.
...
SpawnEntity
I feel like talking about creature type now. They are unique in that they have 2 spawn loops. One when chunks generate, which does not respect the spawnCap, and the same regular spawning algorithm the rest of types have which does have a spawn cap. It would be strange that they would spawn naturally, as the spawn cap would be reached. If on the other hand if you were and were observing new chunks with groups, that would not be suprising at all and is intended. For the sake of sanity, i refer to the spawning with chunk as chunk spawning, and the other as regular spawning.
On the min/max. The min/max probably do not function as you would expect. They only funciton in chunk spawning. Cue dramatic music. It is a random number between >= min and <= max as intended. It will try to place, up to 4 times for each creature is tries to spawn in that loop. Making it highly likely to spawn the random number assuming it can be reached.
In regular spawning a call to EntityLiving (the creature itself) getMaxSpawnedInChunk is done. Which unless overriden by the mod author default to 4. Such is the Case for cows. It will try to spawn a creature 4 times. Before people run off to Davidee, it should be noted this functions similar to mob drops in that external modders cannot effect them so there is nothing he can do.
Spawn Cap 1 Results:
I believe most of the cap related instances probably have to do with the issue of only checking at beggining of spawn cycle. Futher testing away from the extreme point of 1 would be interesting.
My thinking about the explanation of your cow event would be that you initiall loaded with cow disabled and explored a number of chunks, such that now chunk spawning occured. Once you enabled cows again, on a plains it is almost gauranteed all 4 would spawn, so as you explored and old cows moved out of spawn range new ones would spawn at the aforementioned 4. If you loaded a new world with cows enabled you would see a much larger number of them.
The normal results:
These seem normal for the most part.
You mention specifically cows spawning with chunks, which as I've pointed out above, happens independently of spawn cap.
Props on this by the way
As you pretty much hit the nail on the head. Score one for data.
And now we get to Finches. First, birds are an exceptional case. Unlike regular mobs, once they spawn they move upwards, allowing other mobs to spawn. They do not decrease the available spawning surface area. They do eventually if the flight height is limited, but it takes a much large volume to fill.
But that is not the root of the problem, it is that they are not as you correctly infered (score two for data) counted to the spawn cap. This is not just limited to ambient, but the issue is more pronounced there because nothing else will fill caps. Bats rarely spawn as it is. So finch spawn indefinetly. This is an incredibly large problem that is non-trivial to fix. I've submitted a PR to forge so that the creature mods will be able to change their creatures. Providing a hook for external mob mods is difficult to do, and likely harder to get into forge. The way it is setup does not lend it to being trivial to alter without significant base edits. So don't push to hard on davidee, particularly when he's in the process of rebuilding what his mod can actually control.
Technically, my finch are compensated by a secondarySpawnRate which all my mobs have. What it does is provide a chance that the creature spawn attempt will fail outright. What this means is that when placed in the monster category, it naturally spawns a bit but a significantly lower rate, allowing actual mobs to fill up the world. Once the forge hook gets added this will be able to be tweaked more precisely.
To sirdaves point about them not being ambient, which is a good point. I would try to contact someone directly and ask if those classes extend EntityAmbientCreature. The language here can be kinda iffy, as creature or ambient can be mean several things. And don't forget that Mo'C using its own spawner, so I'm not sure it would mention categories in a vanilla way.
I'm not sure how likely the wiki is to mention this. And even worse language can be confusing, You can say creature, for example, to refer to any minecraft entity, to something that looks like a creature IRL, to an EntityAnimal, to a creature spawnlist. Ambient itself could refer to the spawnList ambient, or if it extends EntityAmbientCreature, or if its passive and doesn't drop anything.
Reminder that even if there is no spawn cap, if creatures despawn there is a limit that will be hit. Since ground creatures, unlike the air mentioned above, reduce the spawnable surface as they spawn, the effecttive spawn rate decreases as there are more of them, effectively creating a spawn cap.
This is an important point I'd really like to drive home. It's not even so much that the vanilla system is terrible or unfixable. It is that it is not extensible in its current form in several key ways. Preventing some of the intermob balancing it is supposed to achieve. Some of the things, such as creature type, are even difficult to change with access to the creature. It can be change via forge, and I'm sure we can get hooks placed in. But it takes time and effort to properly setup these hooks as they are simply insert a get or set in key places. Then it takes time to gel and get others to agree to them. Every vanilla edit needs to be maintained. Forge guys don't tend to accept half developed hooks simply to bide time until someone gets around to finishing it.
As as FYI, Finchs do despawn. All my birds do. Or they should *shifty eyes*.
TLDR: For the record this post is over 9000. I'd be scared to.
I am going to paste some snippets from all the posts I have read. Maybe we can get myths and facts seperated here......
1.)
"A clean install of Mo'Creatures and Thaumcraft together = nothing but Brainy Zombies. Increasing the "MaxMobs" config by 10-20 gave breathing room for Mo'Creatures to make mobs without problems."
My finding... Seems to work on freash install, although I raised mine 120.... not sure how long that will last.
2.)
"In MoCreatures.cfg•Set every Freq=0 for all creatures"
My finding... Not necessary at all.
3.)
"You need to change these paramters to "despawnvanilla=false"," modifyvanillaspawns=false", and "usecustomspawner=false". Doing this in game via the GUI doesn't work."
My finding... I have confused myself with these. I have used different set-ups with these durring too many conditions to have an educated guess.
4.)"10/1/1 accross the board for MSC spawn settingd is a good standard for all mobs"
My findings... Again, I personally don't have enough data to give an opinion. If anyone has a good base to begin with, I would be happy to do some further testing with it.
I currently use a forge server with mo' creatures, Thaumcraft, Twilight forest, MSC and some others that shouldnt effect these tests.
I for one appreciate everyones efforts in finding the best set-up.
@sirdave79 - I totally agree that my test methods for the minimum caps were incorrect, especially after being pointed to the tidbit of info about an undercapped area signals spawn chances in all eligible chunks. If I have time to do new tests, I'll make sure to take this into account.
Rei's does not display a number, so you have to rely on the entity entry in the debug screen. As for surface setting, you can indeed see mobs above/below. While testing Dungeon Mobs, for example, I let beholders spawn which all appeared about 50 blocks down from ground level (64). I dug through a mineshaft on the way down, and then found them in a much lower section of the mineshaft, meaning that they (as hinted at in their description) spawn below a certain level. Point being though, that Rei's picked them up from over 50m away below me.
This is quite eye opening, but I am confused. Are you talking about vanilla livestock (not an offical term I know) or all creatures (added from mods of course). If I understand correctly, vanilla min/max would be irrelevant to set, modded mobs would adhere to the setting... but only during chunk spawning (or all spawning)?
Yes, what you describe here is spot-on.
Something I didn't consider at all, and as you mentioned is partially the problem, but really not the root of it.
Again, a huge piece of information. If mob types cannot be altered (without severe consequences in some cases), then Davidee should be notified right away. His MSCOverrides file allows for type changes... O_O
Excellent use of making things work with what you have available!
True. Sadly, this means a lot of miscommunication.
As for the finches on ambient...
Good to know, thank you.
No, I'm not talking about the creature's actual type, I'm talking about any entity that is placed in the creature type spawnList (4 types: monsters, creatures, ambient, water). The Min/Max only matter for creatures and only during Chunk spawning. They are typical set by modders when they register the entity with the biome to spawn. They can be changed later easily using MSC. The rest of the time they are useless.
Yea, I only brought it up as its the difference between "there are a few too many creatures" and "my game lagging so bad I can't open the menu".
The first thing I did was point it out to him, more to make sure I was reading it right. http://www.minecraft...0#entry21349810
Then he sadly confirmed it.
The consequences are not neccesarily severe though. Suboptimal Usually. The Finch scenario you performed is a worst-case scenario. But if you had plenty of other mobs that were registered properly in the biome as ambient, you could safely change finch and not notice disatrous results.
Not to mention that we wouldn't nececsarily want MSC to lose the feature as eventually, if/when I get my hook accepted into forge, mob modders will be able to change the creature type (which they could potentially expose via config) but we still want MSC to do the spawnLists themselves.
Yes, originally it was because I had animals spawning as monsters, as I figured despawning might be prefered. But I noticed they showed up way to often so made them spawn more rare. I had data but didn't at the time realise the problem.
Nowadays most of them at at 100% as they are registered as animals.
There are two spawning systems in Minecraft. The first, which I have not analyzed in depth, spawns animals during worldgen for each chunk - it's supposed to be your food supply. This system is I think the main culprit for people not being happy with the results of Mob Spawn Controls, I suspect it may not follow the same rules as the other spawner, or at least use them in a very liberal way.
The second runs at regular interval during the game and is the one that seemingly has always been around (the "Custom Spawner" in MoCreatures is basically this code isolated from the rest). It follows the rules that you change in Mob Spawn Controls. I took the time to decompile and understand what it does, //www.minecraftforum.net/index.php?app=core&module=search&do=user_activity&search_app=forums&mid=933361&sid=0ff0301484764a62d4e1e2e6d66f8755&search_app_filters[forums" target="" data-ensure-absolute>[searchInKey]=&userMode=content"]see this post.
I'm not sure how despawning works.
When I click the link, I get asked to login again. When I do so, I am returned to this thread. I think link is inaccurate...
The hook I wanted to get into forge that I mentioned in the Mob Spawn Discussion http://www.minecraft...d/page__st__860 was accepted into forge (~575) so I'll be implementing that to all my creatures before I release. All my creatures will belong to their appropriate spawn caps in 1.5. I hope this makes a noticeable difference. I don't know if the first release will have config options.
The hooks allows a few additional scenarios than before:
* A creature can change the creature type cap it belongs to based on its state (tamed, health, number of players nearby, other arbitrary parameter)
* A creature can belong to any number of creature type caps, as well as none
* The 'type' that it belongs to can be different depending on if its being counted for spawning purposes or if its being called to check creature type
Examples:
* A Tamed animal could be made not to count as a 'Creture' if its tamed, but if Called to check if hostile against Creatures could return that it is a Creature
* A Evil Corrupted Tree Ent could count as a 'Monster' but be purified and then count as a 'Creature'
* A Boss Monster does not cound as 'Monster' for spawning but counts as 'Monster' for hostile check.
Some of those, obviously, depend on others also using it to determine creature type, and using Creture type for those purposes. Most of the creatures will simply be a config option for a single type. Technically, the method can be different for every entity. I'll probably include an NBT for my creatures so if spawned from a GuiSpawner you could have them not count against spawning cap.
Sidenote: If it was an possible, would you prefer that all tamed animals don't count towards the spawn cap, or do you feel that would be bad for world balance?
Original: http://www.minecraft...0#entry21409924
The biggest thing we've noticed is that hostile mobs spawn in clusters, almost always 3 or 4 mobs in size but varied in what spawns. I've seen clusters with 2 endermen, 2 skeletons... 3 zombies, 1 skeleton, 4 of any of them, any sort of combination. Seems to behave the same regardless of the min/max on the mob spawn settings themselves, so I imagine it's related to the spawner's core as Crudedragos discussed previously.
Still trying to find where monsters are hitting a spawning bottleneck and where exactly the mobs are spawning to fill up slots. I think some of the DivineRPG "deep cave" mobs like the Caveclops, Eye, etc may have had a negative impact on my previous world judging by their removal in this new config giving us a couple more minecraft days of acceptable spawn rates. Since server reboots or running the ForgeEssentials /butcher command temporarily fix the lack of spawns there's something throwing a wrench in the gears somewhere.
At this point I'm actually fairly satisfied with the regular animal spawns and may reintroduce some limited vanilla spawns going forward. It's the hostiles I need to fix now, since I largely started with default spawn settings and scrapped my previous config altogether.
Firstly, I applaud you for even attempting to get these mods to work together. I currently consider both Mo'C and W&M "troublesome" mods for various reasons, and have decidedly stopped using them until their modders can implement fixes. You're a braver man than I.
As for your findings, I'm not sure what to make of this. I am unaware of any mention of multiple entries per mob in MSC before, which makes me think that is perhaps a bug in MSC itself... a bug that may actually be a useful feature, however.
Why only W&M would have multiple entires also confuses me. Again, I would think this a bug either with W&M or MSC when the list generated, but it looks like W&M has a varied number of entries per mob (EnderTroll is in there 8 times if I counted right!). I would think that a bug in list generation would've yielded the same number of extra entries per mob.
I can only imagine two possibilities atm - either W&M is using a previously unheard-of feature for mob spawning (multiple entries per mob to increase spawn chances), or some anomaly occurred that brought about interesting results. Considering all the posts across various threads about Mo'C hogging the spawns, it wouldn't surprise me if other mob mod authors were trying to figure out a workaround.
To answer your question though, I have no clue if it actually works. Might have to test it for myself soon!
Taking requests - PM me if you want me to spotlight your mod.
On the technical side, the biomeSpawnList is a List so there is nothing inherent stopping a creature from appearing multiple times in it. Since it is a weighted chance, its probability of showing up is the sum of the weighted chances: there shoudl be no tangible advantage to placing it in multiple vs increaseing its weighted Chance. The 'official' forge hook to register a spawn (EntityRegistry.addSpawn) does not allow for multiple entries: it will replace the old wight/min/max with the newly provided ones. But the actual spawnlist in the Biomes are public, so it would not be any extra work to bypass it if so desired.
I could be mistaken, but I though that showed the creature and weights of things that could spawn.
As for Mo'Creatures Types. I put a check in some code to go through all entities on ServerStart and check what type they are. Did it for Atmos too. Obviously, this is on 1.4.7. Note this is all entities, not just creature entities.
Evaluated according to the vanilla count condition:
If the Creature class can Cast to IMob.class it is a Monster
If the Creature class can Cast to EntityAnimal.class it is a Creature
If the Creature class can Cast to EntityAmbientCreature.class it is a Ambient
If the Creature class can Cast to EntityWaterMob.class it is a WaterCreature
Mo'Creatures Creature Types
http://pastebin.com/y79L7fyc
AtmosMobs
http://pastebin.com/pYkKYJds
Note that the Obfuscated names are vanilla creatures.
Code used:
What is the butcher command?
Edit:
Anyway, saying they are not registered correctly implies there is a registering system. My issue was that I use my own class hierarchy to give me more flexibility over my AI and was using IMob and IAnimal to diferentiate. IAnimal, however, isn't checked for spawning (for some reason EntityAnimal is instead) for Animals, while IMob is used for monsters. I didn't notice the inconsistency until recently.
With a forge hook I got added in 1.5 this is no longer a limitation and has been fixed in the most recent version http://www.minecraftforum.net/topic/1468127-14615forgebuffarmor-bar-mods-project-zulu-better-overworld-v064-extrabiomesxl-support-update-gui-mob-spawner/page__st__860#entry21426416
-Are all mobs registered the same way? As you said before 1.5 there wasn't a specific hook which means that who knows how the individual spawners and vanilla sees what is being spawned
-Vanilla despawning. This is an enormous issue with Zharks spawner and probably with the other mods as well. Vanilla mobs eventually take over the universe
-Spawn caps. What counts, what doesnt? How often is it checked? How often are mobs attempted to spawn? How accurate are spawn weights? Are weights adjusted for existing spawns?
-Back to registration, where do villagers fall into this? How about Tameables? How about things that are tamed already? How does this impact spawn caps? What about despawning of hostiles that you don't WANT to despawn?
-Do custom spawners allow for mod specific spawn conditions ie: depth, type of block to spawn on, light level, existing conditions, how about weather, etc.
-SMP servers, should spawn caps automagically adjust based on total active chunks? How do chunk loaders and fake players impact spawns?
Ideally there would be a custom mob spawner build into forge that everyone who wanted to add mobs would have to follow the API for, without that, I honestly think a good solution to a lush world with multiple creature mobs is very far away.
e; specifically to answer your question, FE adds a command similar to the old /killall from bukkit. It scans any radius from the activating player (including the entire dimension) and will despawn either cretures, monsters, ambients, golems, or all (there may be another class or two). My specific point about the zulu version I am using is that /butcher world all (which kills everything in a dimension) completely ignored all zulu spawns. This leads me to believe that the way spawners interact with those creatures is similarly off.
Taking requests - PM me if you want me to spotlight your mod.
Yes, using Rei's with entity radar to check stuff out. I should also note that ambients and animals spawn in clusters the same way as monsters but my only gripe is with monsters showing up in groups It is worth noting the pattern though given the info from Crudedragos on how the spawner code just happens to make four spawn pass attempts and that's almost always the size of the groups of any mob. I guess add "make spawns spread out a bit" to my list of things to fix in the future.
Progress, but still haven't found what's bottlenecking things just yet.
The fault is mine, I was overly defensive. You were merely providing useful and relevent information to a problem that has plaqued many.
The count check is based off the Class of the entity (or the parent class). Like I said its not a registration. Everything has a Class. I'm not sure I understand the 'who knows' statement? Are you trying to claim there is some unknowable black box vodoo going on? If you're talking about Custom mob Spawner, I can't speak for how it spawns things. My observations are from the forge source, unless you make edit base classes or make a coremod there are thins that a modder cannot do. There is only one spawn system in Minecraft: Not one for vanilla mobs and another for mod mobs.
The absence of a specific hook claim would more strongly suggest the inability to change things, not that anyone can do anything they want. If they could do anything they want, the hook wouldn't be neccesary.
Long Albeit relevent: http://www.minecraft.../#entry21382216
Their are 4 creature types: Monster, Ambient, Creature, and watermob. Their are 4 spawn lists: Monster, Ambient, Creature, and watermob. There is nothing stopping/warning a modder form putting any creature Type in any spawnlist. Each spawnlist has its own rate. See the long post about Creature having two spawn cycles: the 'normal' one and one that happens on chunk generation. Note the chunk generation doesn't care about spawn caps.
The Cap is checked at the beggining of a creatureList spawn cycle before it starts spawning across all eligible chunks. Mobs are attempted to spawn 4 times. (Agains see long post, creature chunk is more often).
The actual rate it's checked I don't know off hand. I know Creature spawn less often. Weights are relative to the number of spawns.
1) Weights of all cratures in the spawnList are summed.
2) Then a random number is generate from 0 to sum total.
3)The list is then iterated and for each entry the random weight subtract its value. Once it reaches 0 that is the selected item.
Villager does not belong to any spawncap. If I'm not mistaken its manually spanwed by the village structure generator.
The act of Taming doesn't change the creature class. The default check is against the Class of the Entity. Wolves, for example, extend EntityAnimal.class and are therefore counted by creatures by the spawning system. Even if register them to spawn in the Monster Spawnlist.
Technically, EntityWolf extends EntityTameable extends EntityAnimal...(hence why I call is a ClassHierarchy check).
What do you mean Custom Spawners? For the regular spawn cycle a method canGetSpawnHere gets called from the creature which can specify if the location determined by the spawning alogorithm is valid. This can include things such as depth, block, light level, etc. Note that it can't choose where to evealuate, so a more restrictive condition (i.e. height < 20) makes the creature less liekly to spawn than another mob, given equal weights.
I don't know if they should, but Spawn caps are proportional to number of active chunks.
From Long Albeit relevent: http://www.minecraft.../#entry21382216
Why wouldn't we just use the vanilla minecraft entity spawning system? You can't arbitrary remove the ability to spawn an entity in the world. How do you think slimes split into several smaller pieces? Being able to spawn things, such as clicking the ground with an item and placing a block or summoning an ally does not constitute a spawning system. When a bow shoots an arrow? Spawning an entity.
You can't really force people to do anything either. Mo'Creatures CMS does things differently than the current system (which, as far as I know is the only other spawner?), should it be forbidden and be forced to use some other arbitrary system? Your offhand comment about DZ not wanting not wanting them to work well together seems misplaced as well. He has worked to elimate incompatability between those using CMS and those using the vanilla system. He simply has a different vision of how the spawning system should work (which is to my uderstanding identical to how it used to be before certain creature spawning changes were implemented) that he has put a lot of work into. This is not something we should try to shut down just because it might cause incompatabilities.
I possibly focused a little too muich on the "have to follow" aspect of that sentence. That said, you asked a lot of question about how the spawning system works (good questions that you should know if you want to muck with spawning) but if you don't know how it works, how can you say it can't work? And if even, what needs to change?
From your context that's what I assumed, thank you. Where were you weeks ago