Just Another Spawner v0.11.0: Analytics

Twilight forest structure support was readded. This also marks comparability support being a seperate module (still unified download). It appears in the modlist as JASCompatability.

This update continues the trend of quality of life improvements in the last few updates. This time in the form of analytics commands for debugging. They allow users to directly query JAS about specfific behaviours. For example, the canSpawnHere command would be used to check if a particular entity can spawn at a specfic coordinates. It will also display the individual component (entity type, entity, spawnlistentry) that is responsible for the failure which should make it easier to test tags. Another example would be the composition command which displays the amounts of various entities in the world, as well as the number that can despawn. listspawns will list the spawnlist of the biome or structure the player is in.

See JAS wiki: https://github.com/Crudedragos/JustAnotherSpawner/wiki/Commands

All JAS commands are triggered via a single command: /jas. Each individual command is called by providing the command name as the second argument /jas ; i.e. /jas killall. In almost all scenarios valid entries are case sensitive (player names, entity names, entity types, etc.) and as such using tab completion to get the correct-case is recommended.

Analytical Commands
These commands are used to enquire about how JAS is currently functioning. Primarily intended for diagnosing perceived problems.

countcap: Sends chat message to player with count relative to entity cap of EntityType requested.
Typical Form: '/jas countcap '
* Target player is the name in String form of a player in the world. Used to fetch local dimension ID. Alternatively, the dimensionID may be provided directly. Either may ommited and the command sender will be used as target player.
* EntityType in String. i.e. AMBIENT, MONSTER, OPENSKY, etc. Character * indicates to print all types. Entity Types are valid for tab compleion.
listspawns: Sends chat message to player with spawnlists of EntityType requested.
Typical Form: '/jas listspawns '
* Target player is the name in String form of a player in the world. Used to fetch local biome or structure. Alternatively, the package biome or structure name may be provided directly. Either may ommited and the command sender will be used as target player.
* EntityType in String. i.e. AMBIENT, MONSTER, OPENSKY, etc. Character * indicates to print all types. Entity Types are valid for tab compleion.
canspawnhere: Sends chat messege to player with whether chosen entity could spawn at players location (neglecting players collision box).
Typical Form: '/jas canspawnhere '
* Target player is the name in String form of a player in the world. Used to get biome or structure. May be ommited and the command sender will be used as target player.
* Entity is the registered name of the entity. Indepedent of internal mob names; i.e. naming tamed animals.
composition: Sends chat messege to player number of loaded entities of specified type as well as percentage that will despawn.
Typical Form: '/jas composition '
* Target player is the name in String form of a player in the world. Used to fetch local world instance. May be ommited and the command sender will be used as target player.
* EntityType in String. i.e. AMBIENT, MONSTER, OPENSKY, etc. Character * indicates to print all types. Entity Types are valid for tab compleion.
locate: Sends message to player stating location of entities with the provided name or in the provided group. Displayed name is green if it can despawn, red if it cannot in its current state / location.
Typical Form: '/jas locate '
* Target player is the name in String form of a player in the world. Used to fetch local world instance. May be ommited and the command sender will be used as target player.
* EntityType in String. i.e. AMBIENT, MONSTER, OPENSKY, etc. Character * indicates to print all types. Entity Types are valid for tab compleion.
entitypackage: Sends message to player stating the package name of the class registered to the provided entity name.
Typical Form: '/jas entitypackage '

Some more general use commands were also added which should improve quality of life.
'saveconfig': Saves the currently loaded world settings to the configuration files overwriting any data present. If the files were deleted, they will be created.
'loadconfig': Loads the world settigns from the configuration files disregarding the currently loaded world settings.
'killall': Kills all entities that match the criteria. See wiki for details. Beware, it is possible to kill boss entities that may not respawn such as the enderdragon.
Finally, but not completely least, what would a JAS update be without a new tag or two. Well heres three:
* isTamed and isTameable: Both chainable and invertible. Compatible with entities that extend the vanilla class hierarchy. Other entities may implement the jas.api.ITameable interface. Project Zulu Foxs, for example, are not yet compatible.
* location: chainable and invertible. Format :location,targetX,targetY,targetZ,varX,varY,varZ. Note that the range in along a coordinate specifiecd by a target and variance is from (targetX - varX -> targetX + varX)

Read more ...

Project Zulu v1.1.5

Tombstones and DeathGamerule Integration

Tombstones absorb items dropped via the DeathGamerules. Experience orbs hover above tombstone when loot is present. Right-clicking with empty hand will loot all items that will fit in the players inventory.

Only items dropped via the Project Zulu drop 'Item or XP' gamerules will be "absorbed" in this way, others will fall to the ground as normal.

Structure Non-Trivial Trivial Overhaul

The structure system has been overhauled under the hood. How they generate has changed, but what they generate has not: they should all look the same with minor tweaks. The maze generator backing the Pyramid and labyrinth structure was smoothed out. The mazes are more likely to have turns in them than before.

Part of this overhaul is that the structure placer item will generate structures away from the direction the playing is facing such that their edge is on the block in front of the player. Sneaking while placing a structure will generate it centered on the players location. This is only translation, the structure itself does not turn to face the player.


Oasis looks the most different, is now more square but generates level with the sand so is unnoticeable.


The Cemetary is more likely to generate a number of its buildings within it than before. Slightly more grass and diversification of tombstones.


Only first level shown, full pyramid obviously always generates
Pyramid contains a few subtle changs. Entrance is now pseudo randomly placed, though still favours one side. Stairs more elegantly generated into the structure.


Labyrinth is the least changed. The staircase from the entrance is slightly longer I think.

Customizable Entity Attributes

The base entity attribute values are customizable for all entities via the MobControl config file. Customizeable attributes are max health, movespeed, followrange, knockbackresistance, and flight chance.  In MC 1.6 the attribute system uses NBT to save the base values for each individual entity, so changes to the base attributes will only apply to new entities created after the change.

Localization Files

The Minecraft .lang file  format is not followed for PZ localization. Each module has its own en_US.lang files to provide the english localization. That obviously only provides english but the functionality is there for other languages if desired (i.e. Danish - da_DK.lang, French - fr_FR.lang, Russian - ru_RU.lang). In theory end-users are able to also customize the language via resource packs.

Minor Notes

Project Zulu entities now use the Strength attribute for damage calculations.
Fix error in Project Zulu structure generation when determining valid locations.
Fix error with haunted armor render in mob spawners.
Fix splash potions only applying to EntityLiving as opposed to EntitLivingBAse (such as players).
Fix armadillo render.
Fix lizard spit render and collision detection.
Ostrich, as well as other entities, will no longer retaliate against creative players.
Ostrich default speed increased from 0.5f to 0.8f.

Read more ...

MOSI Updated to 1.6

More on Screen Info (aka Buff /Armor Bar) have been updated to 1.6.
See Download Page.
Read more ...

Project Zulu on 1.6

1.6 Support is finally added via Project Zulu v1.1.4.8. Download Page.

This is identical to v1.0.4.8 with the noteable exception that the ability to load custom sounds removed.This was due to the changes minecraft has made to resource packs. Workaround using resource packs is planned.
Read more ...

JAS v0.9.0: SpawnListEntry Tags

There were two goals when designing v0.9. One was to improve the useability, reducing the certain unnecessarily complex parts of JAS to make them more plug-n-play. The second was spawnlist entries to allow unprecedented customization settings for users worlds.

Useability Improvements

A fair number of improvements were introduced into making JAS more user friendly. First and foremost was attempting to improve the ability to plug-n-play. The first improvement was settings the vanilla spawnlists to be cleared by default, rendering the vanilla system automatically disabled by installing JAS. The required the improvement of the importing and now vanilla settings are always imported properly, even with the vanilla spawnlist being cleared. Next was to make all entities set to spawn by default. They still need a spawnweight >0 and a type that is not NONE.

Also in the useability is the ability to combine all entities into a single universal CFG. The option is inside the SaveConfig.cfg, along with the SortByBiome option (this inherits its default setting from the global toggle but can be set world specific). The toggle of both options were improved such that it reads from the settings it was saved as. Such that saving as Universal then switching to mod specific will read the settings from Universal, delete itself, then create the mod specific files.

Spawn Lise Entry Tags

Tags can now be added to spawnlist entries identically to livinghandler. Tough a few tags are different. Valid tags are spawn, light, block, blockRange, blockFoot, spawnRange, sky, minSpawnHeight, maxSpawnHeight, liquid, opaque, normal, solidSide, difficulty, torchLight, ground, top, fill, modspawn, origin, players, entities, random, writenbt.

WriteNBT Tags

Another long promised feature. Valid for SpawnList and LivingHandler spawn parent tags. The format is fairly straightforward. After the usual ':writeNBT,' a comma separates each nbt operation. Each operation is int the format of 'targetTag/targetTagID/value'. See http://www.minecraftwiki.net/wiki/NBT_format for valid tag IDs. It helps to think of it as folders, telling the system to dig down until you find the tag you want to set and then providing a value. Container tags (TAG_Compound and TAG_List) do not have values, they merely move you along the hierarchy. The operations are get or set; meaning if a tag is called that does not exist, it is created.

The name of tags are case sensitive. To figure out what tags you need an NBT editor is recommended. The Project Zulu limited mob spawner allows you to explore the NBT tree graphically and test adding/removing tags to see their effects.

Value tags are typically just one value, setting a short would be done like 'id/2/30'. For arrays such as byte array, keep including values for as long as you want the array to be; i.e. 'myArray/7/20/30/40/2/254'. As you may have noticed already, all tags fetch using name (with one exception). Thus the first value is a string of the name. The exception is TAG_List, which uses an index instead.

Example, make an entity hold glass block in hand. ":writenbt,Equipment/9,0/10,id/2/20,Damage/2/0,Count/1/1".

Biome Attributes

Biome Attributes are an interesting addition to biome groups. Functionally, they are identical with the exception that they do not show up in your entity CFG reducing clutter. By default there is an attribute group for each entry in the biome dictionary and on representing all biomes. They can be added to biome groups in the same way biome mappings are, with the exception that they must be prefixed by an A|.

An additional feature introduced with attributes is the ability to add and subtract them and mappings by placing a '+' or '-' in front of their names. They are parsed left to right. Biomes cannot be added twice, and will simply 'overwrite' the other if tried.
Read more ...

JAS v0.8.0: BiomeGroups Revisited

This new version of JAS brings a Biomegroup cleanup. This makes them significantly more stable when adding/removing biome mods and hopefully makes them more use friendly. It was unfortunately not possible to make it backwards compatible with previous versions.

The World save configuration style was abandoned. Now instead of fighting between a world and master save folder there is only one user configurable save folder where changes need to be made.

Finally a few new tags were added; modSpawn, players, origin. ModSpawn calls the regular entity getCanSpawnHere method: allowing users to easily add additional considerations to how entities would regularly spawn. Players allows evaluating the number of players within a certain range. Origin is a range tag that evaluates based on the distance from the world spawn.


BiomeGroup files prior to v0.8.0 are no longer valid. The groups themselves can be with minor changes.

The referencebiomes list is gone, replaced with packagenamemappings. Allowing you to map the complex packages names to a shorter version. Instead of writing "net.minecraft.world.biome.BiomeGenBeach.Beach" you can write "Beach". The mapped name can be changed to any valid string, duplicated are ignored. They are case sensitive.

The allgroups property is gone and replaced with customgroups. The main change is that the default biomegroups (1 for each unique biome name) are always created. They can still be disabled by removing all biomes from the group; any group with no biomes will not be declared and will not show up in the entity CFGs.

World Save Configurations

The World-Master configuration pattern is abandoned. Instead the SaveConfig.cfg in WorldSettings contains a Save_Name property for each world which controls where it looks for and saves settings. Defaults to world name, allowing for backwards complete compatability. Multiple worlds can use one folder by setting the save nam eto the same.

There is also an import name option, which is used only when the Save_Name folder is missing. It will COPY the files from the import name to the Save_Name folder. This pattern should be more user friendly. Deleteing the Save_Name folder causing an import, deleting the contents allows them to be generated fresh.


There were a few new tags and tweaks to old ones. The ModSpawn tag which is only valid for the livinghandler spawn parent tag. It calls the default entity spawn method. It is, as is normal of new tags now, both chainable and invertable. Format is simply ':modspawn'.

The second tag added was the Players tag. Searchs for a number of players within a certain range. Both min and max search range and number of players are settable. Format is ':player,minSearch,maxSearch,min#,max#'.

Light and Torchlight tags are now invertable.

The last new tag is the Origin tag. This is a range tag in the same vein as light or torchlight.The difference is that it checks the distance from the entity to the spawn point instead of the light level. It is both invertible and chain-able. Format ':origin,minDistance,maxDistance'.

Along with the origin tag some improvements were added to the light and torchlight tags. They are now invertible. And an issue in the range colculation for cases where min was greater than max was fixed. The ranges are now as follows:
When max>min, range is min->max.
When min>max, range is max->+INF & -INF->min.


JAS now requests FML to load it after everything. This should resolve issues with JAS not clearing certain mods spawnlists.

The issue where the blockRange rag was not considered valid tag for spawning should be resolved.
Read more ...

JAS v0.7.0 - Tag-able Categories

 Compliant with Minecraft 1.4.7 and 1.5+

Major Changes

  • Categories now allow tags to cutomize output, default tags are auto-generated to provide identical functionality. Entering an empty string (or unreadable) instead of tags will result in pre-0.7.0 behaviour to be used.
  • Custom Entity Categories can be added by entering their names in the extra categories section of CreatureType.cfg


  • Change Sky tag to strict can see sky check (calls to heightmap). 
  • Ground tag ("ground"): Gets top block and iterates downward, ignoring leaves, wood, foliage, and blocks the player can move through.
  • Torch Light tag ("torchLight"): Identical to light tag but ignores time of day.
  • Difficulty tag ("difficulty"): 0-3 to
  • Added tags represented block functions: Liquid, Normal, Opaque, and solidSide.
  • Top Biome Block Tag ("top"): Check if entity is on the "top block" of the biome it is standing in.
  • Filler Biome Block Tag ("fill"): Check if entity is on the "filler block" of the biome it is standing in.

Misc. Changes

  • Allow toggling Spawn logging independent of debug logging. Debug logging still functions as master switch.
Read more ...

Just Another Spawner v0.6.0 (1.4.7/1.5+)

  • Can see sky check was tweaked to check if higher than highest non-opaque block.
  • Two new tags: minSpawnHeight, and maxSpawnHeight. Function as their names imply, identical to the light tag with the exception that min and max are their own tags.
  • Chainable Tags. These are tags that are parsed with either an AND or OR status. Chainable tags are block, light, sky, minSpawnHeight, and maxSpawnHeight. Tags are formatted identically as before, except they can be prefixed by | or & to set their behaviour. Previous versions parsed all tags as OR and this is still the default behaviour.

Chainable Tags

This is the most exciting feature of the update. The feature is best illustrated with examples.


Tag: {!spawn:sky:block,12}
What this means: Don't Spawn this entity unless it can see sky OR it is on a sand block. So this will spawn on the surface anywhere (such as plains), and anywhere there is sand (such as deserts, possibly underground if sand is there).

As mentioned previously, the default behaviour for chainable tags is to OR them. The above is equivalent to {!spawn:sky:|block,12}. Note how the ':' is still required even if '|' or '&' are present. If we change the tag to an '&' the restrictions are only activated if both restrictions are valid.


Tag: {!spawn:sky:&block,12}
What this means: Don't Spawn this entity unless it can see sky AND it is on a sand block. So this entity will only spawn on the surface with sand. (Such as surface of deserts).


Chainable tags are parsed left to right and can be interrupted with non-chainable tags at will.
Tag: {!spawn:sky:cap,10:&block,12}
What this means: Nothing has changed, sky and &block are parsed as above. Except the entity also has an entity cap of 10.


Chainable tags may also be inserted multiple times for complex effects.
Tag: {!spawn:sky:&block,2:block,87}
What this means: The above entity has two valid cases it will spawn. First, if it is on sand and can see sky. The Second is if it on netherack.
Read more ...

New Brewing Stands

Slowly work continues on the potion Rewrite. Most of the underlying work is complete, including two shiny Brewing stands. These are necessary since the vanilla brewing stand, for compatibility reasons, will not be able to brew PZ Potions.

Read more ...

Project Zulu v0.6.3 Released

New module introduced Dungeon. Which will hold a finite number of adventure map focused items. The First edition is the Limited Mob Spawner, a Spawner with a GUI.

Limited Mob Spawner
Contained in Module: Dungeon


A Custom Mob Spawner functionally identical to the vanilla spawner with the obvious exception of having a GUI to control key properties. It can only be accessed when in Creative mode. It will also only function while in Creative.

Spawn Delay has an associated minimum and maximum which controls how long after a mob spawns that another mob will be spawned.
Activation Range controls how close a non-creative player must get to activate the mob spawner.
Max Nearby controls the maximum, of the current entity it is trying to spawn, can be nearby before it will try to spawn another one.
Max Spawn is a new property that controls the maximum number of creature will be spawned from the mob spawner before it will remove it self. Note that a value of 0 will spawn creatures indefinitely.

A mob spawner can be setup to cycle through several different creatures by inputting the creature full name and an associated weighted chance. The button marked by an ellipsis will toggle a scroll list containing displaying select able entities. The Option button will toggle the ability to select a sound to be played when the creature spawns.

Custom sounds can be loaded by placing .ogg files into the config/Project Zulu/CustomResources directory that is created on start-up.
Read more ...