diff options
author | Draknyte1 <Draknyte1@hotmail.com> | 2017-01-17 19:41:46 +1000 |
---|---|---|
committer | Draknyte1 <Draknyte1@hotmail.com> | 2017-01-17 19:41:46 +1000 |
commit | 5834a266fdf425ad56558db71691f9b3b0df5e31 (patch) | |
tree | eb2123fde62da27795417fbe9b6afcd31b383adf /src/Java/powercrystals/minefactoryreloaded/farmables/plantables/PlantableStandard.java | |
parent | 289e41515842ec89d01bfa593504163f75d0950c (diff) | |
download | GT5-Unofficial-5834a266fdf425ad56558db71691f9b3b0df5e31.tar.gz GT5-Unofficial-5834a266fdf425ad56558db71691f9b3b0df5e31.tar.bz2 GT5-Unofficial-5834a266fdf425ad56558db71691f9b3b0df5e31.zip |
% Tried to improve the logic for the Tree Farmer, to support Forestry 4.
% Moved COFH API related files.
+ Added a child mod, for misc handling.
$$ Borrowed some code from MFR, to attempt forestry support. (Credit left, will re-do if I even get it working).
Diffstat (limited to 'src/Java/powercrystals/minefactoryreloaded/farmables/plantables/PlantableStandard.java')
-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; + } +} |