diff options
Diffstat (limited to 'src/Java/powercrystals/minefactoryreloaded/farmables/plantables')
-rw-r--r-- | src/Java/powercrystals/minefactoryreloaded/farmables/plantables/PlantableStandard.java | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/src/Java/powercrystals/minefactoryreloaded/farmables/plantables/PlantableStandard.java b/src/Java/powercrystals/minefactoryreloaded/farmables/plantables/PlantableStandard.java new file mode 100644 index 0000000000..022d947150 --- /dev/null +++ b/src/Java/powercrystals/minefactoryreloaded/farmables/plantables/PlantableStandard.java @@ -0,0 +1,116 @@ +package powercrystals.minefactoryreloaded.farmables.plantables; + +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.common.IPlantable; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.oredict.OreDictionary; +import powercrystals.minefactoryreloaded.api.IFactoryPlantable; +import powercrystals.minefactoryreloaded.api.ReplacementBlock; + +/* + * Used for directly placing blocks (ie saplings) and items (ie sugarcane). Pass in source ID to constructor, + * so one instance per source ID. + */ + +public class PlantableStandard implements IFactoryPlantable +{ + public static final int WILDCARD = OreDictionary.WILDCARD_VALUE; + + protected Item _seed; + protected Block _block; + protected ReplacementBlock _plantedBlock; + protected int _validMeta; + + public PlantableStandard(Block block) + { + this(Item.getItemFromBlock(block), block); + } + + public PlantableStandard(Block block, Block plantedBlock) + { + this(Item.getItemFromBlock(block), plantedBlock); + } + + public PlantableStandard(Item block, Block plantedBlock) + { + this(block, plantedBlock, WILDCARD); + } + + public PlantableStandard(Block block, int meta) + { + this(Item.getItemFromBlock(block), block, meta); + } + + public PlantableStandard(Block block, Block plantedBlock, int meta) + { + this(Item.getItemFromBlock(block), plantedBlock, meta); + } + + public PlantableStandard(Item block, Block plantedBlock, int validMeta) + { + this(block, plantedBlock, validMeta, new ReplacementBlock(plantedBlock)); + } + + public PlantableStandard(Item block, Block plantedBlock, int validMeta, int plantedMeta) + { + this(block, plantedBlock, validMeta, new ReplacementBlock(plantedBlock).setMeta(plantedMeta)); + } + + public PlantableStandard(Item block, Block plantedBlock, int validMeta, boolean useItemMeta) + { + this(block, plantedBlock, validMeta, new ReplacementBlock(plantedBlock).setMeta(useItemMeta)); + } + + public PlantableStandard(Item block, Block plantedBlock, int validMeta, ReplacementBlock repl) + { + _seed = block; + _block = plantedBlock; + _validMeta = validMeta; + _plantedBlock = repl; + } + + @Override + public boolean canBePlanted(ItemStack stack, boolean forFermenting) + { + return _validMeta == WILDCARD || stack.getItemDamage() == _validMeta; + } + + @Override + public boolean canBePlantedHere(World world, int x, int y, int z, ItemStack stack) + { + if (!world.isAirBlock(x, y, z)) + return false; + + Block groundId = world.getBlock(x, y - 1, z); + return (_block.canPlaceBlockAt(world, x, y, z) && _block.canReplace(world, x, y, z, 0, stack)) || + (_block instanceof IPlantable && groundId != null && + groundId.canSustainPlant(world, x, y, z, ForgeDirection.UP, (IPlantable)_block)); + } + + @Override + public void prePlant(World world, int x, int y, int z, ItemStack stack) + { + return; + } + + @Override + public void postPlant(World world, int x, int y, int z, ItemStack stack) + { + return; + } + + @Override + public ReplacementBlock getPlantedBlock(World world, int x, int y, int z, ItemStack stack) + { + return _plantedBlock; + } + + @Override + public Item getSeed() + { + return _seed; + } +} |