public class TeleportPlayerMessage implements IMessage {
public double x, y, z;
public int dim;
public TeleportPlayerMessage() {}
@Override
public void toBytes(ByteBuf buf) {
buf.writeDouble(x);
buf.writeDouble(y);
buf.writeDouble(z);
buf.writeInt(dim);
}
@Override
public void fromBytes(ByteBuf buf) {
x = buf.readDouble();
y = buf.readDouble();
z = buf.readDouble();
dim = buf.readInt();
}
public static class Handler implements IMessageHandler<TeleportPlayerMessage, IMessage> {
@Override
public IMessage onMessage(TeleportPlayerMessage packet, MessageContext message) {
if (message.side.isClient())
act(packet);
else
act(message.getServerHandler().playerEntity, packet);
return null;
}
@SideOnly(Side.CLIENT)
private void act(TeleportPlayerMessage packet) {
Minecraft mc = Minecraft.getMinecraft();
if (packet.dim != mc.thePlayer.dimension) mc.thePlayer.travelToDimension(packet.dim);
mc.thePlayer.setPosition(packet.x, packet.y, packet.z);
}
private void act(EntityPlayerMP player, TeleportPlayerMessage packet) {
if (packet.dim != player.dimension) player.travelToDimension(packet.dim);
player.setPosition(packet.x, packet.y, packet.z);
}
}
}