76 lines
1.8 KiB
Java
76 lines
1.8 KiB
Java
package com.hypixel.hytale.server.spawning.util;
|
|
|
|
import com.hypixel.hytale.common.util.BitSetUtil;
|
|
import com.hypixel.hytale.math.util.ChunkUtil;
|
|
import java.util.BitSet;
|
|
import javax.annotation.Nonnull;
|
|
|
|
public class ChunkColumnMask {
|
|
public static final int COLUMNS = 1024;
|
|
private final BitSet columns = new BitSet(1024);
|
|
|
|
public void copyFrom(@Nonnull ChunkColumnMask src) {
|
|
BitSetUtil.copyValues(src.columns, this.columns);
|
|
}
|
|
|
|
public boolean isEmpty() {
|
|
return this.columns.isEmpty();
|
|
}
|
|
|
|
public void clear() {
|
|
this.columns.clear();
|
|
}
|
|
|
|
public void set() {
|
|
this.columns.set(0, 1024);
|
|
}
|
|
|
|
public boolean get(int x, int z) {
|
|
return this.columns.get(ChunkUtil.indexColumn(x, z));
|
|
}
|
|
|
|
public void set(int x, int z) {
|
|
this.columns.set(ChunkUtil.indexColumn(x, z));
|
|
}
|
|
|
|
public void clear(int x, int z) {
|
|
this.columns.clear(ChunkUtil.indexColumn(x, z));
|
|
}
|
|
|
|
public void clear(int index) {
|
|
this.columns.clear(index & 1023);
|
|
}
|
|
|
|
public void set(int x, int z, boolean value) {
|
|
this.columns.set(ChunkUtil.indexColumn(x, z), value);
|
|
}
|
|
|
|
public boolean get(int index) {
|
|
return this.columns.get(index & 1023);
|
|
}
|
|
|
|
public void set(int bitIndex) {
|
|
this.columns.set(bitIndex & 1023);
|
|
}
|
|
|
|
public int nextSetBit(int fromIndex) {
|
|
return this.columns.nextSetBit(fromIndex & 1023);
|
|
}
|
|
|
|
public int nextClearBit(int fromIndex) {
|
|
return this.columns.nextClearBit(fromIndex & 1023);
|
|
}
|
|
|
|
public int previousSetBit(int fromIndex) {
|
|
return this.columns.previousSetBit(fromIndex & 1023);
|
|
}
|
|
|
|
public int previousClearBit(int fromIndex) {
|
|
return this.columns.previousClearBit(fromIndex & 1023);
|
|
}
|
|
|
|
public int cardinality() {
|
|
return this.columns.cardinality();
|
|
}
|
|
}
|