// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.server.worldgen.chunk;

import com.hypixel.hytale.math.util.ChunkUtil;
import java.util.Arrays;
import javax.annotation.Nonnull;

public class BlockPriorityChunk
{
    public static final byte NO_CHANGE = -1;
    public static final byte NONE = 0;
    public static final byte FILLING = 1;
    public static final byte LAYER = 2;
    public static final byte COVER = 3;
    public static final byte WATER = 4;
    public static final byte CAVE_COVER = 5;
    public static final byte CAVE = 6;
    public static final byte CAVE_PREFAB = 7;
    public static final byte PREFAB_CAVE = 8;
    public static final byte PREFAB = 9;
    public static final byte EXCLUSIVE_MAX_PRIORITY = 32;
    public static final byte MASK = 31;
    public static final byte FLAG_MASK = -32;
    public static final byte FLAG_SUBMERGE = 32;
    @Nonnull
    private final byte[] blocks;
    
    public BlockPriorityChunk() {
        this.blocks = new byte[327680];
    }
    
    @Nonnull
    public BlockPriorityChunk reset() {
        Arrays.fill(this.blocks, (byte)0);
        return this;
    }
    
    public byte get(final int x, final int y, final int z) {
        return (byte)(this.blocks[index(x, y, z)] & 0x1F);
    }
    
    public byte getRaw(final int x, final int y, final int z) {
        return this.blocks[index(x, y, z)];
    }
    
    public void set(final int x, final int y, final int z, final byte type) {
        this.blocks[index(x, y, z)] = type;
    }
    
    private static int index(final int x, final int y, final int z) {
        return ChunkUtil.indexBlockInColumn(x, y, z);
    }
}
