    001package net.minecraft.network.packet;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005import java.io.DataInputStream;
    006import java.io.DataOutputStream;
    007import java.io.IOException;
    008import net.minecraft.item.ItemStack;
    009
    010public 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 packet5playerinventory = (Packet5PlayerInventory)par1Packet;
    091        return packet5playerinventory.entityID == this.entityID && packet5playerinventory.slot == this.slot;
    092    }
    093}