48 lines
1.4 KiB
Java
48 lines
1.4 KiB
Java
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 = new byte[327680];
|
|
|
|
@Nonnull
|
|
public BlockPriorityChunk reset() {
|
|
Arrays.fill(this.blocks, (byte)0);
|
|
return this;
|
|
}
|
|
|
|
public byte get(int x, int y, int z) {
|
|
return (byte)(this.blocks[index(x, y, z)] & 31);
|
|
}
|
|
|
|
public byte getRaw(int x, int y, int z) {
|
|
return this.blocks[index(x, y, z)];
|
|
}
|
|
|
|
public void set(int x, int y, int z, byte type) {
|
|
this.blocks[index(x, y, z)] = type;
|
|
}
|
|
|
|
private static int index(int x, int y, int z) {
|
|
return ChunkUtil.indexBlockInColumn(x, y, z);
|
|
}
|
|
}
|