use of crazypants.enderio.base.farming.harvesters.IHarvestingTarget in project EnderIO by SleepyTrousers.
the class ItemDarkSteelAxe method onBlockStartBreak.
@Override
public boolean onBlockStartBreak(@Nonnull ItemStack itemstack, @Nonnull BlockPos pos, @Nonnull EntityPlayer player) {
if (!player.world.isRemote && !player.isSneaking() && EnergyUpgradeManager.itemHasAnyPowerUpgrade(itemstack)) {
IBlockState bs = player.world.getBlockState(pos);
Block block = bs.getBlock();
if (FarmersRegistry.isLog(block)) {
int powerStored = EnergyUpgradeManager.getEnergyStored(itemstack);
HarvestResult res = new HarvestResult();
final IHarvestingTarget target = new AxeHarvestingTarget(bs, pos);
TreeHarvester.harvest(player.world, pos, res, target);
NNList<BlockPos> sortedTargets = new NNList<BlockPos>(res.getHarvestedBlocks());
harvestComparator.refPoint = pos;
Collections.sort(sortedTargets, harvestComparator);
int maxBlocks = powerStored / Config.darkSteelAxePowerUsePerDamagePointMultiHarvest;
int numUsedPower = 0;
for (int i = 0; numUsedPower < maxBlocks && i < sortedTargets.size(); i++) {
if (doMultiHarvest(player, player.world, sortedTargets.get(i), block)) {
numUsedPower++;
}
}
return numUsedPower != 0;
}
}
return false;
}
use of crazypants.enderio.base.farming.harvesters.IHarvestingTarget in project EnderIO by SleepyTrousers.
the class TreeFarmer method harvestBlock.
@Override
public IHarvestResult harvestBlock(@Nonnull IFarmer farm, @Nonnull BlockPos bc, @Nonnull Block block, @Nonnull IBlockState meta) {
setupHarvesting(farm, bc);
if (!hasAxe) {
farm.setNotification(FarmNotification.NO_AXE);
return null;
}
final World world = farm.getWorld();
final HarvestResult res = new HarvestResult();
final IHarvestingTarget target = new FarmHarvestingTarget(this, farm);
TreeHarvester.harvest(world, bc, res, target);
Collections.sort(res.getHarvestedBlocks(), comp);
List<BlockPos> actualHarvests = new ArrayList<BlockPos>();
for (int i = 0; i < res.getHarvestedBlocks().size() && hasAxe; i++) {
final BlockPos coord = res.getHarvestedBlocks().get(i);
harvestSingleBlock(farm, world, res, coord);
actualHarvests.add(coord);
}
res.getHarvestedBlocks().clear();
res.getHarvestedBlocks().addAll(actualHarvests);
tryReplanting(farm, world, bc, res);
return res;
}
Aggregations