Search in sources :

Example 1 with AxeHarvestingTarget

use of crazypants.enderio.base.farming.harvesters.AxeHarvestingTarget 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;
}
Also used : HarvestResult(crazypants.enderio.base.farming.farmers.HarvestResult) IBlockState(net.minecraft.block.state.IBlockState) AxeHarvestingTarget(crazypants.enderio.base.farming.harvesters.AxeHarvestingTarget) IHarvestingTarget(crazypants.enderio.base.farming.harvesters.IHarvestingTarget) NNList(com.enderio.core.common.util.NNList) Block(net.minecraft.block.Block) BlockPos(net.minecraft.util.math.BlockPos)

Aggregations

NNList (com.enderio.core.common.util.NNList)1 HarvestResult (crazypants.enderio.base.farming.farmers.HarvestResult)1 AxeHarvestingTarget (crazypants.enderio.base.farming.harvesters.AxeHarvestingTarget)1 IHarvestingTarget (crazypants.enderio.base.farming.harvesters.IHarvestingTarget)1 Block (net.minecraft.block.Block)1 IBlockState (net.minecraft.block.state.IBlockState)1 BlockPos (net.minecraft.util.math.BlockPos)1