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 import net.minecraft.util.MathHelper; 008 009 public class Packet23VehicleSpawn extends Packet 010 { 011 /** Entity ID of the object. */ 012 public int entityId; 013 014 /** The X position of the object. */ 015 public int xPosition; 016 017 /** The Y position of the object. */ 018 public int yPosition; 019 020 /** The Z position of the object. */ 021 public int zPosition; 022 023 /** 024 * Not sent if the thrower entity ID is 0. The speed of this fireball along the X axis. 025 */ 026 public int speedX; 027 028 /** 029 * Not sent if the thrower entity ID is 0. The speed of this fireball along the Y axis. 030 */ 031 public int speedY; 032 033 /** 034 * Not sent if the thrower entity ID is 0. The speed of this fireball along the Z axis. 035 */ 036 public int speedZ; 037 038 /** The type of object. */ 039 public int type; 040 041 /** 0 if not a fireball. Otherwise, this is the Entity ID of the thrower. */ 042 public int throwerEntityId; 043 044 public Packet23VehicleSpawn() {} 045 046 public Packet23VehicleSpawn(Entity par1Entity, int par2) 047 { 048 this(par1Entity, par2, 0); 049 } 050 051 public Packet23VehicleSpawn(Entity par1Entity, int par2, int par3) 052 { 053 this.entityId = par1Entity.entityId; 054 this.xPosition = MathHelper.floor_double(par1Entity.posX * 32.0D); 055 this.yPosition = MathHelper.floor_double(par1Entity.posY * 32.0D); 056 this.zPosition = MathHelper.floor_double(par1Entity.posZ * 32.0D); 057 this.type = par2; 058 this.throwerEntityId = par3; 059 060 if (par3 > 0) 061 { 062 double var4 = par1Entity.motionX; 063 double var6 = par1Entity.motionY; 064 double var8 = par1Entity.motionZ; 065 double var10 = 3.9D; 066 067 if (var4 < -var10) 068 { 069 var4 = -var10; 070 } 071 072 if (var6 < -var10) 073 { 074 var6 = -var10; 075 } 076 077 if (var8 < -var10) 078 { 079 var8 = -var10; 080 } 081 082 if (var4 > var10) 083 { 084 var4 = var10; 085 } 086 087 if (var6 > var10) 088 { 089 var6 = var10; 090 } 091 092 if (var8 > var10) 093 { 094 var8 = var10; 095 } 096 097 this.speedX = (int)(var4 * 8000.0D); 098 this.speedY = (int)(var6 * 8000.0D); 099 this.speedZ = (int)(var8 * 8000.0D); 100 } 101 } 102 103 /** 104 * Abstract. Reads the raw packet data from the data stream. 105 */ 106 public void readPacketData(DataInputStream par1DataInputStream) throws IOException 107 { 108 this.entityId = par1DataInputStream.readInt(); 109 this.type = par1DataInputStream.readByte(); 110 this.xPosition = par1DataInputStream.readInt(); 111 this.yPosition = par1DataInputStream.readInt(); 112 this.zPosition = par1DataInputStream.readInt(); 113 this.throwerEntityId = par1DataInputStream.readInt(); 114 115 if (this.throwerEntityId > 0) 116 { 117 this.speedX = par1DataInputStream.readShort(); 118 this.speedY = par1DataInputStream.readShort(); 119 this.speedZ = par1DataInputStream.readShort(); 120 } 121 } 122 123 /** 124 * Abstract. Writes the raw packet data to the data stream. 125 */ 126 public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException 127 { 128 par1DataOutputStream.writeInt(this.entityId); 129 par1DataOutputStream.writeByte(this.type); 130 par1DataOutputStream.writeInt(this.xPosition); 131 par1DataOutputStream.writeInt(this.yPosition); 132 par1DataOutputStream.writeInt(this.zPosition); 133 par1DataOutputStream.writeInt(this.throwerEntityId); 134 135 if (this.throwerEntityId > 0) 136 { 137 par1DataOutputStream.writeShort(this.speedX); 138 par1DataOutputStream.writeShort(this.speedY); 139 par1DataOutputStream.writeShort(this.speedZ); 140 } 141 } 142 143 /** 144 * Passes this Packet on to the NetHandler for processing. 145 */ 146 public void processPacket(NetHandler par1NetHandler) 147 { 148 par1NetHandler.handleVehicleSpawn(this); 149 } 150 151 /** 152 * Abstract. Return the size of the packet (not counting the header). 153 */ 154 public int getPacketSize() 155 { 156 return 21 + this.throwerEntityId > 0 ? 6 : 0; 157 } 158 }