    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    }