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 java.util.List;
009    import net.minecraft.entity.DataWatcher;
010    
011    public class Packet40EntityMetadata extends Packet
012    {
013        public int entityId;
014        private List metadata;
015    
016        public Packet40EntityMetadata() {}
017    
018        public Packet40EntityMetadata(int par1, DataWatcher par2DataWatcher, boolean par3)
019        {
020            this.entityId = par1;
021    
022            if (par3)
023            {
024                this.metadata = par2DataWatcher.func_75685_c();
025            }
026            else
027            {
028                this.metadata = par2DataWatcher.unwatchAndReturnAllWatched();
029            }
030        }
031    
032        /**
033         * Abstract. Reads the raw packet data from the data stream.
034         */
035        public void readPacketData(DataInputStream par1DataInputStream) throws IOException
036        {
037            this.entityId = par1DataInputStream.readInt();
038            this.metadata = DataWatcher.readWatchableObjects(par1DataInputStream);
039        }
040    
041        /**
042         * Abstract. Writes the raw packet data to the data stream.
043         */
044        public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException
045        {
046            par1DataOutputStream.writeInt(this.entityId);
047            DataWatcher.writeObjectsInListToStream(this.metadata, par1DataOutputStream);
048        }
049    
050        /**
051         * Passes this Packet on to the NetHandler for processing.
052         */
053        public void processPacket(NetHandler par1NetHandler)
054        {
055            par1NetHandler.handleEntityMetadata(this);
056        }
057    
058        /**
059         * Abstract. Return the size of the packet (not counting the header).
060         */
061        public int getPacketSize()
062        {
063            return 5;
064        }
065    
066        @SideOnly(Side.CLIENT)
067        public List getMetadata()
068        {
069            return this.metadata;
070        }
071    }