package joshie.harvest.cooking.packet; import io.netty.buffer.ByteBuf; import joshie.harvest.core.helpers.NBTHelper; import joshie.harvest.core.network.Packet; import joshie.harvest.core.network.Packet.Side; import joshie.harvest.core.network.PenguinPacket; import net.minecraft.client.network.NetHandlerPlayClient; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.play.server.SPacketSetSlot; import net.minecraftforge.fml.common.network.ByteBufUtils; import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; @Packet(Side.CLIENT) public class PacketExpandedSlot extends PenguinPacket { private int windowId; private int slot; private ItemStack item; public PacketExpandedSlot() {} public PacketExpandedSlot(int windowIdIn, int slotIn, @Nullable ItemStack itemIn) { this.windowId = windowIdIn; this.slot = slotIn; this.item = itemIn == null ? null : itemIn.copy(); } @Override public void toBytes(ByteBuf buffer) { buffer.writeByte(windowId); buffer.writeShort(slot); if (item == null) buffer.writeBoolean(false); else { buffer.writeBoolean(true); ByteBufUtils.writeTag(buffer, NBTHelper.writeItemStack(item, new NBTTagCompound())); } } @Override public void fromBytes(ByteBuf buffer) { windowId = buffer.readByte(); slot = buffer.readShort(); if (buffer.readBoolean()) { item = NBTHelper.readItemStack(ByteBufUtils.readTag(buffer)); } } @SideOnly(net.minecraftforge.fml.relauncher.Side.CLIENT) @Override public void handleQueuedClient(NetHandlerPlayClient handler) { handler.handleSetSlot(new SPacketSetSlot(windowId, slot, item)); } }