public void extendRange(Entity entity, double amount) { if (entity instanceof EntityPlayerMP) { PlayerInteractionManager mgr = ((EntityPlayerMP) entity).interactionManager; double reach = mgr.getBlockReachDistance(); mgr.setBlockReachDistance(reach + amount); } }
@Redirect(method = "processPacket", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/play/INetHandlerPlayServer;processTryUseItemOnBlock(Lnet/minecraft/network/play/client/CPacketPlayerTryUseItemOnBlock;)V")) public void handleUseItemPacket(INetHandlerPlayServer server, CPacketPlayerTryUseItemOnBlock packetIn) { INHPServerVW vw = (INHPServerVW) (NetHandlerPlayServer) server; vw.checkForPacketEnqueueTrap(packetIn); EntityPlayerMP player = vw.getEntityPlayerFromHandler(); BlockPos packetPos = packetIn.getPos(); PlayerDataBackup playerBackup = new PlayerDataBackup(player); PhysicsWrapperEntity wrapper = ValkyrienWarfareMod.physicsManager.getObjectManagingPos(player.world, packetPos); if (player.interactionManager.getBlockReachDistance() != vw.dummyBlockReachDist()) { vw.lastGoodBlockReachDist(player.interactionManager.getBlockReachDistance()); } if (wrapper != null) { player.interactionManager.setBlockReachDistance(vw.dummyBlockReachDist()); } if (wrapper != null && wrapper.wrapping.coordTransform != null) { RotationMatrices.applyTransform(wrapper.wrapping.coordTransform.wToLTransform, wrapper.wrapping.coordTransform.wToLRotation, player); if (player.getHeldItem(packetIn.getHand()) != null && player.getHeldItem(packetIn.getHand()).getItem() instanceof ItemBucket) { player.interactionManager.setBlockReachDistance(vw.lastGoodBlockReachDist()); } try { server.processTryUseItemOnBlock(packetIn); } catch (Exception e) { e.printStackTrace(); } playerBackup.restorePlayerToBackup(); } else { server.processTryUseItemOnBlock(packetIn); } player.interactionManager.setBlockReachDistance(vw.lastGoodBlockReachDist()); }
@Redirect(method = "processPacket", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/play/INetHandlerPlayServer;processUpdateSign(Lnet/minecraft/network/play/client/CPacketUpdateSign;)V")) public void handleUpdateSignPacket(INetHandlerPlayServer server, CPacketUpdateSign packetIn) { EntityPlayerMP player = ((NetHandlerPlayServer) server).player; INHPServerVW vw = (INHPServerVW) (NetHandlerPlayServer) server; BlockPos packetPos = packetIn.getPosition(); PlayerDataBackup playerBackup = new PlayerDataBackup(player); PhysicsWrapperEntity wrapper = ValkyrienWarfareMod.physicsManager.getObjectManagingPos(player.world, packetPos); if (player.interactionManager.getBlockReachDistance() != vw.dummyBlockReachDist()) { vw.lastGoodBlockReachDist(player.interactionManager.getBlockReachDistance()); } if (wrapper != null) { player.interactionManager.setBlockReachDistance(vw.dummyBlockReachDist()); } if (wrapper != null && wrapper.wrapping.coordTransform != null) { RotationMatrices.applyTransform(wrapper.wrapping.coordTransform.wToLTransform, wrapper.wrapping.coordTransform.wToLRotation, player); server.processUpdateSign(packetIn); RotationMatrices.applyTransform(wrapper.wrapping.coordTransform.lToWTransform, wrapper.wrapping.coordTransform.lToWRotation, player); playerBackup.restorePlayerToBackup(); } else { server.processUpdateSign(packetIn); } player.interactionManager.setBlockReachDistance(vw.lastGoodBlockReachDist()); } }
@Redirect(method = "processPacket", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/play/INetHandlerPlayServer;processPlayerDigging(Lnet/minecraft/network/play/client/CPacketPlayerDigging;)V")) public void handleDiggingPacket(INetHandlerPlayServer server, CPacketPlayerDigging packetIn) { INHPServerVW vw = (INHPServerVW) (NetHandlerPlayServer) server; vw.checkForPacketEnqueueTrap(packetIn); EntityPlayerMP player = vw.getEntityPlayerFromHandler(); BlockPos packetPos = packetIn.getPosition(); PlayerDataBackup playerBackup = new PlayerDataBackup(player); PhysicsWrapperEntity wrapper = ValkyrienWarfareMod.physicsManager.getObjectManagingPos(player.world, packetPos); if (player.interactionManager.getBlockReachDistance() != vw.dummyBlockReachDist()) { vw.lastGoodBlockReachDist(player.interactionManager.getBlockReachDistance()); } if (wrapper != null) { player.interactionManager.setBlockReachDistance(vw.dummyBlockReachDist()); } if (wrapper != null && wrapper.wrapping.coordTransform != null) { RotationMatrices.applyTransform(wrapper.wrapping.coordTransform.wToLTransform, wrapper.wrapping.coordTransform.wToLRotation, player); server.processPlayerDigging(packetIn); RotationMatrices.applyTransform(wrapper.wrapping.coordTransform.lToWTransform, wrapper.wrapping.coordTransform.lToWRotation, player); playerBackup.restorePlayerToBackup(); } else { server.processPlayerDigging(packetIn); } player.interactionManager.setBlockReachDistance(vw.lastGoodBlockReachDist()); }