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}