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 ItemStack itemID;
030    
031        public Packet21PickupSpawn() {}
032    
033        public Packet21PickupSpawn(EntityItem par1EntityItem)
034        {
035            this.entityId = par1EntityItem.entityId;
036            this.itemID = par1EntityItem.item.copy();
037            this.xPosition = MathHelper.floor_double(par1EntityItem.posX * 32.0D);
038            this.yPosition = MathHelper.floor_double(par1EntityItem.posY * 32.0D);
039            this.zPosition = MathHelper.floor_double(par1EntityItem.posZ * 32.0D);
040            this.rotation = (byte)((int)(par1EntityItem.motionX * 128.0D));
041            this.pitch = (byte)((int)(par1EntityItem.motionY * 128.0D));
042            this.roll = (byte)((int)(par1EntityItem.motionZ * 128.0D));
043        }
044    
045        /**
046         * Abstract. Reads the raw packet data from the data stream.
047         */
048        public void readPacketData(DataInputStream par1DataInputStream) throws IOException
049        {
050            this.entityId = par1DataInputStream.readInt();
051            this.itemID = readItemStack(par1DataInputStream);
052            this.xPosition = par1DataInputStream.readInt();
053            this.yPosition = par1DataInputStream.readInt();
054            this.zPosition = par1DataInputStream.readInt();
055            this.rotation = par1DataInputStream.readByte();
056            this.pitch = par1DataInputStream.readByte();
057            this.roll = par1DataInputStream.readByte();
058        }
059    
060        /**
061         * Abstract. Writes the raw packet data to the data stream.
062         */
063        public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException
064        {
065            par1DataOutputStream.writeInt(this.entityId);
066            writeItemStack(this.itemID, par1DataOutputStream);
067            par1DataOutputStream.writeInt(this.xPosition);
068            par1DataOutputStream.writeInt(this.yPosition);
069            par1DataOutputStream.writeInt(this.zPosition);
070            par1DataOutputStream.writeByte(this.rotation);
071            par1DataOutputStream.writeByte(this.pitch);
072            par1DataOutputStream.writeByte(this.roll);
073        }
074    
075        /**
076         * Passes this Packet on to the NetHandler for processing.
077         */
078        public void processPacket(NetHandler par1NetHandler)
079        {
080            par1NetHandler.handlePickupSpawn(this);
081        }
082    
083        /**
084         * Abstract. Return the size of the packet (not counting the header).
085         */
086        public int getPacketSize()
087        {
088            return 24;
089        }
090    }