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