package crazypants.enderio.machine.crafter; import io.netty.buffer.ByteBuf; import net.minecraft.item.ItemStack; import com.enderio.core.common.network.MessageTileEntity; import cpw.mods.fml.common.network.ByteBufUtils; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; public class PacketCrafter extends MessageTileEntity<TileCrafter> implements IMessageHandler<PacketCrafter, IMessage> { private int slot; private ItemStack stack; public PacketCrafter() { } private PacketCrafter(TileCrafter tile) { super(tile); } public static PacketCrafter setSlot(TileCrafter te, int slot, ItemStack stack) { PacketCrafter msg = new PacketCrafter(te); msg.slot = slot; msg.stack = stack; msg.execute(te); return msg; } @Override public void fromBytes(ByteBuf buf) { super.fromBytes(buf); slot = buf.readShort(); stack = ByteBufUtils.readItemStack(buf); } @Override public void toBytes(ByteBuf buf) { super.toBytes(buf); buf.writeShort(slot); ByteBufUtils.writeItemStack(buf, stack); } @Override public IMessage onMessage(PacketCrafter msg, MessageContext ctx) { TileCrafter te = msg.getTileEntity(ctx.getServerHandler().playerEntity.worldObj); if(te != null) { msg.execute(te); } return null; } private void execute(TileCrafter te) { te.craftingGrid.setInventorySlotContents(slot, stack); te.updateCraftingOutput(); } }