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