@Override protected boolean activateMachine() { BlockPosition targetCoords = getNextTree(); if (targetCoords == null) { setIdleTicks(getIdleTicksMax()); return false; } Block harvestedBlock = worldObj.getBlock(targetCoords.x, targetCoords.y, targetCoords.z); int harvestedBlockMetadata = worldObj.getBlockMetadata(targetCoords.x, targetCoords.y, targetCoords.z); IFactoryFruit harvestable = MFRRegistry.getFruits().get(harvestedBlock); List<ItemStack> drops = harvestable.getDrops(worldObj, _rand, targetCoords.x, targetCoords.y, targetCoords.z); ReplacementBlock replacement = harvestable.getReplacementBlock(worldObj, targetCoords.x, targetCoords.y, targetCoords.z); harvestable.prePick(worldObj, targetCoords.x, targetCoords.y, targetCoords.z); if (replacement == null) { if (!worldObj.setBlockToAir(targetCoords.x, targetCoords.y, targetCoords.z)) return false; if (MFRConfig.playSounds.getBoolean(true)) { worldObj.playAuxSFXAtEntity( null, 2001, targetCoords.x, targetCoords.y, targetCoords.z, Block.getIdFromBlock(harvestedBlock) + (harvestedBlockMetadata << 12)); } } else { if (!replacement.replaceBlock(worldObj, targetCoords.x, targetCoords.y, targetCoords.z, null)) return false; } doDrop(drops); // TODO: sludge? harvestable.postPick(worldObj, targetCoords.x, targetCoords.y, targetCoords.z); return true; }