001 package net.minecraft.network.packet; 002 003 import cpw.mods.fml.relauncher.Side; 004 import cpw.mods.fml.relauncher.SideOnly; 005 import java.io.DataInputStream; 006 import java.io.DataOutputStream; 007 import java.io.IOException; 008 import java.util.ArrayList; 009 import java.util.Iterator; 010 import java.util.List; 011 import net.minecraft.util.Vec3; 012 import net.minecraft.world.ChunkPosition; 013 014 public class Packet60Explosion extends Packet 015 { 016 public double explosionX; 017 public double explosionY; 018 public double explosionZ; 019 public float explosionSize; 020 public List chunkPositionRecords; 021 private float field_73610_f; 022 private float field_73611_g; 023 private float field_73617_h; 024 025 public Packet60Explosion() {} 026 027 public Packet60Explosion(double par1, double par3, double par5, float par7, List par8List, Vec3 par9Vec3) 028 { 029 this.explosionX = par1; 030 this.explosionY = par3; 031 this.explosionZ = par5; 032 this.explosionSize = par7; 033 this.chunkPositionRecords = new ArrayList(par8List); 034 035 if (par9Vec3 != null) 036 { 037 this.field_73610_f = (float)par9Vec3.xCoord; 038 this.field_73611_g = (float)par9Vec3.yCoord; 039 this.field_73617_h = (float)par9Vec3.zCoord; 040 } 041 } 042 043 /** 044 * Abstract. Reads the raw packet data from the data stream. 045 */ 046 public void readPacketData(DataInputStream par1DataInputStream) throws IOException 047 { 048 this.explosionX = par1DataInputStream.readDouble(); 049 this.explosionY = par1DataInputStream.readDouble(); 050 this.explosionZ = par1DataInputStream.readDouble(); 051 this.explosionSize = par1DataInputStream.readFloat(); 052 int var2 = par1DataInputStream.readInt(); 053 this.chunkPositionRecords = new ArrayList(var2); 054 int var3 = (int)this.explosionX; 055 int var4 = (int)this.explosionY; 056 int var5 = (int)this.explosionZ; 057 058 for (int var6 = 0; var6 < var2; ++var6) 059 { 060 int var7 = par1DataInputStream.readByte() + var3; 061 int var8 = par1DataInputStream.readByte() + var4; 062 int var9 = par1DataInputStream.readByte() + var5; 063 this.chunkPositionRecords.add(new ChunkPosition(var7, var8, var9)); 064 } 065 066 this.field_73610_f = par1DataInputStream.readFloat(); 067 this.field_73611_g = par1DataInputStream.readFloat(); 068 this.field_73617_h = par1DataInputStream.readFloat(); 069 } 070 071 /** 072 * Abstract. Writes the raw packet data to the data stream. 073 */ 074 public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException 075 { 076 par1DataOutputStream.writeDouble(this.explosionX); 077 par1DataOutputStream.writeDouble(this.explosionY); 078 par1DataOutputStream.writeDouble(this.explosionZ); 079 par1DataOutputStream.writeFloat(this.explosionSize); 080 par1DataOutputStream.writeInt(this.chunkPositionRecords.size()); 081 int var2 = (int)this.explosionX; 082 int var3 = (int)this.explosionY; 083 int var4 = (int)this.explosionZ; 084 Iterator var5 = this.chunkPositionRecords.iterator(); 085 086 while (var5.hasNext()) 087 { 088 ChunkPosition var6 = (ChunkPosition)var5.next(); 089 int var7 = var6.x - var2; 090 int var8 = var6.y - var3; 091 int var9 = var6.z - var4; 092 par1DataOutputStream.writeByte(var7); 093 par1DataOutputStream.writeByte(var8); 094 par1DataOutputStream.writeByte(var9); 095 } 096 097 par1DataOutputStream.writeFloat(this.field_73610_f); 098 par1DataOutputStream.writeFloat(this.field_73611_g); 099 par1DataOutputStream.writeFloat(this.field_73617_h); 100 } 101 102 /** 103 * Passes this Packet on to the NetHandler for processing. 104 */ 105 public void processPacket(NetHandler par1NetHandler) 106 { 107 par1NetHandler.handleExplosion(this); 108 } 109 110 /** 111 * Abstract. Return the size of the packet (not counting the header). 112 */ 113 public int getPacketSize() 114 { 115 return 32 + this.chunkPositionRecords.size() * 3 + 3; 116 } 117 118 @SideOnly(Side.CLIENT) 119 public float func_73607_d() 120 { 121 return this.field_73610_f; 122 } 123 124 @SideOnly(Side.CLIENT) 125 public float func_73609_f() 126 { 127 return this.field_73611_g; 128 } 129 130 @SideOnly(Side.CLIENT) 131 public float func_73608_g() 132 { 133 return this.field_73617_h; 134 } 135 }