/** * Updates the specified entity's position by the specified relative moment and absolute rotation. Note that * subclassing of the packet allows for the specification of a subset of this data (e.g. only rel. position, abs. * rotation or both). */ public void handleEntityMovement(SPacketEntity packetIn) { PacketThreadUtil.checkThreadAndEnqueue(packetIn, this, this.gameController); Entity entity = packetIn.getEntity(this.clientWorldController); if (entity != null) { entity.serverPosX += (long)packetIn.getX(); entity.serverPosY += (long)packetIn.getY(); entity.serverPosZ += (long)packetIn.getZ(); double d0 = (double)entity.serverPosX / 4096.0D; double d1 = (double)entity.serverPosY / 4096.0D; double d2 = (double)entity.serverPosZ / 4096.0D; if (!entity.canPassengerSteer()) { float f = packetIn.isRotating() ? (float)(packetIn.getYaw() * 360) / 256.0F : entity.rotationYaw; float f1 = packetIn.isRotating() ? (float)(packetIn.getPitch() * 360) / 256.0F : entity.rotationPitch; entity.setPositionAndRotationDirect(d0, d1, d2, f, f1, 3, false); entity.onGround = packetIn.getOnGround(); } } }
@SideOnly(Side.CLIENT) @Hook("net.minecraft.network.play.server.SPacketEntity#func_149065_a") public static Hook.Result getEntity(SPacketEntity packet, World world) { EntityPlayer player = Minecraft.getMinecraft().player; if (player != null) { IFollower follower = (IFollower) IFollower.follower.get(player); if (follower != null && follower.getProjectionState() && world.getEntityByID(packet.entityId) == follower) return Hook.Result.NULL; } return Hook.Result.VOID; }
public void teleport(EntityPlayer player, BlockPos pos, int dimension) { EntityPlayerMP playerMP = (EntityPlayerMP) player; playerMP.setPositionAndUpdate(pos.getX()+0.5, pos.getY(), pos.getZ()+0.5); playerMP.motionX = playerMP.motionY = playerMP.motionZ = 0; playerMP.setPositionAndUpdate(pos.getX()+0.5, pos.getY(), pos.getZ()+0.5); if (player.world.provider.getDimension() != dimension) playerMP.mcServer.getPlayerList().transferPlayerToDimension(playerMP, dimension, this); playerMP.setPositionAndUpdate(pos.getX()+0.5, pos.getY(), pos.getZ()+0.5); playerMP.connection.sendPacket(new SPacketEntityTeleport(playerMP)); playerMP.connection.sendPacket(new SPacketEntity(playerMP.getEntityId())); }
/** * Updates the specified entity's position by the specified relative moment and absolute rotation. Note that * subclassing of the packet allows for the specification of a subset of this data (e.g. only rel. position, abs. * rotation or both). */ void handleEntityMovement(SPacketEntity packetIn);