if (tool != null && !ForgeHooks.canToolHarvestBlock(world, blockToMine, tool) && curBlock != Blocks.BEDROCK && curBlock.getHarvestTool(world.getBlockState(blockToMine)) != null)
/** * Mines all ore veins in a Box around the player. */ protected void mineOreVeinsInAOE(ItemStack stack, EntityPlayer player, EnumHand hand) { if (player.getEntityWorld().isRemote || ProjectEConfig.items.disableAllRadiusMining) { return; } int offset = this.getCharge(stack) + 3; AxisAlignedBB box = player.getEntityBoundingBox().grow(offset); List<ItemStack> drops = new ArrayList<>(); World world = player.getEntityWorld(); for (BlockPos pos : WorldHelper.getPositionsFromBox(box)) { IBlockState state = world.getBlockState(pos); if (ItemHelper.isOre(state) && state.getBlockHardness(player.getEntityWorld(), pos) != -1 && (canHarvestBlock(state, stack) || ForgeHooks.canToolHarvestBlock(world, pos, stack))) { WorldHelper.harvestVein(world, player, stack, pos, state, drops, 0); } } if (!drops.isEmpty()) { WorldHelper.createLootDrop(drops, world, player.posX, player.posY, player.posZ ); PlayerHelper.swingItem(player, hand); } } }
/** * Scans and harvests an ore vein. This is called already knowing the mop is pointing at an ore or gravel. */ protected void tryVeinMine(ItemStack stack, EntityPlayer player, RayTraceResult mop) { if (player.getEntityWorld().isRemote || ProjectEConfig.items.disableAllRadiusMining) { return; } AxisAlignedBB aabb = WorldHelper.getBroadDeepBox(mop.getBlockPos(), mop.sideHit, getCharge(stack)); IBlockState target = player.getEntityWorld().getBlockState(mop.getBlockPos()); if (target.getBlockHardness(player.getEntityWorld(), mop.getBlockPos()) <= -1 || !(canHarvestBlock(target, stack) || ForgeHooks.canToolHarvestBlock(player.getEntityWorld(), mop.getBlockPos(), stack))) { return; } List<ItemStack> drops = new ArrayList<>(); for (BlockPos pos : WorldHelper.getPositionsFromBox(aabb)) { IBlockState state = player.getEntityWorld().getBlockState(pos); if (isSameOre(target, state)) { WorldHelper.harvestVein(player.getEntityWorld(), player, stack, pos, state, drops, 0); } } WorldHelper.createLootDrop(drops, player.getEntityWorld(), mop.getBlockPos()); if (!drops.isEmpty()) { player.getEntityWorld().playSound(null, player.posX, player.posY, player.posZ, PESounds.DESTRUCT, SoundCategory.PLAYERS, 1.0F, 1.0F); } }
&& (canHarvestBlock(state, stack) || ForgeHooks.canToolHarvestBlock(world, digPos, stack)) && PlayerHelper.hasBreakPermission(((EntityPlayerMP) player), digPos))