Implement Harvest Ritual
Currently only a handler for standard crops (wheat, carrots, etc) is implemented.
This commit is contained in:
parent
39015f05a6
commit
5744d19ca9
6 changed files with 309 additions and 2 deletions
|
@ -9,16 +9,18 @@ import net.minecraft.world.World;
|
|||
import net.minecraftforge.fml.common.registry.GameData;
|
||||
|
||||
@Getter
|
||||
@EqualsAndHashCode
|
||||
@EqualsAndHashCode(exclude = { "state" })
|
||||
public class BlockStack
|
||||
{
|
||||
private final Block block;
|
||||
private final int meta;
|
||||
private final IBlockState state;
|
||||
|
||||
public BlockStack(Block block, int meta)
|
||||
{
|
||||
this.block = block;
|
||||
this.meta = meta;
|
||||
this.state = block.getStateFromMeta(meta);
|
||||
}
|
||||
|
||||
public BlockStack(Block block)
|
||||
|
@ -35,6 +37,6 @@ public class BlockStack
|
|||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return GameData.getBlockRegistry().getNameForObject(block) + ":" + meta;
|
||||
return GameData.getBlockRegistry().getNameForObject(getBlock()) + ":" + getMeta();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
package WayofTime.bloodmagic.api.iface;
|
||||
|
||||
import WayofTime.bloodmagic.api.BlockStack;
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
/**
|
||||
* Used to define a HarvestHandler for the Harvest Ritual.
|
||||
*/
|
||||
public interface IHarvestHandler
|
||||
{
|
||||
/**
|
||||
* Called whenever the Harvest Ritual attempts to harvest a block.
|
||||
* <br>
|
||||
* Use this to break the block, plant a new one, and drop the produced items.
|
||||
* <br>
|
||||
* Make sure to do checks so you are certain the blocks being handled
|
||||
* are the block types you want.
|
||||
*
|
||||
* @param world
|
||||
* - The world the {@link WayofTime.bloodmagic.api.ritual.IMasterRitualStone} is in.
|
||||
* @param pos
|
||||
* - The position of the Block being checked
|
||||
* @param blockStack
|
||||
* - The Block being checked
|
||||
*
|
||||
* @return If the block was successfully harvested.
|
||||
*/
|
||||
boolean harvestAndPlant(World world, BlockPos pos, BlockStack blockStack);
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
package WayofTime.bloodmagic.api.registry;
|
||||
|
||||
import WayofTime.bloodmagic.api.BlockStack;
|
||||
import WayofTime.bloodmagic.api.iface.IHarvestHandler;
|
||||
import net.minecraft.block.Block;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class HarvestRegistry
|
||||
{
|
||||
private static List<IHarvestHandler> handlerList = new ArrayList<IHarvestHandler>();
|
||||
private static Map<Block, Integer> validBlocks = new HashMap<Block, Integer>();
|
||||
private static Map<BlockStack, Integer> amplifierMap = new HashMap<BlockStack, Integer>();
|
||||
|
||||
/**
|
||||
* Registers a handler for the Harvest Ritual to call.
|
||||
*
|
||||
* @param handler
|
||||
* - The custom handler to register
|
||||
*/
|
||||
public static void registerHandler(IHarvestHandler handler)
|
||||
{
|
||||
if (!handlerList.contains(handler))
|
||||
handlerList.add(handler);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a standard crop (IE: Wheat, Carrots, Potatoes, Netherwart, etc) for
|
||||
* the {@link WayofTime.bloodmagic.ritual.harvest.HarvestHandlerPlantable} handler
|
||||
* to handle.
|
||||
*
|
||||
* @param crop
|
||||
* - The crop block to handle.
|
||||
* @param matureMeta
|
||||
* - The meta value at which the crop is considered mature
|
||||
* and ready to be harvested.
|
||||
*/
|
||||
public static void registerStandardCrop(Block crop, int matureMeta)
|
||||
{
|
||||
if (!validBlocks.containsKey(crop))
|
||||
validBlocks.put(crop, matureMeta);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a range amplifier for the Harvest Ritual.
|
||||
*
|
||||
* @param blockStack
|
||||
* - The block for the amplifier.
|
||||
* @param range
|
||||
* - The range the amplifier provides.
|
||||
*/
|
||||
public static void registerRangeAmplifier(BlockStack blockStack, int range)
|
||||
{
|
||||
if (!amplifierMap.containsKey(blockStack))
|
||||
amplifierMap.put(blockStack, range);
|
||||
}
|
||||
|
||||
public static List<IHarvestHandler> getHandlerList() {
|
||||
return handlerList;
|
||||
}
|
||||
|
||||
public static Map<Block, Integer> getValidBlocks() {
|
||||
return validBlocks;
|
||||
}
|
||||
|
||||
public static Map<BlockStack, Integer> getAmplifierMap() {
|
||||
return amplifierMap;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue