Groves

Download this at curseforge.

This mod adds a simple customizable block called a grove.
A grove can be placed anywhere and will, from time to time, check the surrounding area for specific blocks.
If its requirements are satisfied, it may spawn entities or items on the ground.

How do Groves work?

A Grove is a block that, when activated, will try to spawn creatures/items around it.
It is created by activating a Base Grove with a specific item.
It will require certain blocks around it to work.

How do Groves Values work?
A Grove requires a minimum amount of power to work. (lets call it power)
To reach it, blocks need to be placed around it. Blocks around it will give different ammounts of power.

Example:
Right-clicking a Base Grove with an ender star will turn it into a Nether Grove.
The Nether Grove requires 500 power, and when it reaches it, it will spawn Wither Skelletons around it.
To reach it, you need to place blocks around it.
Placing Netherrack will give it 5 power;
Placing Glowstone will give it 10 power.
The Nether Grove will only spawn creatures if it has at least 100 blocks of netherrack around it, or 50 blocks of Glowstone around it.
It can also have any combination between Netherrack and Glowstone, as long as the power reaches 500.

Crafttweaker

This mod is designed around CraftTweaker.
It adds a couple of simple methods to add custom groves and choose the blocks it requires.
It requires two different scripts, one for creating the grove blocks, and another one to add the requirements and results.


example groves file - requires a custom loader

    #loader groves
    
    mods.groves.createGrove("Birch Grove", //name

        16, // radius in blocks
        500, // nr of uses
        200, // spawn cooldown in ticks
        200, // total minumum value
        00FFAA // grove color
    );

example recipe file

    #modloaded minecraft

    mods.groves.addActivationItem("Birch Grove", <minecraft:cobblestone>);
    mods.groves.addBlock("Birch Grove", <minecraft:grass>, 1);
    mods.groves.addBlock("Birch Grove", <minecraft:leaves:2>, 1);
    mods.groves.addBlock("Birch Grove", <minecraft:log:2>, 2);

    mods.groves.addStackSpawn("Birch Grove", <minecraft:leather>, 0.5);

    mods.groves.addEntitySpawn("Birch Grove", "minecraft:donkey", 0.5);