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