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