001    package net.minecraft.src;
002    
003    import cpw.mods.fml.common.Side;
004    import cpw.mods.fml.common.asm.SideOnly;
005    import java.io.DataInputStream;
006    import java.io.DataOutputStream;
007    import java.io.IOException;
008    
009    public class Packet102WindowClick extends Packet
010    {
011        /** The id of the window which was clicked. 0 for player inventory. */
012        public int window_Id;
013    
014        /** The clicked slot (-999 is outside of inventory) */
015        public int inventorySlot;
016    
017        /** 1 when right-clicking and otherwise 0 */
018        public int mouseClick;
019    
020        /** A unique number for the action, used for transaction handling */
021        public short action;
022    
023        /** Item stack for inventory */
024        public ItemStack itemStack;
025        public int holdingShift;
026    
027        public Packet102WindowClick() {}
028    
029        @SideOnly(Side.CLIENT)
030        public Packet102WindowClick(int par1, int par2, int par3, int par4, ItemStack par5ItemStack, short par6)
031        {
032            this.window_Id = par1;
033            this.inventorySlot = par2;
034            this.mouseClick = par3;
035            this.itemStack = par5ItemStack;
036            this.action = par6;
037            this.holdingShift = par4;
038        }
039    
040        /**
041         * Passes this Packet on to the NetHandler for processing.
042         */
043        public void processPacket(NetHandler par1NetHandler)
044        {
045            par1NetHandler.handleWindowClick(this);
046        }
047    
048        /**
049         * Abstract. Reads the raw packet data from the data stream.
050         */
051        public void readPacketData(DataInputStream par1DataInputStream) throws IOException
052        {
053            this.window_Id = par1DataInputStream.readByte();
054            this.inventorySlot = par1DataInputStream.readShort();
055            this.mouseClick = par1DataInputStream.readByte();
056            this.action = par1DataInputStream.readShort();
057            this.holdingShift = par1DataInputStream.readByte();
058            this.itemStack = readItemStack(par1DataInputStream);
059        }
060    
061        /**
062         * Abstract. Writes the raw packet data to the data stream.
063         */
064        public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException
065        {
066            par1DataOutputStream.writeByte(this.window_Id);
067            par1DataOutputStream.writeShort(this.inventorySlot);
068            par1DataOutputStream.writeByte(this.mouseClick);
069            par1DataOutputStream.writeShort(this.action);
070            par1DataOutputStream.writeByte(this.holdingShift);
071            writeItemStack(this.itemStack, par1DataOutputStream);
072        }
073    
074        /**
075         * Abstract. Return the size of the packet (not counting the header).
076         */
077        public int getPacketSize()
078        {
079            return 11;
080        }
081    }