GenLoader is a mod that is designed with two goal in mind: to allow the end user to customize and add generation to the game that they want, and for mods to easily make their ore generation completely customizable. I made this when there was not going to be any CoFH mods for 1.8.9 because I thought it would be nice for pack makers to have. Now that it is announced that they are working on 1.8.9 versions of their mods I have decided to still release it because it contains a few features that I am quite happy with and I've worked hard to create a friendly to use API for it.
Gen Loader has a few key features that I'll expand on including
- An API that can handle other mods' ore generation, making it completely customizable with very little effort on their part.
- Vanilla generation disabling - and the ability to overwrite vanilla's generation through this mod.
- Completely open opportunities for the end user to create their own custom generations.
- A handful of helpful commands and data dumps.
I encourage other modders to use this mod as a soft dependency at minimum and a hard dependency if they want to. You can register "disabled-by-default" generation schemes that are useful for if the user wants to customize their gen, they will have a printed generation scheme that they can chose to enable and tweak. You can also just register generations to be enabled by default and they will be handled completely by this mod.
You can set specific categories that will get written out as separate json files for a well organized file structure that is easy to navigate.
Through the API, blocks can be registered to be added to predefined whitelists for clear and countblock commands.
If you want to have more control over vanilla generation you can chose to disable it in the GenLoader's configs and then enable the generation schemes that I have set up that by default exactly mirror what vanilla generation setting are, but can then be tweaked to your specifications.
Currently when you start up a game instance in post Init, they are rewritten everytime for new blocks. All of the registered blocks will print out all of their possible block states to json files in a folder in the GenLoader config directory. They are organized my mod ID in order to make finding blocks easy.
An example of the json object for a block would be
Check the dumped files in *configFolder*/genloader/dumps/blocks for more examples.
GenLoader's commands all start off with /genloader and there are currently 2, everything is tab-complete compatible, it's very convenient to use.
countblocks is used as follows:
/genloader countblock xchunkmin xchunkmax zchunkmin zchunkmax modid:blockname property property value
/genloader countblock xchunkmin xchunkmax zchunkmin zchunkmax premadelistname (eg valuable)
You can use tab-complete after /genloader and then again after countblocks. By default it chooses a 5x5 chunk area around the player. "valuable" is a predefined list that mods can add their blocks to via the API that by default contains vanilla ores. "valuable" could be replaced by minecraft:coal_ore to count the number of coal. Specific states can be found using a repeating "property value" pattern after the mod and block name.
This shows an example of specifying a property for stone named variant and the property value of diorite for diorite stone. Check the data dump files for block states.
clearblocks does something similar to countblocks except it removes the specified block from the world, it is called in the same manner.
Running the command shown has this effect on the world, only works in creative mode. "Junk" leaves behind all registered ores in the API, if you want to be more specific, start with removing stone, then dirt and grass etc.
Things that you can specify in generations:
- Dimensions - list of integer ids
- BiomeType - list of forge biomedictionary types
- BiomeID - more specific list of specific individual biomes
- Minumum Y value
- Maximum Y Value
- Chance - the percent chance that the chunk will run the generation (good for really rare ores)
- Frequency - the number of times the generation will be run in a chunk
- Generation type - growing list of generations that I have
- Standard ore gen (most vanilla ores)
- Weighted ore gen (lapis)
- Generation Priority - when in the order of generations this one will occur
- Weighted Blocklist - all the blocks that can make up the generation, chosen based on their weight value
- Blockstate to replace - most often stone, can be dirt etc.
Example for Emerald
More Documentation will come soon!