package crazypants.enderio.enderface; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.Container; import net.minecraft.util.Vec3; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import crazypants.enderio.network.PacketHandler; public class PacketOpenServerGUI implements IMessage, IMessageHandler<PacketOpenServerGUI, IMessage> { int x; int y; int z; int side; Vec3 hitVec; public PacketOpenServerGUI() { } public PacketOpenServerGUI(int x, int y, int z, int side, Vec3 hitVec) { this.x = x; this.y = y; this.z = z; this.side = side; this.hitVec = hitVec; } @Override public void toBytes(ByteBuf buffer) { buffer.writeInt(x); buffer.writeInt(y); buffer.writeInt(z); buffer.writeInt(side); buffer.writeDouble(hitVec.xCoord); buffer.writeDouble(hitVec.yCoord); buffer.writeDouble(hitVec.zCoord); } @Override public void fromBytes(ByteBuf buffer) { x = buffer.readInt(); y = buffer.readInt(); z = buffer.readInt(); side = buffer.readInt(); hitVec = Vec3.createVectorHelper(buffer.readDouble(), buffer.readDouble(), buffer.readDouble()); } public IMessage onMessage(PacketOpenServerGUI message, MessageContext ctx) { EntityPlayerMP player = (EntityPlayerMP) ctx.getServerHandler().playerEntity; Container c = player.openContainer; PacketHandler.INSTANCE.sendTo(new PacketLockClientContainer(player.openContainer.windowId), player); Vec3 hitVec = message.hitVec; player.theItemInWorldManager.activateBlockOrUseItem(player, player.worldObj, null, message.x, message.y, message.z, message.side, (float) hitVec.xCoord, (float) hitVec.yCoord, (float) hitVec.zCoord); player.theItemInWorldManager.thisPlayerMP = player; if (c != player.openContainer) { EnderIOController.INSTANCE.addContainer(player, player.openContainer); } else { PacketHandler.INSTANCE.sendTo(new PacketLockClientContainer(), player); } return null; } }