Search in sources :

Example 11 with BaseChunk

use of com.viaversion.viaversion.api.minecraft.chunks.BaseChunk in project ViaVersion by ViaVersion.

the class Chunk1_16Type method read.

@Override
public Chunk read(ByteBuf input) throws Exception {
    int chunkX = input.readInt();
    int chunkZ = input.readInt();
    boolean fullChunk = input.readBoolean();
    boolean ignoreOldLightData = input.readBoolean();
    int primaryBitmask = Type.VAR_INT.readPrimitive(input);
    CompoundTag heightMap = Type.NBT.read(input);
    int[] biomeData = fullChunk ? new int[1024] : null;
    if (fullChunk) {
        for (int i = 0; i < 1024; i++) {
            biomeData[i] = input.readInt();
        }
    }
    // data size in bytes
    Type.VAR_INT.readPrimitive(input);
    // Read sections
    ChunkSection[] sections = new ChunkSection[16];
    for (int i = 0; i < 16; i++) {
        // Section not set
        if ((primaryBitmask & (1 << i)) == 0)
            continue;
        short nonAirBlocksCount = input.readShort();
        ChunkSection section = Types1_16.CHUNK_SECTION.read(input);
        section.setNonAirBlocksCount(nonAirBlocksCount);
        sections[i] = section;
    }
    List<CompoundTag> nbtData = new ArrayList<>(Arrays.asList(Type.NBT_ARRAY.read(input)));
    // Read all the remaining bytes (workaround for #681)
    if (input.readableBytes() > 0) {
        byte[] array = Type.REMAINING_BYTES.read(input);
        if (Via.getManager().isDebug()) {
            Via.getPlatform().getLogger().warning("Found " + array.length + " more bytes than expected while reading the chunk: " + chunkX + "/" + chunkZ);
        }
    }
    return new BaseChunk(chunkX, chunkZ, fullChunk, ignoreOldLightData, primaryBitmask, sections, biomeData, heightMap, nbtData);
}
Also used : BaseChunk(com.viaversion.viaversion.api.minecraft.chunks.BaseChunk) ArrayList(java.util.ArrayList) ChunkSection(com.viaversion.viaversion.api.minecraft.chunks.ChunkSection) CompoundTag(com.github.steveice10.opennbt.tag.builtin.CompoundTag)

Aggregations

BaseChunk (com.viaversion.viaversion.api.minecraft.chunks.BaseChunk)11 ChunkSection (com.viaversion.viaversion.api.minecraft.chunks.ChunkSection)11 CompoundTag (com.github.steveice10.opennbt.tag.builtin.CompoundTag)9 ArrayList (java.util.ArrayList)9 Position (com.viaversion.viaversion.api.minecraft.Position)2 Chunk (com.viaversion.viaversion.api.minecraft.chunks.Chunk)2 PacketWrapper (com.viaversion.viaversion.api.protocol.packet.PacketWrapper)2 PacketRemapper (com.viaversion.viaversion.api.protocol.remapper.PacketRemapper)2 Type (com.viaversion.viaversion.api.type.Type)2 ByteBuf (io.netty.buffer.ByteBuf)2 BitSet (java.util.BitSet)2 StringTag (com.github.steveice10.opennbt.tag.builtin.StringTag)1 ItemRewriter (com.viaversion.viabackwards.api.rewriters.ItemRewriter)1 Protocol1_17_1To1_18 (com.viaversion.viabackwards.protocol.protocol1_17_1to1_18.Protocol1_17_1To1_18)1 BlockEntityIds (com.viaversion.viabackwards.protocol.protocol1_17_1to1_18.data.BlockEntityIds)1 Via (com.viaversion.viaversion.api.Via)1 ParticleMappings (com.viaversion.viaversion.api.data.ParticleMappings)1 EntityTracker (com.viaversion.viaversion.api.data.entity.EntityTracker)1 BlockFace (com.viaversion.viaversion.api.minecraft.BlockFace)1 BlockEntity (com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity)1