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 net.minecraft.item.ItemStack;
009
010 public class Packet15Place extends Packet
011 {
012 private int xPosition;
013 private int yPosition;
014 private int zPosition;
015
016 /** The offset to use for block/item placement. */
017 private int direction;
018 private ItemStack itemStack;
019
020 /** The offset from xPosition where the actual click took place */
021 private float xOffset;
022
023 /** The offset from yPosition where the actual click took place */
024 private float yOffset;
025
026 /** The offset from zPosition where the actual click took place */
027 private float zOffset;
028
029 public Packet15Place() {}
030
031 @SideOnly(Side.CLIENT)
032 public Packet15Place(int par1, int par2, int par3, int par4, ItemStack par5ItemStack, float par6, float par7, float par8)
033 {
034 this.xPosition = par1;
035 this.yPosition = par2;
036 this.zPosition = par3;
037 this.direction = par4;
038 this.itemStack = par5ItemStack;
039 this.xOffset = par6;
040 this.yOffset = par7;
041 this.zOffset = par8;
042 }
043
044 /**
045 * Abstract. Reads the raw packet data from the data stream.
046 */
047 public void readPacketData(DataInputStream par1DataInputStream) throws IOException
048 {
049 this.xPosition = par1DataInputStream.readInt();
050 this.yPosition = par1DataInputStream.read();
051 this.zPosition = par1DataInputStream.readInt();
052 this.direction = par1DataInputStream.read();
053 this.itemStack = readItemStack(par1DataInputStream);
054 this.xOffset = (float)par1DataInputStream.read() / 16.0F;
055 this.yOffset = (float)par1DataInputStream.read() / 16.0F;
056 this.zOffset = (float)par1DataInputStream.read() / 16.0F;
057 }
058
059 /**
060 * Abstract. Writes the raw packet data to the data stream.
061 */
062 public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException
063 {
064 par1DataOutputStream.writeInt(this.xPosition);
065 par1DataOutputStream.write(this.yPosition);
066 par1DataOutputStream.writeInt(this.zPosition);
067 par1DataOutputStream.write(this.direction);
068 writeItemStack(this.itemStack, par1DataOutputStream);
069 par1DataOutputStream.write((int)(this.xOffset * 16.0F));
070 par1DataOutputStream.write((int)(this.yOffset * 16.0F));
071 par1DataOutputStream.write((int)(this.zOffset * 16.0F));
072 }
073
074 /**
075 * Passes this Packet on to the NetHandler for processing.
076 */
077 public void processPacket(NetHandler par1NetHandler)
078 {
079 par1NetHandler.handlePlace(this);
080 }
081
082 /**
083 * Abstract. Return the size of the packet (not counting the header).
084 */
085 public int getPacketSize()
086 {
087 return 19;
088 }
089
090 public int getXPosition()
091 {
092 return this.xPosition;
093 }
094
095 public int getYPosition()
096 {
097 return this.yPosition;
098 }
099
100 public int getZPosition()
101 {
102 return this.zPosition;
103 }
104
105 public int getDirection()
106 {
107 return this.direction;
108 }
109
110 public ItemStack getItemStack()
111 {
112 return this.itemStack;
113 }
114
115 /**
116 * Returns the offset from xPosition where the actual click took place
117 */
118 public float getXOffset()
119 {
120 return this.xOffset;
121 }
122
123 /**
124 * Returns the offset from yPosition where the actual click took place
125 */
126 public float getYOffset()
127 {
128 return this.yOffset;
129 }
130
131 /**
132 * Returns the offset from zPosition where the actual click took place
133 */
134 public float getZOffset()
135 {
136 return this.zOffset;
137 }
138 }