91 lines
4.1 KiB
Java
91 lines
4.1 KiB
Java
package net.minecraft.client.renderer;
|
|
|
|
import net.fabricmc.api.EnvType;
|
|
import net.fabricmc.api.Environment;
|
|
import net.minecraft.Util;
|
|
import net.minecraft.core.Direction;
|
|
|
|
@Environment(EnvType.CLIENT)
|
|
public enum FaceInfo {
|
|
DOWN(
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MIN_X, FaceInfo.Constants.MIN_Y, FaceInfo.Constants.MAX_Z),
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MIN_X, FaceInfo.Constants.MIN_Y, FaceInfo.Constants.MIN_Z),
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MAX_X, FaceInfo.Constants.MIN_Y, FaceInfo.Constants.MIN_Z),
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MAX_X, FaceInfo.Constants.MIN_Y, FaceInfo.Constants.MAX_Z)
|
|
),
|
|
UP(
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MIN_X, FaceInfo.Constants.MAX_Y, FaceInfo.Constants.MIN_Z),
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MIN_X, FaceInfo.Constants.MAX_Y, FaceInfo.Constants.MAX_Z),
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MAX_X, FaceInfo.Constants.MAX_Y, FaceInfo.Constants.MAX_Z),
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MAX_X, FaceInfo.Constants.MAX_Y, FaceInfo.Constants.MIN_Z)
|
|
),
|
|
NORTH(
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MAX_X, FaceInfo.Constants.MAX_Y, FaceInfo.Constants.MIN_Z),
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MAX_X, FaceInfo.Constants.MIN_Y, FaceInfo.Constants.MIN_Z),
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MIN_X, FaceInfo.Constants.MIN_Y, FaceInfo.Constants.MIN_Z),
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MIN_X, FaceInfo.Constants.MAX_Y, FaceInfo.Constants.MIN_Z)
|
|
),
|
|
SOUTH(
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MIN_X, FaceInfo.Constants.MAX_Y, FaceInfo.Constants.MAX_Z),
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MIN_X, FaceInfo.Constants.MIN_Y, FaceInfo.Constants.MAX_Z),
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MAX_X, FaceInfo.Constants.MIN_Y, FaceInfo.Constants.MAX_Z),
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MAX_X, FaceInfo.Constants.MAX_Y, FaceInfo.Constants.MAX_Z)
|
|
),
|
|
WEST(
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MIN_X, FaceInfo.Constants.MAX_Y, FaceInfo.Constants.MIN_Z),
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MIN_X, FaceInfo.Constants.MIN_Y, FaceInfo.Constants.MIN_Z),
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MIN_X, FaceInfo.Constants.MIN_Y, FaceInfo.Constants.MAX_Z),
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MIN_X, FaceInfo.Constants.MAX_Y, FaceInfo.Constants.MAX_Z)
|
|
),
|
|
EAST(
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MAX_X, FaceInfo.Constants.MAX_Y, FaceInfo.Constants.MAX_Z),
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MAX_X, FaceInfo.Constants.MIN_Y, FaceInfo.Constants.MAX_Z),
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MAX_X, FaceInfo.Constants.MIN_Y, FaceInfo.Constants.MIN_Z),
|
|
new FaceInfo.VertexInfo(FaceInfo.Constants.MAX_X, FaceInfo.Constants.MAX_Y, FaceInfo.Constants.MIN_Z)
|
|
);
|
|
|
|
private static final FaceInfo[] BY_FACING = Util.make(new FaceInfo[6], faceInfos -> {
|
|
faceInfos[FaceInfo.Constants.MIN_Y] = DOWN;
|
|
faceInfos[FaceInfo.Constants.MAX_Y] = UP;
|
|
faceInfos[FaceInfo.Constants.MIN_Z] = NORTH;
|
|
faceInfos[FaceInfo.Constants.MAX_Z] = SOUTH;
|
|
faceInfos[FaceInfo.Constants.MIN_X] = WEST;
|
|
faceInfos[FaceInfo.Constants.MAX_X] = EAST;
|
|
});
|
|
private final FaceInfo.VertexInfo[] infos;
|
|
|
|
public static FaceInfo fromFacing(Direction facing) {
|
|
return BY_FACING[facing.get3DDataValue()];
|
|
}
|
|
|
|
private FaceInfo(final FaceInfo.VertexInfo... infos) {
|
|
this.infos = infos;
|
|
}
|
|
|
|
public FaceInfo.VertexInfo getVertexInfo(int index) {
|
|
return this.infos[index];
|
|
}
|
|
|
|
@Environment(EnvType.CLIENT)
|
|
public static final class Constants {
|
|
public static final int MAX_Z = Direction.SOUTH.get3DDataValue();
|
|
public static final int MAX_Y = Direction.UP.get3DDataValue();
|
|
public static final int MAX_X = Direction.EAST.get3DDataValue();
|
|
public static final int MIN_Z = Direction.NORTH.get3DDataValue();
|
|
public static final int MIN_Y = Direction.DOWN.get3DDataValue();
|
|
public static final int MIN_X = Direction.WEST.get3DDataValue();
|
|
}
|
|
|
|
@Environment(EnvType.CLIENT)
|
|
public static class VertexInfo {
|
|
public final int xFace;
|
|
public final int yFace;
|
|
public final int zFace;
|
|
|
|
VertexInfo(int xFace, int yFace, int zFace) {
|
|
this.xFace = xFace;
|
|
this.yFace = yFace;
|
|
this.zFace = zFace;
|
|
}
|
|
}
|
|
}
|