resetProgress(targetPos); if (fakePlayer.get() != null) { return fakePlayer.get().interactionManager.tryHarvestBlock(targetPos);
public static int applyMultiBreak(World world, BlockPos blockPos, EntityPlayer harvester, ToolBase self, int size) { int conversions = 0; ItemStack selfStack = harvester.getHeldItem(EnumHand.MAIN_HAND); for (int i = -size; i <= size; i++) { for (int j = -size; j <= size; j++) { for (int k = -size; k <= size; k++) { if(i == 0 && j == 0 && k == 0) continue; BlockPos block = blockPos.add(i, j, k); if(!self.isMinableBlock(world.getBlockState(block), selfStack) || !world.canMineBlockBody(harvester, block) || !((EntityPlayerMP) harvester).interactionManager.tryHarvestBlock(block)) continue; conversions++; } } } return conversions; }
resetProgress(targetPos); if (fakePlayer.get() != null) { return fakePlayer.get().interactionManager.tryHarvestBlock(targetPos);
public static int applyTimberAxe(World world, BlockPos blockPos, IBlockState blockState, EntityPlayer harvester, List<ItemStack> drops) { if(harvester.isSneaking() || !GTUtility.isBlockOrePrefixed(world, blockPos, blockState, OrePrefix.log, drops)) return 0; //do not try to convert while shift-clicking or non-log blocks MutableBlockPos mutableBlockPos = new MutableBlockPos(blockPos); int destroyedAmount = 0; while(true) { mutableBlockPos.move(EnumFacing.UP); IBlockState targetState = world.getBlockState(mutableBlockPos); if(targetState != blockState || !world.isBlockModifiable(harvester, mutableBlockPos) || !((EntityPlayerMP) harvester).interactionManager.tryHarvestBlock(mutableBlockPos)) return destroyedAmount; destroyedAmount++; } }
boolean success; try { success = player.interactionManager.tryHarvestBlock(new BlockPos(x, y, z));
@Override public int convertBlockDrops(World world, BlockPos centerPos, IBlockState blockState, EntityPlayer harvester, List<ItemStack> drops, boolean recursive) { int conversionsApplied = ToolUtility.applyHammerDrops(world.rand, blockState, drops, false); if (recursive) //on recursive calls, do not try to break multiple blocks return conversionsApplied; EnumFacing sideHit = ToolUtility.getSideHit(world, centerPos, harvester); ItemStack selfStack = harvester.getHeldItem(EnumHand.MAIN_HAND); for (int x = -1; x < 2; x++) { for (int y = -1; y < 2; y++) { //do not check center block - it's handled now if (x == 0 && y == 0) continue; BlockPos block = rotate(centerPos, x, y, sideHit); if (!isMinableBlock(world.getBlockState(block), selfStack) || !world.canMineBlockBody(harvester, block) || !((EntityPlayerMP) harvester).interactionManager.tryHarvestBlock(block)) continue; conversionsApplied++; } } return conversionsApplied; }
manager.tryHarvestBlock(pos);
resetProgress(targetPos); if (fakePlayer != null && fakePlayer.get() != null) { fakePlayer.get().interactionManager.tryHarvestBlock(targetPos);
@Override public void handleServerMessage(EntityPlayerMP player, PacketDigBlock message, MessageContext ctx) { WorldServer world = player.getServer().getWorld(player.dimension); IBlockState state = world.getBlockState(message.pos); switch (message.type) { case CLICK: if (!player.getServer().isBlockProtected(world, message.pos, player)) { player.interactionManager.onBlockClicked(message.pos, message.side); } else { player.connection.sendPacket(new SPacketBlockChange(world, message.pos)); } break; case HARVEST: player.interactionManager.tryHarvestBlock(message.pos); if (state.getMaterial() != Material.AIR) { player.connection.sendPacket(new SPacketBlockChange(world, message.pos)); } break; case CANCEL: player.interactionManager.cancelDestroyingBlock(); if (state.getMaterial() != Material.AIR) { player.connection.sendPacket(new SPacketBlockChange(world, message.pos)); } break; } } }