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 Packet28EntityVelocity extends Packet
008    {
009        public int entityId;
010        public int motionX;
011        public int motionY;
012        public int motionZ;
013    
014        public Packet28EntityVelocity() {}
015    
016        public Packet28EntityVelocity(Entity par1Entity)
017        {
018            this(par1Entity.entityId, par1Entity.motionX, par1Entity.motionY, par1Entity.motionZ);
019        }
020    
021        public Packet28EntityVelocity(int par1, double par2, double par4, double par6)
022        {
023            this.entityId = par1;
024            double var8 = 3.9D;
025    
026            if (par2 < -var8)
027            {
028                par2 = -var8;
029            }
030    
031            if (par4 < -var8)
032            {
033                par4 = -var8;
034            }
035    
036            if (par6 < -var8)
037            {
038                par6 = -var8;
039            }
040    
041            if (par2 > var8)
042            {
043                par2 = var8;
044            }
045    
046            if (par4 > var8)
047            {
048                par4 = var8;
049            }
050    
051            if (par6 > var8)
052            {
053                par6 = var8;
054            }
055    
056            this.motionX = (int)(par2 * 8000.0D);
057            this.motionY = (int)(par4 * 8000.0D);
058            this.motionZ = (int)(par6 * 8000.0D);
059        }
060    
061        /**
062         * Abstract. Reads the raw packet data from the data stream.
063         */
064        public void readPacketData(DataInputStream par1DataInputStream) throws IOException
065        {
066            this.entityId = par1DataInputStream.readInt();
067            this.motionX = par1DataInputStream.readShort();
068            this.motionY = par1DataInputStream.readShort();
069            this.motionZ = par1DataInputStream.readShort();
070        }
071    
072        /**
073         * Abstract. Writes the raw packet data to the data stream.
074         */
075        public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException
076        {
077            par1DataOutputStream.writeInt(this.entityId);
078            par1DataOutputStream.writeShort(this.motionX);
079            par1DataOutputStream.writeShort(this.motionY);
080            par1DataOutputStream.writeShort(this.motionZ);
081        }
082    
083        /**
084         * Passes this Packet on to the NetHandler for processing.
085         */
086        public void processPacket(NetHandler par1NetHandler)
087        {
088            par1NetHandler.handleEntityVelocity(this);
089        }
090    
091        /**
092         * Abstract. Return the size of the packet (not counting the header).
093         */
094        public int getPacketSize()
095        {
096            return 10;
097        }
098    
099        /**
100         * only false for the abstract Packet class, all real packets return true
101         */
102        public boolean isRealPacket()
103        {
104            return true;
105        }
106    
107        /**
108         * eg return packet30entity.entityId == entityId; WARNING : will throw if you compare a packet to a different packet
109         * class
110         */
111        public boolean containsSameEntityIDAs(Packet par1Packet)
112        {
113            Packet28EntityVelocity var2 = (Packet28EntityVelocity)par1Packet;
114            return var2.entityId == this.entityId;
115        }
116    }