001package net.minecraft.network.packet; 002 003import cpw.mods.fml.relauncher.Side; 004import cpw.mods.fml.relauncher.SideOnly; 005import java.io.DataInputStream; 006import java.io.DataOutputStream; 007import java.io.IOException; 008 009public class Packet63WorldParticles extends Packet 010{ 011 /** 012 * The name of the particle to create. A list can be found at https://gist.github.com/thinkofdeath/5110835 013 */ 014 private String particleName; 015 016 /** X position of the particle. */ 017 private float posX; 018 019 /** Y position of the particle. */ 020 private float posY; 021 022 /** Z position of the particle. */ 023 private float posZ; 024 025 /** 026 * This is added to the X position after being multiplied by random.nextGaussian() 027 */ 028 private float offsetX; 029 030 /** 031 * This is added to the Y position after being multiplied by random.nextGaussian() 032 */ 033 private float offsetY; 034 035 /** 036 * This is added to the Z position after being multiplied by random.nextGaussian() 037 */ 038 private float offsetZ; 039 040 /** The speed of each particle. */ 041 private float speed; 042 043 /** The number of particles to create. */ 044 private int quantity; 045 046 /** 047 * Abstract. Reads the raw packet data from the data stream. 048 */ 049 public void readPacketData(DataInputStream par1DataInputStream) throws IOException 050 { 051 this.particleName = readString(par1DataInputStream, 64); 052 this.posX = par1DataInputStream.readFloat(); 053 this.posY = par1DataInputStream.readFloat(); 054 this.posZ = par1DataInputStream.readFloat(); 055 this.offsetX = par1DataInputStream.readFloat(); 056 this.offsetY = par1DataInputStream.readFloat(); 057 this.offsetZ = par1DataInputStream.readFloat(); 058 this.speed = par1DataInputStream.readFloat(); 059 this.quantity = par1DataInputStream.readInt(); 060 } 061 062 /** 063 * Abstract. Writes the raw packet data to the data stream. 064 */ 065 public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException 066 { 067 writeString(this.particleName, par1DataOutputStream); 068 par1DataOutputStream.writeFloat(this.posX); 069 par1DataOutputStream.writeFloat(this.posY); 070 par1DataOutputStream.writeFloat(this.posZ); 071 par1DataOutputStream.writeFloat(this.offsetX); 072 par1DataOutputStream.writeFloat(this.offsetY); 073 par1DataOutputStream.writeFloat(this.offsetZ); 074 par1DataOutputStream.writeFloat(this.speed); 075 par1DataOutputStream.writeInt(this.quantity); 076 } 077 078 /** 079 * Passes this Packet on to the NetHandler for processing. 080 */ 081 public void processPacket(NetHandler par1NetHandler) 082 { 083 par1NetHandler.handleWorldParticles(this); 084 } 085 086 /** 087 * Abstract. Return the size of the packet (not counting the header). 088 */ 089 public int getPacketSize() 090 { 091 return 64; 092 } 093 094 @SideOnly(Side.CLIENT) 095 public String getParticleName() 096 { 097 return this.particleName; 098 } 099 100 @SideOnly(Side.CLIENT) 101 102 /** 103 * Gets the X position of the particle. 104 */ 105 public double getPositionX() 106 { 107 return (double)this.posX; 108 } 109 110 @SideOnly(Side.CLIENT) 111 112 /** 113 * Gets the Y position of the particle. 114 */ 115 public double getPositionY() 116 { 117 return (double)this.posY; 118 } 119 120 @SideOnly(Side.CLIENT) 121 122 /** 123 * Gets the Z position of the particle. 124 */ 125 public double getPositionZ() 126 { 127 return (double)this.posZ; 128 } 129 130 @SideOnly(Side.CLIENT) 131 132 /** 133 * This is added to the X position after being multiplied by random.nextGaussian() 134 */ 135 public float getOffsetX() 136 { 137 return this.offsetX; 138 } 139 140 @SideOnly(Side.CLIENT) 141 142 /** 143 * This is added to the Y position after being multiplied by random.nextGaussian() 144 */ 145 public float getOffsetY() 146 { 147 return this.offsetY; 148 } 149 150 @SideOnly(Side.CLIENT) 151 152 /** 153 * This is added to the Z position after being multiplied by random.nextGaussian() 154 */ 155 public float getOffsetZ() 156 { 157 return this.offsetZ; 158 } 159 160 @SideOnly(Side.CLIENT) 161 162 /** 163 * Gets the speed of the particles. 164 */ 165 public float getSpeed() 166 { 167 return this.speed; 168 } 169 170 @SideOnly(Side.CLIENT) 171 172 /** 173 * Gets the number of particles to create. 174 */ 175 public int getQuantity() 176 { 177 return this.quantity; 178 } 179}