package net.minecraft.network.play.server; import java.io.IOException; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.network.INetHandler; import net.minecraft.network.Packet; import net.minecraft.network.PacketBuffer; import net.minecraft.network.play.INetHandlerPlayClient; import net.minecraft.util.BlockPos; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.chunk.Chunk; public class S22PacketMultiBlockChange implements Packet { private ChunkCoordIntPair field_148925_b; private S22PacketMultiBlockChange.BlockUpdateData[] field_179845_b; private static final String __OBFID = "CL_00001290"; public S22PacketMultiBlockChange() {} public S22PacketMultiBlockChange(int p_i45181_1_, short[] p_i45181_2_, Chunk p_i45181_3_) { this.field_148925_b = new ChunkCoordIntPair(p_i45181_3_.xPosition, p_i45181_3_.zPosition); this.field_179845_b = new S22PacketMultiBlockChange.BlockUpdateData[p_i45181_1_]; for (int var4 = 0; var4 < this.field_179845_b.length; ++var4) { this.field_179845_b[var4] = new S22PacketMultiBlockChange.BlockUpdateData(p_i45181_2_[var4], p_i45181_3_); } } /** * Reads the raw packet data from the data stream. */ public void readPacketData(PacketBuffer data) throws IOException { this.field_148925_b = new ChunkCoordIntPair(data.readInt(), data.readInt()); this.field_179845_b = new S22PacketMultiBlockChange.BlockUpdateData[data.readVarIntFromBuffer()]; for (int var2 = 0; var2 < this.field_179845_b.length; ++var2) { this.field_179845_b[var2] = new S22PacketMultiBlockChange.BlockUpdateData(data.readShort(), (IBlockState)Block.BLOCK_STATE_IDS.getByValue(data.readVarIntFromBuffer())); } } /** * Writes the raw packet data to the data stream. */ public void writePacketData(PacketBuffer data) throws IOException { data.writeInt(this.field_148925_b.chunkXPos); data.writeInt(this.field_148925_b.chunkZPos); data.writeVarIntToBuffer(this.field_179845_b.length); S22PacketMultiBlockChange.BlockUpdateData[] var2 = this.field_179845_b; int var3 = var2.length; for (int var4 = 0; var4 < var3; ++var4) { S22PacketMultiBlockChange.BlockUpdateData var5 = var2[var4]; data.writeShort(var5.func_180089_b()); data.writeVarIntToBuffer(Block.BLOCK_STATE_IDS.get(var5.func_180088_c())); } } public void func_180729_a(INetHandlerPlayClient p_180729_1_) { p_180729_1_.handleMultiBlockChange(this); } /** * Passes this Packet on to the NetHandler for processing. */ public void processPacket(INetHandler handler) { this.func_180729_a((INetHandlerPlayClient)handler); } public class BlockUpdateData { private final short field_180091_b; private final IBlockState field_180092_c; private static final String __OBFID = "CL_00002302"; public BlockUpdateData(short p_i45984_2_, IBlockState p_i45984_3_) { this.field_180091_b = p_i45984_2_; this.field_180092_c = p_i45984_3_; } public BlockUpdateData(short p_i45985_2_, Chunk p_i45985_3_) { this.field_180091_b = p_i45985_2_; this.field_180092_c = p_i45985_3_.getBlockState(this.func_180090_a()); } public BlockPos func_180090_a() { return new BlockPos(S22PacketMultiBlockChange.this.field_148925_b.getBlock(this.field_180091_b >> 12 & 15, this.field_180091_b & 255, this.field_180091_b >> 8 & 15)); } public short func_180089_b() { return this.field_180091_b; } public IBlockState func_180088_c() { return this.field_180092_c; } } }