001    package net.minecraft.src;
002    
003    import java.io.DataInputStream;
004    import java.io.DataOutputStream;
005    import java.io.IOException;
006    
007    public class Packet21PickupSpawn extends Packet
008    {
009        /** Unique entity ID. */
010        public int entityId;
011    
012        /** The item X position. */
013        public int xPosition;
014    
015        /** The item Y position. */
016        public int yPosition;
017    
018        /** The item Z position. */
019        public int zPosition;
020    
021        /** The item rotation. */
022        public byte rotation;
023    
024        /** The item pitch. */
025        public byte pitch;
026    
027        /** The item roll. */
028        public byte roll;
029        public int itemID;
030    
031        /** The number of items. */
032        public int count;
033    
034        /** The health of the item. */
035        public int itemDamage;
036    
037        public Packet21PickupSpawn() {}
038    
039        public Packet21PickupSpawn(EntityItem par1EntityItem)
040        {
041            this.entityId = par1EntityItem.entityId;
042            this.itemID = par1EntityItem.item.itemID;
043            this.count = par1EntityItem.item.stackSize;
044            this.itemDamage = par1EntityItem.item.getItemDamage();
045            this.xPosition = MathHelper.floor_double(par1EntityItem.posX * 32.0D);
046            this.yPosition = MathHelper.floor_double(par1EntityItem.posY * 32.0D);
047            this.zPosition = MathHelper.floor_double(par1EntityItem.posZ * 32.0D);
048            this.rotation = (byte)((int)(par1EntityItem.motionX * 128.0D));
049            this.pitch = (byte)((int)(par1EntityItem.motionY * 128.0D));
050            this.roll = (byte)((int)(par1EntityItem.motionZ * 128.0D));
051        }
052    
053        /**
054         * Abstract. Reads the raw packet data from the data stream.
055         */
056        public void readPacketData(DataInputStream par1DataInputStream) throws IOException
057        {
058            this.entityId = par1DataInputStream.readInt();
059            this.itemID = par1DataInputStream.readShort();
060            this.count = par1DataInputStream.readByte();
061            this.itemDamage = par1DataInputStream.readShort();
062            this.xPosition = par1DataInputStream.readInt();
063            this.yPosition = par1DataInputStream.readInt();
064            this.zPosition = par1DataInputStream.readInt();
065            this.rotation = par1DataInputStream.readByte();
066            this.pitch = par1DataInputStream.readByte();
067            this.roll = par1DataInputStream.readByte();
068        }
069    
070        /**
071         * Abstract. Writes the raw packet data to the data stream.
072         */
073        public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException
074        {
075            par1DataOutputStream.writeInt(this.entityId);
076            par1DataOutputStream.writeShort(this.itemID);
077            par1DataOutputStream.writeByte(this.count);
078            par1DataOutputStream.writeShort(this.itemDamage);
079            par1DataOutputStream.writeInt(this.xPosition);
080            par1DataOutputStream.writeInt(this.yPosition);
081            par1DataOutputStream.writeInt(this.zPosition);
082            par1DataOutputStream.writeByte(this.rotation);
083            par1DataOutputStream.writeByte(this.pitch);
084            par1DataOutputStream.writeByte(this.roll);
085        }
086    
087        /**
088         * Passes this Packet on to the NetHandler for processing.
089         */
090        public void processPacket(NetHandler par1NetHandler)
091        {
092            par1NetHandler.handlePickupSpawn(this);
093        }
094    
095        /**
096         * Abstract. Return the size of the packet (not counting the header).
097         */
098        public int getPacketSize()
099        {
100            return 24;
101        }
102    }