package mekanism.common.network; import io.netty.buffer.ByteBuf; import mekanism.api.Pos3D; import mekanism.common.PacketHandler; import mekanism.common.network.PacketEntityMove.EntityMoveMessage; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; public class PacketEntityMove implements IMessageHandler<EntityMoveMessage, IMessage> { @Override public IMessage onMessage(EntityMoveMessage message, MessageContext context) { EntityPlayer player = PacketHandler.getPlayer(context); PacketHandler.handlePacket(new Runnable() { @Override public void run() { Entity entity = player.worldObj.getEntityByID(message.entityId); if(entity != null) { entity.setLocationAndAngles(message.pos.xCoord, message.pos.yCoord, message.pos.zCoord, entity.rotationYaw, entity.rotationPitch); } } }, player); return null; } public static class EntityMoveMessage implements IMessage { public int entityId; public Pos3D pos; public EntityMoveMessage() {} public EntityMoveMessage(Entity e) { entityId = e.getEntityId(); pos = new Pos3D(e); } @Override public void toBytes(ByteBuf dataStream) { dataStream.writeInt(entityId); dataStream.writeFloat((float)pos.xCoord); dataStream.writeFloat((float)pos.yCoord); dataStream.writeFloat((float)pos.zCoord); } @Override public void fromBytes(ByteBuf dataStream) { entityId = dataStream.readInt(); pos = new Pos3D(dataStream.readFloat(), dataStream.readFloat(), dataStream.readFloat()); } } }