001    package net.minecraft.network.packet;
002    
003    import cpw.mods.fml.relauncher.Side;
004    import cpw.mods.fml.relauncher.SideOnly;
005    import java.io.DataInputStream;
006    import java.io.DataOutputStream;
007    import java.io.IOException;
008    import net.minecraft.item.ItemStack;
009    
010    public class Packet5PlayerInventory extends Packet
011    {
012        /** Entity ID of the object. */
013        public int entityID;
014    
015        /** Equipment slot: 0=held, 1-4=armor slot */
016        public int slot;
017    
018        /** The item in the slot format (an ItemStack) */
019        private ItemStack itemSlot;
020    
021        public Packet5PlayerInventory() {}
022    
023        public Packet5PlayerInventory(int par1, int par2, ItemStack par3ItemStack)
024        {
025            this.entityID = par1;
026            this.slot = par2;
027            this.itemSlot = par3ItemStack == null ? null : par3ItemStack.copy();
028        }
029    
030        /**
031         * Abstract. Reads the raw packet data from the data stream.
032         */
033        public void readPacketData(DataInputStream par1DataInputStream) throws IOException
034        {
035            this.entityID = par1DataInputStream.readInt();
036            this.slot = par1DataInputStream.readShort();
037            this.itemSlot = readItemStack(par1DataInputStream);
038        }
039    
040        /**
041         * Abstract. Writes the raw packet data to the data stream.
042         */
043        public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException
044        {
045            par1DataOutputStream.writeInt(this.entityID);
046            par1DataOutputStream.writeShort(this.slot);
047            writeItemStack(this.itemSlot, par1DataOutputStream);
048        }
049    
050        /**
051         * Passes this Packet on to the NetHandler for processing.
052         */
053        public void processPacket(NetHandler par1NetHandler)
054        {
055            par1NetHandler.handlePlayerInventory(this);
056        }
057    
058        /**
059         * Abstract. Return the size of the packet (not counting the header).
060         */
061        public int getPacketSize()
062        {
063            return 8;
064        }
065    
066        @SideOnly(Side.CLIENT)
067    
068        /**
069         * Gets the item in the slot format (an ItemStack)
070         */
071        public ItemStack getItemSlot()
072        {
073            return this.itemSlot;
074        }
075    
076        /**
077         * only false for the abstract Packet class, all real packets return true
078         */
079        public boolean isRealPacket()
080        {
081            return true;
082        }
083    
084        /**
085         * eg return packet30entity.entityId == entityId; WARNING : will throw if you compare a packet to a different packet
086         * class
087         */
088        public boolean containsSameEntityIDAs(Packet par1Packet)
089        {
090            Packet5PlayerInventory var2 = (Packet5PlayerInventory)par1Packet;
091            return var2.entityID == this.entityID && var2.slot == this.slot;
092        }
093    }