package crazypants.enderio.machine.farm.farmers; import java.util.ArrayList; import java.util.List; import net.minecraft.block.Block; import net.minecraft.entity.item.EntityItem; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import com.enderio.core.common.util.BlockCoord; import crazypants.enderio.machine.farm.FarmStationContainer; import crazypants.enderio.machine.farm.TileFarmStation; public class FlowerPicker implements IFarmerJoe { protected List<Block> flowers = new ArrayList<Block>(); public FlowerPicker() { } public FlowerPicker add(Block... flowers) { for (Block block : flowers) { if (block != null) { this.flowers.add(block); FarmStationContainer.slotItemsProduce.add(new ItemStack(block)); } } return this; } @Override public boolean prepareBlock(TileFarmStation farm, BlockCoord bc, Block block, int meta) { return false; } @Override public boolean canHarvest(TileFarmStation farm, BlockCoord bc, Block block, int meta) { for (Block flower : flowers) { if (block == flower) { return true; } } return false; } @Override public boolean canPlant(ItemStack stack) { return false; } @Override public IHarvestResult harvestBlock(TileFarmStation farm, BlockCoord bc, Block block, int meta) { if(!farm.hasHoe()) { farm.setNotification(TileFarmStation.NOTIFICATION_NO_HOE); return null; } World worldObj = farm.getWorldObj(); List<EntityItem> result = new ArrayList<EntityItem>(); ArrayList<ItemStack> drops = block.getDrops(worldObj, bc.x, bc.y, bc.z, meta, farm.getMaxLootingValue()); farm.damageHoe(1, bc); farm.actionPerformed(false); if(drops != null) { for (ItemStack stack : drops) { result.add(new EntityItem(worldObj, bc.x + 0.5, bc.y + 0.5, bc.z + 0.5, stack.copy())); } } worldObj.setBlockToAir(bc.x, bc.y, bc.z); return new HarvestResult(result, bc); } }