    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    }