minecraft-src/net/minecraft/client/renderer/FaceInfo.java
2025-07-04 01:41:11 +03:00

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;
}
}
}