package crazypants.enderio.machine.farm.farmers;
import net.minecraft.block.Block;
import net.minecraft.block.BlockLog;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Direction;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import com.enderio.core.common.util.BlockCoord;
import crazypants.enderio.config.Config;
import crazypants.enderio.machine.farm.TileFarmStation;
public class CocoaFarmer extends CustomSeedFarmer
{
public CocoaFarmer()
{
super(Blocks.cocoa, new ItemStack(Items.dye,1,3));
this.requiresFarmland = false;
if (!Config.farmHarvestJungleWhenCocoa) {
this.disableTreeFarm = true;
}
}
@Override
public boolean canHarvest(TileFarmStation farm, BlockCoord bc, Block block, int meta)
{
return block == getPlantedBlock() && (meta &12)>>2>=2;
}
@Override
protected boolean plant(TileFarmStation farm, World worldObj, BlockCoord bc)
{
worldObj.setBlock(bc.x, bc.y, bc.z, Blocks.air, 0, 1 | 2);
int dir = getPlantDirection(worldObj,bc);
if (dir<0) return false;
worldObj.setBlock(bc.x, bc.y, bc.z, getPlantedBlock(), Direction.facingToDirection[dir], 1 | 2);
farm.actionPerformed(false);
return true;
}
@Override
protected boolean canPlant(World worldObj, BlockCoord bc)
{
return getPlantDirection(worldObj,bc)>0;
}
private int getPlantDirection(World worldObj, BlockCoord bc)
{
if (!worldObj.isAirBlock(bc.x,bc.y,bc.z)) return -1;
for (int i = 2; i<6; i++)
{
ForgeDirection dir = ForgeDirection.getOrientation(i);
int x = bc.x+dir.offsetX;
int y = bc.y+dir.offsetY;
int z = bc.z+dir.offsetZ;
if (validBlock( worldObj.getBlock(x, y,z), worldObj.getBlockMetadata(x,y,z)))return i;
}
return -1;
}
private boolean validBlock(Block block, int metadata)
{
return block == Blocks.log && BlockLog.func_150165_c(metadata) == 3;
}
}