    001package net.minecraft.network.packet;
    002
    003import java.io.DataInputStream;
    004import java.io.DataOutputStream;
    005import java.io.IOException;
    006import net.minecraft.item.ItemStack;
    007
    008public class Packet103SetSlot extends Packet
    009{
    010    /** The window which is being updated. 0 for player inventory */
    011    public int windowId;
    012
    013    /** Slot that should be updated */
    014    public int itemSlot;
    015
    016    /** Item stack */
    017    public ItemStack myItemStack;
    018
    019    public Packet103SetSlot() {}
    020
    021    public Packet103SetSlot(int par1, int par2, ItemStack par3ItemStack)
    022    {
    023        this.windowId = par1;
    024        this.itemSlot = par2;
    025        this.myItemStack = par3ItemStack == null ? par3ItemStack : par3ItemStack.copy();
    026    }
    027
    028    /**
    029     * Passes this Packet on to the NetHandler for processing.
    030     */
    031    public void processPacket(NetHandler par1NetHandler)
    032    {
    033        par1NetHandler.handleSetSlot(this);
    034    }
    035
    036    /**
    037     * Abstract. Reads the raw packet data from the data stream.
    038     */
    039    public void readPacketData(DataInputStream par1DataInputStream) throws IOException
    040    {
    041        this.windowId = par1DataInputStream.readByte();
    042        this.itemSlot = par1DataInputStream.readShort();
    043        this.myItemStack = readItemStack(par1DataInputStream);
    044    }
    045
    046    /**
    047     * Abstract. Writes the raw packet data to the data stream.
    048     */
    049    public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException
    050    {
    051        par1DataOutputStream.writeByte(this.windowId);
    052        par1DataOutputStream.writeShort(this.itemSlot);
    053        writeItemStack(this.myItemStack, par1DataOutputStream);
    054    }
    055
    056    /**
    057     * Abstract. Return the size of the packet (not counting the header).
    058     */
    059    public int getPacketSize()
    060    {
    061        return 8;
    062    }
    063}