package net.minecraft.network.packet;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import net.minecraft.util.Vec3;
import net.minecraft.world.ChunkPosition;
public class Packet60Explosion extends Packet
{
public double explosionX;
public double explosionY;
public double explosionZ;
public float explosionSize;
public List chunkPositionRecords;
private float field_73610_f;
private float field_73611_g;
private float field_73617_h;
public Packet60Explosion() {}
public Packet60Explosion(double par1, double par3, double par5, float par7, List par8List, Vec3 par9Vec3)
{
this.explosionX = par1;
this.explosionY = par3;
this.explosionZ = par5;
this.explosionSize = par7;
this.chunkPositionRecords = new ArrayList(par8List);
if (par9Vec3 != null)
{
this.field_73610_f = (float)par9Vec3.xCoord;
this.field_73611_g = (float)par9Vec3.yCoord;
this.field_73617_h = (float)par9Vec3.zCoord;
}
}
/**
* Abstract. Reads the raw packet data from the data stream.
*/
public void readPacketData(DataInputStream par1DataInputStream) throws IOException
{
this.explosionX = par1DataInputStream.readDouble();
this.explosionY = par1DataInputStream.readDouble();
this.explosionZ = par1DataInputStream.readDouble();
this.explosionSize = par1DataInputStream.readFloat();
int var2 = par1DataInputStream.readInt();
this.chunkPositionRecords = new ArrayList(var2);
int var3 = (int)this.explosionX;
int var4 = (int)this.explosionY;
int var5 = (int)this.explosionZ;
for (int var6 = 0; var6 < var2; ++var6)
{
int var7 = par1DataInputStream.readByte() + var3;
int var8 = par1DataInputStream.readByte() + var4;
int var9 = par1DataInputStream.readByte() + var5;
this.chunkPositionRecords.add(new ChunkPosition(var7, var8, var9));
}
this.field_73610_f = par1DataInputStream.readFloat();
this.field_73611_g = par1DataInputStream.readFloat();
this.field_73617_h = par1DataInputStream.readFloat();
}
/**
* Abstract. Writes the raw packet data to the data stream.
*/
public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException
{
par1DataOutputStream.writeDouble(this.explosionX);
par1DataOutputStream.writeDouble(this.explosionY);
par1DataOutputStream.writeDouble(this.explosionZ);
par1DataOutputStream.writeFloat(this.explosionSize);
par1DataOutputStream.writeInt(this.chunkPositionRecords.size());
int var2 = (int)this.explosionX;
int var3 = (int)this.explosionY;
int var4 = (int)this.explosionZ;
Iterator var5 = this.chunkPositionRecords.iterator();
while (var5.hasNext())
{
ChunkPosition var6 = (ChunkPosition)var5.next();
int var7 = var6.x - var2;
int var8 = var6.y - var3;
int var9 = var6.z - var4;
par1DataOutputStream.writeByte(var7);
par1DataOutputStream.writeByte(var8);
par1DataOutputStream.writeByte(var9);
}
par1DataOutputStream.writeFloat(this.field_73610_f);
par1DataOutputStream.writeFloat(this.field_73611_g);
par1DataOutputStream.writeFloat(this.field_73617_h);
}
/**
* Passes this Packet on to the NetHandler for processing.
*/
public void processPacket(NetHandler par1NetHandler)
{
par1NetHandler.handleExplosion(this);
}
/**
* Abstract. Return the size of the packet (not counting the header).
*/
public int getPacketSize()
{
return 32 + this.chunkPositionRecords.size() * 3 + 3;
}
@SideOnly(Side.CLIENT)
public float func_73607_d()
{
return this.field_73610_f;
}
@SideOnly(Side.CLIENT)
public float func_73609_f()
{
return this.field_73611_g;
}
@SideOnly(Side.CLIENT)
public float func_73608_g()
{
return this.field_73617_h;
}
}