This sounds like exactly the sort of mod I've been looking for. But I'm having a little trouble wrapping my head around a couple of things.
Does this mod do away with the need for Custom Mob Spawner? Or are you supposed to use them in conjunction?
Are creatures from the various mods applied to the correct biomes? If so, does that include Biomes O Plenty and ExtraBiomes XL or other mod-added ones?
Does this mod do away with the need for Custom Mob Spawner? Or are you supposed to use them in conjunction?
I believe either option is valid depending on what you want to achieve. You should be able to disable CMS and do everything through JAS or just use JAS as a supplement to CMS.
Are creatures from the various mods applied to the correct biomes? If so, does that include Biomes O Plenty and ExtraBiomes XL or other mod-added ones?
JAS should import the default settings for each mob from the mod which adds it, so if the mob-mod supports a biome-adding mod such as Biomes O' Plenty / ExtraBiomesXL their default settings for these biomes should be applied (as far as I know).
------
To Crudedragos: I was wondering what (if any) plans you have for grouping / categorizing mobs and biomes? Definitely could be a useful feature if you could, say, group all the 'tropical' biomes together and set the spawn rates for the entire group simultaneously. Also potentially useful would be the ability to group mobs together, for example having a 'vanilla hostile' group which you could have spawn in every biome group and a 'water creature' group which you could have spawn in water-based biomes.
The ability to have mobs / biomes in multiple groups might also be useful: having the skeleton mob in the 'vanilla hostile' and 'undead' groups at the same time, or the plains biome in the 'flatlands' and 'peaceful' biome groups.
Of course the above are (again) just convenience features to make it easier on lazy people like myself.
This sounds like exactly the sort of mod I've been looking for. But I'm having a little trouble wrapping my head around a couple of things.
Does this mod do away with the need for Custom Mob Spawner? Or are you supposed to use them in conjunction?
Are creatures from the various mods applied to the correct biomes? If so, does that include Biomes O Plenty and ExtraBiomes XL or other mod-added ones?
JAS can spawn mobs that are recognized in Custom Mob Spawner, but CMS will still need to be installed (just disabled) for Mo'Creatures to work. It shouldn't have to be that way, but it is.
When you add JAS and load up your world, it makes a config for vanilla and each mod that adds mobs. The entire list is disabled by default and you have to go in and enable each mob you want. You then load the world again, and JAS makes a biome list adding each enabled mob. The vanilla mobs in each biome come with preset spawn rates, but that's not always the case for all mods.
You will find that many of the mobs will need their spawn rates set for mod-added biomes.
EDIT: SageEthereal above said it best. If the mob-mod supports the added biomes, they will be recognized and filled-in accordingly.
The entire list is disabled by default and you have to go in and enable each mob you want. You then load the world again, and JAS makes a biome list adding each enabled mob.
In the newest version the spawnlist is generated automatically for each mob / biome regardless of their CanSpawn setting (the setting is still respected in regards to their ability to spawn of course). No longer need to enable the mobs and go back into the world to have the spawnlist entries generate, they are created by default when the config file is first generated.
Unfortunately I am getting the following error when using the despawn tag. It's quite major as it loops which causes the game to lag badly. Once the tags are removed, everything is fine.
2013-04-12 17:02:44 [SEVERE] [JAS] Obfuscation needs to be updated to access the persistenceRequired. Please notify modmaker Immediately.
2013-04-12 17:02:44 [INFO] [STDERR] java.lang.NoSuchFieldException: persistenceRequired
EDIT **************************
Also having a different issue but one not related to the latest version (as I rolled back to 0.2.0 and it was still happening). What's happening is mobs from the monsters and opensky category (both are all despawners, spawn tick rate 40) are constantly spawning, even when I am stood still in the daytime.
I tested by loading a world completely using F3 to check all chunks were loaded and the caps were full. Stood around for 10 mins and the spawning never stops.
If I check rei's minimap with the entities radar on, I can see the mobs despawning and then more popping up. Seems like the despawner is being too aggressive. It's my understand that the mod leaves despawning to the vanilla despawner though, so not sure what is going on.
Yea, the v0.2.0 left it to the whatever the default despawners for each entity are unless the ForceDespawn config toggle was set to true. When redoing for the current options I was doing tests with the old setup and the creatures persisted for a fairly long time, I wish I had kept the spreadsheet but the average despawn time was quite long. The vanilla despawner waits till entity age is >600 (so ~30 sec gauranteed), then has a 1/800 chance every tick (so max ~40sec) of despawning. THe v0.2 was much longer than this, the average tick time was somewhere between the 2000-3000 (though how it worked was iffy as it did allow large numbers to occur not rarely enough so not entirely 1:1 comparison). Keep in mind despawning is proportional to the number of despawning entities you have, more there are the more will despawn. Also keep in mind v0.2.0 didn't set persistence NBT so if entity was set to despawn sooner anyway it did.
I see that you have Mo'Creature there, are you sure his CMS is disabled?
When I get a chance later I'll get some large datasets of despawning data for detailed comparison to make sure entities isn't despawning faster than vanilla.
This sounds like exactly the sort of mod I've been looking for. But I'm having a little trouble wrapping my head around a couple of things.
Does this mod do away with the need for Custom Mob Spawner? Or are you supposed to use them in conjunction?
Are creatures from the various mods applied to the correct biomes? If so, does that include Biomes O Plenty and ExtraBiomes XL or other mod-added ones?
You shouldn't need to use JAS with CMS. Depending on how you set it up you may even have difficulty (depending on what your trying to do).
As others have said, Default settings should be imported for any biomes the entities are set to spawn in.
To Crudedragos: I was wondering what (if any) plans you have for grouping / categorizing mobs and biomes? Definitely could be a useful feature if you could, say, group all the 'tropical' biomes together and set the spawn rates for the entire group simultaneously. Also potentially useful would be the ability to group mobs together, for example having a 'vanilla hostile' group which you could have spawn in every biome group and a 'water creature' group which you could have spawn in water-based biomes.
The ability to have mobs / biomes in multiple groups might also be useful: having the skeleton mob in the 'vanilla hostile' and 'undead' groups at the same time, or the plains biome in the 'flatlands' and 'peaceful' biome groups.
Of course the above are (again) just convenience features to make it easier on lazy people like myself.
Grouping biomes is a feature that I'm working on( https://github.com/C...pawner/issues/5 ). By default, each Biome will represent a "Group" that contains themselves. You can add/remove biomes from them or delete them / make your own new ones. Spawnlistentries in groups that overlap will both be treated as valid (the entity will be in the spawnlist twice). That may actually be useful, as you can have groups with large packsize but low chance overlap with small packsize but high chances.
I hadn't thought about grouping entities. Though I suppose it would be possible, not sure how I feel about it.
Aha, thanks. I think I understand. Probably It's about 3 years since I played Minecraft, so I've come back and found such modding options that the choice is making my head spin.
A more specific question. As I understand it, the mod "Special Mobs" works in a somewhat unusual manner by creating its own version of vanilla creatures such as skeletons, which have the special power that there's a small chance they'll instantly despawn and be replaced by one of a variety of rare versions, such as a fire skeleton.
Does JAS handle that OK, only spawning the regular ones (which then transform or not) or does it consider the special ones to be something it should just spawn anyway? From your previous answers, I'd guess that, as the special ones don't spawn naturally in the original mod, they wouldn't have settings for it that JAS would then import?
In the newest version the spawnlist is generated automatically for each mob / biome regardless of their CanSpawn setting (the setting is still respected in regards to their ability to spawn of course). No longer need to enable the mobs and go back into the world to have the spawnlist entries generate, they are created by default when the config file is first generated.
Oh, awesome! Haven't tried 0.3.0 yet - Just got my friend's 1.5.1 server going and got to finally sit down and play. Enjoying it immensely with all the mods we added, but it wouldn't be nearly as good without JAS running the spawns.
Rollback Post to RevisionRollBack
The config files are your friends! Get to know them, and shape your world!
Aha, thanks. I think I understand. Probably It's about 3 years since I played Minecraft, so I've come back and found such modding options that the choice is making my head spin.
A more specific question. As I understand it, the mod "Special Mobs" works in a somewhat unusual manner by creating its own version of vanilla creatures such as skeletons, which have the special power that there's a small chance they'll instantly despawn and be replaced by one of a variety of rare versions, such as a fire skeleton.
Does JAS handle that OK, only spawning the regular ones (which then transform or not) or does it consider the special ones to be something it should just spawn anyway? From your previous answers, I'd guess that, as the special ones don't spawn naturally in the original mod, they wouldn't have settings for it that JAS would then import?
They call the same initialization on those spawns as vanilla. So they will spawn as normal, though its not configurable obviously as its internal to the entity. Creature modders would need to expose that.
For those types that instantly despawn and respawn a result, if the result is a valid entity it should show up in the list of entities and you should be able to set it to a spawn list manually.
I see that you have Mo'Creature there, are you sure his CMS is disabled?
When I get a chance later I'll get some large datasets of despawning data for detailed comparison to make sure entities isn't despawning faster than vanilla.
I did a few tests myself you might be interested in. Removed all mods and created a creative superflat world. The mobs spawned fine then after a while (I guess the 30 min time you mentioned the vanilla despawner has) mobs start despawning and other spawn to replace them. So it's definately an issue with the vanilla despawner.
However, mobs shouldn't be despawning in viewing range - it's just unnecessary. I tried using JAS to replace the vanilla spawner/despawner (generated fresh config files, turned off vanilla spawning and set all mobs to true{despawn}) but the issue remains. What do you think about having the JAS despawner check whether the mob is within a players render distance before it allows a despawn? Then once mobs are spawned they won't despawn while I am still in the area.
EDIT1: You are going to hate me but I found another issue I wanted to bring to your attention. I was testing to see if the spawn>despawn>spawn loop from above was occuring with watercreatures (which it was).
While doing so I was using JAS to take control so I had only squid spawning and nothing else. All other JAS settings were left as defaults, so bear in mind the cap for watercreatures was 15. Now the squids were periodically despawning as explained above but instead of the spawner just repopulating one squid every time one disappeared (which you would expect with a watercreature spawn rate of 1 tick, right?), every couple of minutes it would try to spawn over 50 within a couple of seconds.
I could understand it going over the cap slightly, say if the mix/max of squids is 4/4 and it was close to the cap anyway, but it's going way over. Here's a log of one of the incidents; http://pastebin.com/EF51PcYm
I did a few tests myself you might be interested in. Removed all mods and created a creative superflat world. The mobs spawned fine then after a while (I guess the 30 min time you mentioned the vanilla despawner has) mobs start despawning and other spawn to replace them. So it's definately an issue with the vanilla despawner.
However, mobs shouldn't be despawning in viewing range - it's just unnecessary. I tried using JAS to replace the vanilla spawner/despawner (generated fresh config files, turned off vanilla spawning and set all mobs to true{despawn}) but the issue remains. What do you think about having the JAS despawner check whether the mob is within a players render distance before it allows a despawn? Then once mobs are spawned they won't despawn while I am still in the area.
JAS and Vanilla both have a despawn range of 32 blocks around the player. I'm more than happy to make that configurable for you.
EDIT1: You are going to hate me but I found another issue I wanted to bring to your attention. I was testing to see if the spawn>despawn>spawn loop from above was occuring with watercreatures (which it was).
While doing so I was using JAS to take control so I had only squid spawning and nothing else. All other JAS settings were left as defaults, so bear in mind the cap for watercreatures was 15. Now the squids were periodically despawning as explained above but instead of the spawner just repopulating one squid every time one disappeared (which you would expect with a watercreature spawn rate of 1 tick, right?), every couple of minutes it would try to spawn over 50 within a couple of seconds.
I could understand it going over the cap slightly, say if the mix/max of squids is 4/4 and it was close to the cap anyway, but it's going way over. Here's a log of one of the incidents; http://pastebin.com/EF51PcYm
This is a normal issue with the vanilla spawner I've inherited. The entities are only counted at the beggining of the loop. So what happens is that for entities that have an incredibly large amount of space to spawn such as water creatures in oceans, they will spawn in very large quantities after the check. Then never spawn until beneath the cap, then spawn in large quantities again. Its one of those things I can and will eventually get around to correcting.
JAS and Vanilla both have a despawn range of 32 blocks around the player. I'm more than happy to make that configurable for you.
Ah, it all makes sense now. The wiki on despawning points out two rules of interest; mobs will instantly despawn when outside of 128 blocks, but also if they are outside of 32 blocks they have a chance to despawn (as you say above). Of course mobs are spawning and then despawning, it's because they are spawning between 32-128 blocks. What a crazy setup.
EDIT: After further testing I see why they do it this way now, it gives the mobs a chance to spawn ahead of you when you are on the move.
This is a normal issue with the vanilla spawner I've inherited. The entities are only counted at the beggining of the loop. So what happens is that for entities that have an incredibly large amount of space to spawn such as water creatures in oceans, they will spawn in very large quantities after the check. Then never spawn until beneath the cap, then spawn in large quantities again. Its one of those things I can and will eventually get around to correcting.
Gotcha, vanilla spawner fails again.
Appreciate all the hard work you put into this mod to make improvements to the vanilla system. I know I've been pointing out a few issues recently but it's only due to me testing the hell out of the mod in the last day or so. Overall it's a very solid mod and a big improvement over vanilla.
I'm thinking it's 5am here so I must be overlooking something simple due to lack of sleep. I've got JAS installed on top of Feed The Beast's Ultimate mod pack (using FTB's launcher) - along with AtmosMobs, Project Zulu, Tropicraft, Mo'Creatures, Millenaire.. that's mainly it for the mob spawning mods. My install was working under Mob Spawn Controls -albeit with less than desirable spawns.
I hope this is enough info for now - sorry if it's not but the whole log is huge with so many mods.
Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
2013-04-14 04:35:07 [SEVERE] [ForgeModLoader] The following problems were captured during this phase
2013-04-14 04:35:07 [SEVERE] [ForgeModLoader] Caught exception from JustAnotherSpawner
java.lang.NullPointerException
at jas.common.spawner.creature.handler.CreatureHandlerRegistry.findVanillaSpawnListEntry(CreatureHandlerRegistry.java:228)
at jas.common.spawner.creature.handler.CreatureHandlerRegistry.generateSpawnListEntries(CreatureHandlerRegistry.java:125)
at jas.common.spawner.creature.handler.CreatureHandlerRegistry.serverStartup(CreatureHandlerRegistry.java:61)
at jas.common.JustAnotherSpawner.serverStart(JustAnotherSpawner.java:71)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:487)
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:69)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:317)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:300)
at com.google.common.eventbus.EventBus.post(EventBus.java:268)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:153)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:69)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:317)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:300)
at com.google.common.eventbus.EventBus.post(EventBus.java:268)
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:86)
at cpw.mods.fml.common.Loader.serverStarting(Loader.java:721)
at cpw.mods.fml.common.FMLCommonHandler.handleServerStarting(FMLCommonHandler.java:315)
at bdz.c(IntegratedServer.java:103)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:458)
at fy.run(SourceFile:849)
2013-04-14 04:35:07 [INFO] [STDERR] Exception in thread "Server thread" java.lang.NullPointerException
2013-04-14 04:35:07 [INFO] [STDERR] at jas.common.spawner.creature.handler.CreatureHandlerRegistry.findVanillaSpawnListEntry(CreatureHandlerRegistry.java:228)
2013-04-14 04:35:07 [INFO] [STDERR] at jas.common.spawner.creature.handler.CreatureHandlerRegistry.generateSpawnListEntries(CreatureHandlerRegistry.java:125)
2013-04-14 04:35:07 [INFO] [STDERR] at jas.common.spawner.creature.handler.CreatureHandlerRegistry.serverStartup(CreatureHandlerRegistry.java:61)
2013-04-14 04:35:07 [INFO] [STDERR] at jas.common.JustAnotherSpawner.serverStart(JustAnotherSpawner.java:71)
2013-04-14 04:35:07 [INFO] [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2013-04-14 04:35:07 [INFO] [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
2013-04-14 04:35:07 [INFO] [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
2013-04-14 04:35:07 [INFO] [STDERR] at java.lang.reflect.Method.invoke(Unknown Source)
2013-04-14 04:35:07 [INFO] [STDERR] at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:487)
2013-04-14 04:35:07 [INFO] [STDERR] at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
2013-04-14 04:35:07 [INFO] [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
2013-04-14 04:35:07 [INFO] [STDERR] at java.lang.reflect.Method.invoke(Unknown Source)
2013-04-14 04:35:07 [INFO] [STDERR] at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:69)
2013-04-14 04:35:07 [INFO] [STDERR] at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
2013-04-14 04:35:07 [INFO] [STDERR] at com.google.common.eventbus.EventBus.dispatch(EventBus.java:317)
2013-04-14 04:35:07 [INFO] [STDERR] at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:300)
2013-04-14 04:35:07 [INFO] [STDERR] at com.google.common.eventbus.EventBus.post(EventBus.java:268)
2013-04-14 04:35:07 [INFO] [STDERR] at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:153)
2013-04-14 04:35:07 [INFO] [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2013-04-14 04:35:07 [INFO] [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
2013-04-14 04:35:07 [INFO] [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
2013-04-14 04:35:07 [INFO] [STDERR] at java.lang.reflect.Method.invoke(Unknown Source)
2013-04-14 04:35:07 [INFO] [STDERR] at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:69)
2013-04-14 04:35:07 [INFO] [STDERR] at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
2013-04-14 04:35:07 [INFO] [STDERR] at com.google.common.eventbus.EventBus.dispatch(EventBus.java:317)
2013-04-14 04:35:07 [INFO] [STDERR] at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:300)
2013-04-14 04:35:07 [INFO] [STDERR] at com.google.common.eventbus.EventBus.post(EventBus.java:268)
2013-04-14 04:35:07 [INFO] [STDERR] at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:86)
2013-04-14 04:35:07 [INFO] [STDERR] at cpw.mods.fml.common.Loader.serverStarting(Loader.java:721)
2013-04-14 04:35:07 [INFO] [STDERR] at cpw.mods.fml.common.FMLCommonHandler.handleServerStarting(FMLCommonHandler.java:315)
2013-04-14 04:35:07 [INFO] [STDERR] at bdz.c(IntegratedServer.java:103)
2013-04-14 04:35:07 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:458)
2013-04-14 04:35:07 [INFO] [STDERR] at fy.run(SourceFile:849)
Really wishing I knew what you guys know about coding/modding so I could sort this myself and get on with configuring the spawn options that JAS allows. I've been reading like a maniac, absorbing what I can...
ugh. Please forgive my sheepish noobishness and accept my humble praise as reward for any help given. Any help at all.
Really wishing I knew what you guys know about coding/modding so I could sort this myself and get on with configuring the spawn options that JAS allows. I've been reading like a maniac, absorbing what I can...
ugh. Please forgive my sheepish noobishness and accept my humble praise as reward for any help given. Any help at all.
Thanks
It looks like someone or something, perphaps a custom biome, is setting or return a null spawnlist instead of an empty one. 0.3.2 should fix this. Let me know if it works.
Changelog JAS v0.4.0
- Fix issue Master Config not transferring OptionalSettings to World Config
- Add inverted !spawn and !despawn tags (see Wiki )
- Add invertable sky tag for spawning and despawning. (see Wiki)
- Add Global DespawnDistance property and spawnRange tag.
- Check Entitycap after every spawn.
- Added Biome groups (see: Wiki)
See the wiki for Biome groups. By default they are defined by the biome names, so configs should still work as they did before. (back up just in case of implosion). Group names themselves can contain any valid java character, except commas.
Not sure I care for how I've done the Biome group lists. With regular names it wasn't so bad, but with the package names I think it'll be tedious. I'm comtemplating changing it to be more like the entity spawnlists; its list all the biomes and you toggle the included ones with true or false. Feedback appreciated.
Am I correct in assuming this means that when using JAS for spawning, you won't get the room to spawn 1 more creature so vanilla goes through the whole spawn cycle and adds 50 weirdness?
Am I correct in assuming this means that when using JAS for spawning, you won't get the room to spawn 1 more creature so vanilla goes through the whole spawn cycle and adds 50 weirdness?
EDIT:
Unfortunately, the {!despawn} tag isn't working for me (v0.4.0 for 1.4.7). I deleted the settings folder, so it's not an issue with migrating old settings. I tested in a creative superflat with JAS handling all spawning and only zombies enabled - which were still despawning when out of range.
In your wiki you say "Note persistence entities do not despawn at any range.". Do entities out of range still count towards the spawn caps? That was a problem I was having when trying to force persistence with {despawn:light,0,15} in v0.3.0. They spawned fine and weren't despawning but when I moved around, nothing else was getting spawned due to the caps being full.
In vanilla, animals don't despawn but you still see more than the vanilla creature spawn cap (10/15?) in the world as a whole. Hope that makes sense. I can only think of this being because they don't count towards the cap if they aren't within range, or when they chunk spawn it doesn't respect the cap.
On a positive note - is there anything we can do to help support the mod? If you have a banner like the one you have for ProjectZulu I'd be happy to put it in my sig.
Unfortunately, the {!despawn} tag isn't working for me (v0.4.0 for 1.4.7). I deleted the settings folder, so it's not an issue with migrating old settings. I tested in a creative superflat with JAS handling all spawning and only zombies enabled - which were still despawning when out of range.
Confirmed. Some last minute tweak must have broken it, likely many of the other tags won't work either. I'll dig into it tommorow.
In your wiki you say "Note persistence entities do not despawn at any range.". Do entities out of range still count towards the spawn caps? That was a problem I was having when trying to force persistence with {despawn:light,0,15} in v0.3.0. They spawned fine and weren't despawning but when I moved around, nothing else was getting spawned due to the caps being full.
In vanilla, animals don't despawn but you still see more than the vanilla creature spawn cap (10/15?) in the world as a whole. Hope that makes sense. I can only think of this being because they don't count towards the cap if they aren't within range, or when they chunk spawn it doesn't respect the cap.
Entities are counted from all loaded chunks. Default is 10 chunk radius, so 160 blocks around the player. Compared 128 representing the non-persistent cutoff (cause they despawn). As you move more chunks are loaded and old ones are unloaded: those entities won't count anymore. The entities are counted identically to vanilla (with the exception that I now also count after the initial count from going over the cap, so you may want to increase a bit to compensate for that).
10 isn't the amount itself, its proportional to the number of loaded chunks:
On a positive note - is there anything we can do to help support the mod? If you have a banner like the one you have for ProjectZulu I'd be happy to put it in my sig.
I have not got around to making a banner yet unfortunately.
Does this mod do away with the need for Custom Mob Spawner? Or are you supposed to use them in conjunction?
Are creatures from the various mods applied to the correct biomes? If so, does that include Biomes O Plenty and ExtraBiomes XL or other mod-added ones?
I believe either option is valid depending on what you want to achieve. You should be able to disable CMS and do everything through JAS or just use JAS as a supplement to CMS.
JAS should import the default settings for each mob from the mod which adds it, so if the mob-mod supports a biome-adding mod such as Biomes O' Plenty / ExtraBiomesXL their default settings for these biomes should be applied (as far as I know).
------
To Crudedragos: I was wondering what (if any) plans you have for grouping / categorizing mobs and biomes? Definitely could be a useful feature if you could, say, group all the 'tropical' biomes together and set the spawn rates for the entire group simultaneously. Also potentially useful would be the ability to group mobs together, for example having a 'vanilla hostile' group which you could have spawn in every biome group and a 'water creature' group which you could have spawn in water-based biomes.
The ability to have mobs / biomes in multiple groups might also be useful: having the skeleton mob in the 'vanilla hostile' and 'undead' groups at the same time, or the plains biome in the 'flatlands' and 'peaceful' biome groups.
Of course the above are (again) just convenience features to make it easier on lazy people like myself.
JAS can spawn mobs that are recognized in Custom Mob Spawner, but CMS will still need to be installed (just disabled) for Mo'Creatures to work. It shouldn't have to be that way, but it is.
When you add JAS and load up your world, it makes a config for vanilla and each mod that adds mobs. The entire list is disabled by default and you have to go in and enable each mob you want. You then load the world again, and JAS makes a biome list adding each enabled mob. The vanilla mobs in each biome come with preset spawn rates, but that's not always the case for all mods.
You will find that many of the mobs will need their spawn rates set for mod-added biomes.
EDIT: SageEthereal above said it best. If the mob-mod supports the added biomes, they will be recognized and filled-in accordingly.
In the newest version the spawnlist is generated automatically for each mob / biome regardless of their CanSpawn setting (the setting is still respected in regards to their ability to spawn of course). No longer need to enable the mobs and go back into the world to have the spawnlist entries generate, they are created by default when the config file is first generated.
Should be Fixed v0.3.1 (1.4.7)
Yea, the v0.2.0 left it to the whatever the default despawners for each entity are unless the ForceDespawn config toggle was set to true. When redoing for the current options I was doing tests with the old setup and the creatures persisted for a fairly long time, I wish I had kept the spreadsheet but the average despawn time was quite long. The vanilla despawner waits till entity age is >600 (so ~30 sec gauranteed), then has a 1/800 chance every tick (so max ~40sec) of despawning. THe v0.2 was much longer than this, the average tick time was somewhere between the 2000-3000 (though how it worked was iffy as it did allow large numbers to occur not rarely enough so not entirely 1:1 comparison). Keep in mind despawning is proportional to the number of despawning entities you have, more there are the more will despawn. Also keep in mind v0.2.0 didn't set persistence NBT so if entity was set to despawn sooner anyway it did.
I see that you have Mo'Creature there, are you sure his CMS is disabled?
When I get a chance later I'll get some large datasets of despawning data for detailed comparison to make sure entities isn't despawning faster than vanilla.
You shouldn't need to use JAS with CMS. Depending on how you set it up you may even have difficulty (depending on what your trying to do).
As others have said, Default settings should be imported for any biomes the entities are set to spawn in.
Grouping biomes is a feature that I'm working on( https://github.com/C...pawner/issues/5 ). By default, each Biome will represent a "Group" that contains themselves. You can add/remove biomes from them or delete them / make your own new ones. Spawnlistentries in groups that overlap will both be treated as valid (the entity will be in the spawnlist twice). That may actually be useful, as you can have groups with large packsize but low chance overlap with small packsize but high chances.
I hadn't thought about grouping entities. Though I suppose it would be possible, not sure how I feel about it.
A more specific question. As I understand it, the mod "Special Mobs" works in a somewhat unusual manner by creating its own version of vanilla creatures such as skeletons, which have the special power that there's a small chance they'll instantly despawn and be replaced by one of a variety of rare versions, such as a fire skeleton.
Does JAS handle that OK, only spawning the regular ones (which then transform or not) or does it consider the special ones to be something it should just spawn anyway? From your previous answers, I'd guess that, as the special ones don't spawn naturally in the original mod, they wouldn't have settings for it that JAS would then import?
Oh, awesome! Haven't tried 0.3.0 yet - Just got my friend's 1.5.1 server going and got to finally sit down and play. Enjoying it immensely with all the mods we added, but it wouldn't be nearly as good without JAS running the spawns.
They call the same initialization on those spawns as vanilla. So they will spawn as normal, though its not configurable obviously as its internal to the entity. Creature modders would need to expose that.
For those types that instantly despawn and respawn a result, if the result is a valid entity it should show up in the list of entities and you should be able to set it to a spawn list manually.
I can confirm this is fixed, thanks for that.
I did a few tests myself you might be interested in. Removed all mods and created a creative superflat world. The mobs spawned fine then after a while (I guess the 30 min time you mentioned the vanilla despawner has) mobs start despawning and other spawn to replace them. So it's definately an issue with the vanilla despawner.
However, mobs shouldn't be despawning in viewing range - it's just unnecessary. I tried using JAS to replace the vanilla spawner/despawner (generated fresh config files, turned off vanilla spawning and set all mobs to true{despawn}) but the issue remains. What do you think about having the JAS despawner check whether the mob is within a players render distance before it allows a despawn? Then once mobs are spawned they won't despawn while I am still in the area.
EDIT1: You are going to hate me but I found another issue I wanted to bring to your attention. I was testing to see if the spawn>despawn>spawn loop from above was occuring with watercreatures (which it was).
While doing so I was using JAS to take control so I had only squid spawning and nothing else. All other JAS settings were left as defaults, so bear in mind the cap for watercreatures was 15. Now the squids were periodically despawning as explained above but instead of the spawner just repopulating one squid every time one disappeared (which you would expect with a watercreature spawn rate of 1 tick, right?), every couple of minutes it would try to spawn over 50 within a couple of seconds.
I could understand it going over the cap slightly, say if the mix/max of squids is 4/4 and it was close to the cap anyway, but it's going way over. Here's a log of one of the incidents; http://pastebin.com/EF51PcYm
Iguana Tweaks for Tinker's Construct - New tool progression and leveling system
JAS and Vanilla both have a despawn range of 32 blocks around the player. I'm more than happy to make that configurable for you.
This is a normal issue with the vanilla spawner I've inherited. The entities are only counted at the beggining of the loop. So what happens is that for entities that have an incredibly large amount of space to spawn such as water creatures in oceans, they will spawn in very large quantities after the check. Then never spawn until beneath the cap, then spawn in large quantities again. Its one of those things I can and will eventually get around to correcting.
Ah, it all makes sense now. The wiki on despawning points out two rules of interest; mobs will instantly despawn when outside of 128 blocks, but also if they are outside of 32 blocks they have a chance to despawn (as you say above). Of course mobs are spawning and then despawning, it's because they are spawning between 32-128 blocks. What a crazy setup.
EDIT: After further testing I see why they do it this way now, it gives the mobs a chance to spawn ahead of you when you are on the move.
Gotcha, vanilla spawner fails again.
Appreciate all the hard work you put into this mod to make improvements to the vanilla system. I know I've been pointing out a few issues recently but it's only due to me testing the hell out of the mod in the last day or so. Overall it's a very solid mod and a big improvement over vanilla.
Iguana Tweaks for Tinker's Construct - New tool progression and leveling system
I'm thinking it's 5am here so I must be overlooking something simple due to lack of sleep. I've got JAS installed on top of Feed The Beast's Ultimate mod pack (using FTB's launcher) - along with AtmosMobs, Project Zulu, Tropicraft, Mo'Creatures, Millenaire.. that's mainly it for the mob spawning mods. My install was working under Mob Spawn Controls -albeit with less than desirable spawns.
I hope this is enough info for now - sorry if it's not but the whole log is huge with so many mods.
2013-04-14 04:35:07 [SEVERE] [ForgeModLoader] The following problems were captured during this phase
2013-04-14 04:35:07 [SEVERE] [ForgeModLoader] Caught exception from JustAnotherSpawner
java.lang.NullPointerException
at jas.common.spawner.creature.handler.CreatureHandlerRegistry.findVanillaSpawnListEntry(CreatureHandlerRegistry.java:228)
at jas.common.spawner.creature.handler.CreatureHandlerRegistry.generateSpawnListEntries(CreatureHandlerRegistry.java:125)
at jas.common.spawner.creature.handler.CreatureHandlerRegistry.serverStartup(CreatureHandlerRegistry.java:61)
at jas.common.JustAnotherSpawner.serverStart(JustAnotherSpawner.java:71)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:487)
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:69)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:317)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:300)
at com.google.common.eventbus.EventBus.post(EventBus.java:268)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:153)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:69)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:317)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:300)
at com.google.common.eventbus.EventBus.post(EventBus.java:268)
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:86)
at cpw.mods.fml.common.Loader.serverStarting(Loader.java:721)
at cpw.mods.fml.common.FMLCommonHandler.handleServerStarting(FMLCommonHandler.java:315)
at bdz.c(IntegratedServer.java:103)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:458)
at fy.run(SourceFile:849)
2013-04-14 04:35:07 [INFO] [STDERR] Exception in thread "Server thread" java.lang.NullPointerException
2013-04-14 04:35:07 [INFO] [STDERR] at jas.common.spawner.creature.handler.CreatureHandlerRegistry.findVanillaSpawnListEntry(CreatureHandlerRegistry.java:228)
2013-04-14 04:35:07 [INFO] [STDERR] at jas.common.spawner.creature.handler.CreatureHandlerRegistry.generateSpawnListEntries(CreatureHandlerRegistry.java:125)
2013-04-14 04:35:07 [INFO] [STDERR] at jas.common.spawner.creature.handler.CreatureHandlerRegistry.serverStartup(CreatureHandlerRegistry.java:61)
2013-04-14 04:35:07 [INFO] [STDERR] at jas.common.JustAnotherSpawner.serverStart(JustAnotherSpawner.java:71)
2013-04-14 04:35:07 [INFO] [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2013-04-14 04:35:07 [INFO] [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
2013-04-14 04:35:07 [INFO] [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
2013-04-14 04:35:07 [INFO] [STDERR] at java.lang.reflect.Method.invoke(Unknown Source)
2013-04-14 04:35:07 [INFO] [STDERR] at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:487)
2013-04-14 04:35:07 [INFO] [STDERR] at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
2013-04-14 04:35:07 [INFO] [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
2013-04-14 04:35:07 [INFO] [STDERR] at java.lang.reflect.Method.invoke(Unknown Source)
2013-04-14 04:35:07 [INFO] [STDERR] at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:69)
2013-04-14 04:35:07 [INFO] [STDERR] at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
2013-04-14 04:35:07 [INFO] [STDERR] at com.google.common.eventbus.EventBus.dispatch(EventBus.java:317)
2013-04-14 04:35:07 [INFO] [STDERR] at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:300)
2013-04-14 04:35:07 [INFO] [STDERR] at com.google.common.eventbus.EventBus.post(EventBus.java:268)
2013-04-14 04:35:07 [INFO] [STDERR] at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:153)
2013-04-14 04:35:07 [INFO] [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2013-04-14 04:35:07 [INFO] [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
2013-04-14 04:35:07 [INFO] [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
2013-04-14 04:35:07 [INFO] [STDERR] at java.lang.reflect.Method.invoke(Unknown Source)
2013-04-14 04:35:07 [INFO] [STDERR] at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:69)
2013-04-14 04:35:07 [INFO] [STDERR] at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
2013-04-14 04:35:07 [INFO] [STDERR] at com.google.common.eventbus.EventBus.dispatch(EventBus.java:317)
2013-04-14 04:35:07 [INFO] [STDERR] at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:300)
2013-04-14 04:35:07 [INFO] [STDERR] at com.google.common.eventbus.EventBus.post(EventBus.java:268)
2013-04-14 04:35:07 [INFO] [STDERR] at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:86)
2013-04-14 04:35:07 [INFO] [STDERR] at cpw.mods.fml.common.Loader.serverStarting(Loader.java:721)
2013-04-14 04:35:07 [INFO] [STDERR] at cpw.mods.fml.common.FMLCommonHandler.handleServerStarting(FMLCommonHandler.java:315)
2013-04-14 04:35:07 [INFO] [STDERR] at bdz.c(IntegratedServer.java:103)
2013-04-14 04:35:07 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:458)
2013-04-14 04:35:07 [INFO] [STDERR] at fy.run(SourceFile:849)
Really wishing I knew what you guys know about coding/modding so I could sort this myself and get on with configuring the spawn options that JAS allows. I've been reading like a maniac, absorbing what I can...
ugh. Please forgive my sheepish noobishness and accept my humble praise as reward for any help given. Any help at all.
Thanks
It looks like someone or something, perphaps a custom biome, is setting or return a null spawnlist instead of an empty one. 0.3.2 should fix this. Let me know if it works.
In the master;
S:ButterFly=OPENSKY-false{despawn}
S:CaveOgre=MONSTER-false{spawn:light,5,10}
S:CaveSpider=MONSTER-true{spawn}
S:Chicken=CREATURE-true{despawn:SpawnRate,100}
S:Cow=CREATURE-true{despawn:SpawnRate,100}
The when world files are created they come through like this;
S:ButterFly=OPENSKY-false
S:CaveOgre=MONSTER-false
S:CaveSpider=MONSTER-true
S:Chicken=CREATURE-true
S:Cow=CREATURE-true
I can copy the master file and rename it before creating a world and the settings will stay, which is what I am doing now.
Iguana Tweaks for Tinker's Construct - New tool progression and leveling system
- Fix issue Master Config not transferring OptionalSettings to World Config
- Add inverted !spawn and !despawn tags (see Wiki )
- Add invertable sky tag for spawning and despawning. (see Wiki)
- Add Global DespawnDistance property and spawnRange tag.
- Check Entitycap after every spawn.
- Added Biome groups (see: Wiki)
See the wiki for Biome groups. By default they are defined by the biome names, so configs should still work as they did before. (back up just in case of implosion). Group names themselves can contain any valid java character, except commas.
Not sure I care for how I've done the Biome group lists. With regular names it wasn't so bad, but with the package names I think it'll be tedious. I'm comtemplating changing it to be more like the entity spawnlists; its list all the biomes and you toggle the included ones with true or false. Feedback appreciated.
Awesome, can't wait to try it out. Great job pumping out the new features so quickly!
EDIT:
Am I correct in assuming this means that when using JAS for spawning, you won't get the room to spawn 1 more creature so vanilla goes through the whole spawn cycle and adds 50 weirdness?
Correct.
EDIT:
Unfortunately, the {!despawn} tag isn't working for me (v0.4.0 for 1.4.7). I deleted the settings folder, so it's not an issue with migrating old settings. I tested in a creative superflat with JAS handling all spawning and only zombies enabled - which were still despawning when out of range.
In your wiki you say "Note persistence entities do not despawn at any range.". Do entities out of range still count towards the spawn caps? That was a problem I was having when trying to force persistence with {despawn:light,0,15} in v0.3.0. They spawned fine and weren't despawning but when I moved around, nothing else was getting spawned due to the caps being full.
In vanilla, animals don't despawn but you still see more than the vanilla creature spawn cap (10/15?) in the world as a whole. Hope that makes sense. I can only think of this being because they don't count towards the cap if they aren't within range, or when they chunk spawn it doesn't respect the cap.
On a positive note - is there anything we can do to help support the mod? If you have a banner like the one you have for ProjectZulu I'd be happy to put it in my sig.
Iguana Tweaks for Tinker's Construct - New tool progression and leveling system
Confirmed. Some last minute tweak must have broken it, likely many of the other tags won't work either. I'll dig into it tommorow.
Entities are counted from all loaded chunks. Default is 10 chunk radius, so 160 blocks around the player. Compared 128 representing the non-persistent cutoff (cause they despawn). As you move more chunks are loaded and old ones are unloaded: those entities won't count anymore. The entities are counted identically to vanilla (with the exception that I now also count after the initial count from going over the cap, so you may want to increase a bit to compensate for that).
10 isn't the amount itself, its proportional to the number of loaded chunks:
Keep in mind that chunk spawning doesn't repsect the cap. So new chunks may spawn additional ones as well. Not exactly common, but it'll add up.
Edit: there was a bug in v0.3.0 where despawning entities >128 were not being auto-despawned.
I have not got around to making a banner yet unfortunately.