    001    package net.minecraft.network.packet;
    002
    003    import java.io.DataInputStream;
    004    import java.io.DataOutputStream;
    005    import java.io.IOException;
    006    import java.util.List;
    007    import net.minecraft.item.ItemStack;
    008
    009    public class Packet104WindowItems extends Packet
    010    {
    011        /**
    012         * The id of window which items are being sent for. 0 for player inventory.
    013         */
    014        public int windowId;
    015
    016        /** Stack of items */
    017        public ItemStack[] itemStack;
    018
    019        public Packet104WindowItems() {}
    020
    021        public Packet104WindowItems(int par1, List par2List)
    022        {
    023            this.windowId = par1;
    024            this.itemStack = new ItemStack[par2List.size()];
    025
    026            for (int var3 = 0; var3 < this.itemStack.length; ++var3)
    027            {
    028                ItemStack var4 = (ItemStack)par2List.get(var3);
    029                this.itemStack[var3] = var4 == null ? null : var4.copy();
    030            }
    031        }
    032
    033        /**
    034         * Abstract. Reads the raw packet data from the data stream.
    035         */
    036        public void readPacketData(DataInputStream par1DataInputStream) throws IOException
    037        {
    038            this.windowId = par1DataInputStream.readByte();
    039            short var2 = par1DataInputStream.readShort();
    040            this.itemStack = new ItemStack[var2];
    041
    042            for (int var3 = 0; var3 < var2; ++var3)
    043            {
    044                this.itemStack[var3] = readItemStack(par1DataInputStream);
    045            }
    046        }
    047
    048        /**
    049         * Abstract. Writes the raw packet data to the data stream.
    050         */
    051        public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException
    052        {
    053            par1DataOutputStream.writeByte(this.windowId);
    054            par1DataOutputStream.writeShort(this.itemStack.length);
    055
    056            for (int var2 = 0; var2 < this.itemStack.length; ++var2)
    057            {
    058                writeItemStack(this.itemStack[var2], par1DataOutputStream);
    059            }
    060        }
    061
    062        /**
    063         * Passes this Packet on to the NetHandler for processing.
    064         */
    065        public void processPacket(NetHandler par1NetHandler)
    066        {
    067            par1NetHandler.handleWindowItems(this);
    068        }
    069
    070        /**
    071         * Abstract. Return the size of the packet (not counting the header).
    072         */
    073        public int getPacketSize()
    074        {
    075            return 3 + this.itemStack.length * 5;
    076        }
    077    }