001    package net.minecraft.network.packet;
002    
003    import java.io.DataInputStream;
004    import java.io.DataOutputStream;
005    import java.io.IOException;
006    import net.minecraft.world.World;
007    
008    public class Packet53BlockChange extends Packet
009    {
010        /** Block X position. */
011        public int xPosition;
012    
013        /** Block Y position. */
014        public int yPosition;
015    
016        /** Block Z position. */
017        public int zPosition;
018    
019        /** The new block type for the block. */
020        public int type;
021    
022        /** Metadata of the block. */
023        public int metadata;
024    
025        public Packet53BlockChange()
026        {
027            this.isChunkDataPacket = true;
028        }
029    
030        public Packet53BlockChange(int par1, int par2, int par3, World par4World)
031        {
032            this.isChunkDataPacket = true;
033            this.xPosition = par1;
034            this.yPosition = par2;
035            this.zPosition = par3;
036            this.type = par4World.getBlockId(par1, par2, par3);
037            this.metadata = par4World.getBlockMetadata(par1, par2, par3);
038        }
039    
040        /**
041         * Abstract. Reads the raw packet data from the data stream.
042         */
043        public void readPacketData(DataInputStream par1DataInputStream) throws IOException
044        {
045            this.xPosition = par1DataInputStream.readInt();
046            this.yPosition = par1DataInputStream.read();
047            this.zPosition = par1DataInputStream.readInt();
048            this.type = par1DataInputStream.readShort();
049            this.metadata = par1DataInputStream.read();
050        }
051    
052        /**
053         * Abstract. Writes the raw packet data to the data stream.
054         */
055        public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException
056        {
057            par1DataOutputStream.writeInt(this.xPosition);
058            par1DataOutputStream.write(this.yPosition);
059            par1DataOutputStream.writeInt(this.zPosition);
060            par1DataOutputStream.writeShort(this.type);
061            par1DataOutputStream.write(this.metadata);
062        }
063    
064        /**
065         * Passes this Packet on to the NetHandler for processing.
066         */
067        public void processPacket(NetHandler par1NetHandler)
068        {
069            par1NetHandler.handleBlockChange(this);
070        }
071    
072        /**
073         * Abstract. Return the size of the packet (not counting the header).
074         */
075        public int getPacketSize()
076        {
077            return 11;
078        }
079    }