package net.minecraft.network.play.server;
import java.io.IOException;
import java.util.List;
import net.minecraft.network.INetHandler;
import net.minecraft.network.Packet;
import net.minecraft.network.PacketBuffer;
import net.minecraft.network.play.INetHandlerPlayClient;
import net.minecraft.world.chunk.Chunk;
public class S26PacketMapChunkBulk implements Packet
{
private int[] field_149266_a;
private int[] field_149264_b;
private S21PacketChunkData.Extracted[] field_179755_c;
private boolean field_149267_h;
private static final String __OBFID = "CL_00001306";
public S26PacketMapChunkBulk() {}
public S26PacketMapChunkBulk(List p_i45197_1_)
{
int var2 = p_i45197_1_.size();
this.field_149266_a = new int[var2];
this.field_149264_b = new int[var2];
this.field_179755_c = new S21PacketChunkData.Extracted[var2];
this.field_149267_h = !((Chunk)p_i45197_1_.get(0)).getWorld().provider.getHasNoSky();
for (int var3 = 0; var3 < var2; ++var3)
{
Chunk var4 = (Chunk)p_i45197_1_.get(var3);
S21PacketChunkData.Extracted var5 = S21PacketChunkData.func_179756_a(var4, true, this.field_149267_h, 65535);
this.field_149266_a[var3] = var4.xPosition;
this.field_149264_b[var3] = var4.zPosition;
this.field_179755_c[var3] = var5;
}
}
/**
* Reads the raw packet data from the data stream.
*/
public void readPacketData(PacketBuffer data) throws IOException
{
this.field_149267_h = data.readBoolean();
int var2 = data.readVarIntFromBuffer();
this.field_149266_a = new int[var2];
this.field_149264_b = new int[var2];
this.field_179755_c = new S21PacketChunkData.Extracted[var2];
int var3;
for (var3 = 0; var3 < var2; ++var3)
{
this.field_149266_a[var3] = data.readInt();
this.field_149264_b[var3] = data.readInt();
this.field_179755_c[var3] = new S21PacketChunkData.Extracted();
this.field_179755_c[var3].field_150280_b = data.readShort() & 65535;
this.field_179755_c[var3].field_150282_a = new byte[S21PacketChunkData.func_180737_a(Integer.bitCount(this.field_179755_c[var3].field_150280_b), this.field_149267_h, true)];
}
for (var3 = 0; var3 < var2; ++var3)
{
data.readBytes(this.field_179755_c[var3].field_150282_a);
}
}
/**
* Writes the raw packet data to the data stream.
*/
public void writePacketData(PacketBuffer data) throws IOException
{
data.writeBoolean(this.field_149267_h);
data.writeVarIntToBuffer(this.field_179755_c.length);
int var2;
for (var2 = 0; var2 < this.field_149266_a.length; ++var2)
{
data.writeInt(this.field_149266_a[var2]);
data.writeInt(this.field_149264_b[var2]);
data.writeShort((short)(this.field_179755_c[var2].field_150280_b & 65535));
}
for (var2 = 0; var2 < this.field_149266_a.length; ++var2)
{
data.writeBytes(this.field_179755_c[var2].field_150282_a);
}
}
public void func_180738_a(INetHandlerPlayClient p_180738_1_)
{
p_180738_1_.handleMapChunkBulk(this);
}
/**
* Passes this Packet on to the NetHandler for processing.
*/
public void processPacket(INetHandler handler)
{
this.func_180738_a((INetHandlerPlayClient)handler);
}
}