62 lines
1.7 KiB
Java
62 lines
1.7 KiB
Java
package net.minecraft.client.renderer.chunk;
|
|
|
|
import java.util.BitSet;
|
|
import java.util.Set;
|
|
import net.fabricmc.api.EnvType;
|
|
import net.fabricmc.api.Environment;
|
|
import net.minecraft.core.Direction;
|
|
|
|
@Environment(EnvType.CLIENT)
|
|
public class VisibilitySet {
|
|
private static final int FACINGS = Direction.values().length;
|
|
private final BitSet data = new BitSet(FACINGS * FACINGS);
|
|
|
|
public void add(Set<Direction> faces) {
|
|
for (Direction direction : faces) {
|
|
for (Direction direction2 : faces) {
|
|
this.set(direction, direction2, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void set(Direction face, Direction otherFace, boolean visible) {
|
|
this.data.set(face.ordinal() + otherFace.ordinal() * FACINGS, visible);
|
|
this.data.set(otherFace.ordinal() + face.ordinal() * FACINGS, visible);
|
|
}
|
|
|
|
public void setAll(boolean visible) {
|
|
this.data.set(0, this.data.size(), visible);
|
|
}
|
|
|
|
public boolean visibilityBetween(Direction face, Direction otherFace) {
|
|
return this.data.get(face.ordinal() + otherFace.ordinal() * FACINGS);
|
|
}
|
|
|
|
public String toString() {
|
|
StringBuilder stringBuilder = new StringBuilder();
|
|
stringBuilder.append(' ');
|
|
|
|
for (Direction direction : Direction.values()) {
|
|
stringBuilder.append(' ').append(direction.toString().toUpperCase().charAt(0));
|
|
}
|
|
|
|
stringBuilder.append('\n');
|
|
|
|
for (Direction direction : Direction.values()) {
|
|
stringBuilder.append(direction.toString().toUpperCase().charAt(0));
|
|
|
|
for (Direction direction2 : Direction.values()) {
|
|
if (direction == direction2) {
|
|
stringBuilder.append(" ");
|
|
} else {
|
|
boolean bl = this.visibilityBetween(direction, direction2);
|
|
stringBuilder.append(' ').append((char)(bl ? 'Y' : 'n'));
|
|
}
|
|
}
|
|
|
|
stringBuilder.append('\n');
|
|
}
|
|
|
|
return stringBuilder.toString();
|
|
}
|
|
}
|