change defaults, add texture

This commit is contained in:
Sen 2025-06-30 21:06:13 +02:00
parent 1fe5003028
commit 8a9e9451b7
Signed by: sen
GPG key ID: 3AC50A6F47D1B722
5 changed files with 107 additions and 105 deletions

View file

@ -432,7 +432,7 @@ public class Client implements IThreadListener {
private int scale = 1;
@Variable(name = "gui_scale", category = CVarCategory.GUI, min = 1, max = 5, display = "Skalierung", unit = "x", callback = RedrawFunction.class)
private int scaleVar = 1;
private int scaleVar = 2;
@Variable(name = "phy_sensitivity", category = CVarCategory.INPUT, min = 0.01f, max = 10.0f, display = "Mausempfindlichkeit", precision = 2, unit = "%")
public float sensitivity = 1.0f;
@ -475,10 +475,10 @@ public class Client implements IThreadListener {
@Variable(name = "gui_scroll_lines", category = CVarCategory.GUI, min = 1, max = 10, display = "Scrollbreite", unit = "Zeilen")
public int scrollLines = 3;
@Variable(name = "gui_font", category = CVarCategory.GUI, display = "Schriftart", callback = FontFunction.class)
public Font font = Font.LARGE;
public Font font = Font.SMALL;
@Variable(name = "draw_downfall_range", category = CVarCategory.RENDER, min = 0, max = 15, display = "Niederschlag-Radius")
public int downfallRange = 10;
public int downfallRange = 4;
@Variable(name = "draw_rain_particle_range", category = CVarCategory.RENDER, min = 0, max = 25, display = "Regen-Partikel-Radius")
public int rainParticleRange = 10;
@ -636,6 +636,8 @@ public class Client implements IThreadListener {
public void refreshResources()
{
Font.unload();
Font.load(this.font);
this.textureManager.onReload();
ColormapLoader.reload();
this.modelManager.onReload();
@ -2250,7 +2252,7 @@ public class Client implements IThreadListener {
this.registerDebug();
System.gc();
System.gc();
Font.load(Font.LARGE);
Font.load(this.font);
GlState.enableBlend();
GlState.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
this.initConsole();

View file

@ -103,7 +103,7 @@ public enum Font implements Identifyable, Displayable {
img = null;
}
if(img == null)
throw new IllegalStateException("Konnte erforderliche Schriftart nicht laden");
img = new BufferedImage(XGLYPH * 16, YGLYPH * 16, BufferedImage.TYPE_INT_ARGB);
int[] data = new int[XGLYPH * 16 * YGLYPH * 16];
img.getRGB(0, 0, XGLYPH * 16, YGLYPH * 16, data, 0, XGLYPH * 16);
calculate(data, SIZES, XGLYPH, YGLYPH, 0);

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 B

View file

@ -291,12 +291,12 @@ public class BlockRedstoneComparator extends BlockRedstoneDiode implements ITile
public Model getModel(ModelProvider provider, String name, State state) {
return (state.getValue(POWERED) ? (state.getValue(MODE) == Mode.SUBTRACT ? provider.getModel("comparator_on")
.add(0, 0, 0, 16, 2, 16)
.d("double_stone_top").uv(0, 0, 16, 16)
.d("concrete_plate").uv(0, 0, 16, 16)
.u().uv(0, 0, 16, 16).noCull()
.n("double_stone_top").uv(0, 14, 16, 16)
.s("double_stone_top").uv(0, 14, 16, 16)
.w("double_stone_top").uv(0, 14, 16, 16)
.e("double_stone_top").uv(0, 14, 16, 16)
.n("concrete_plate").uv(0, 14, 16, 16)
.s("concrete_plate").uv(0, 14, 16, 16)
.w("concrete_plate").uv(0, 14, 16, 16)
.e("concrete_plate").uv(0, 14, 16, 16)
.add(4, 7, 11, 6, 7, 13)
.u("redstone_torch").uv(7, 6, 9, 8).noCull()
.add(4, 2, 10, 6, 8, 14)
@ -322,12 +322,12 @@ public class BlockRedstoneComparator extends BlockRedstoneDiode implements ITile
.n("redstone_torch").uv(6, 5, 10, 9).noCull()
.s("redstone_torch").uv(6, 5, 10, 9).noCull() : provider.getModel("comparator_on")
.add(0, 0, 0, 16, 2, 16)
.d("double_stone_top").uv(0, 0, 16, 16)
.d("concrete_plate").uv(0, 0, 16, 16)
.u().uv(0, 0, 16, 16).noCull()
.n("double_stone_top").uv(0, 14, 16, 16)
.s("double_stone_top").uv(0, 14, 16, 16)
.w("double_stone_top").uv(0, 14, 16, 16)
.e("double_stone_top").uv(0, 14, 16, 16)
.n("concrete_plate").uv(0, 14, 16, 16)
.s("concrete_plate").uv(0, 14, 16, 16)
.w("concrete_plate").uv(0, 14, 16, 16)
.e("concrete_plate").uv(0, 14, 16, 16)
.add(4, 7, 11, 6, 7, 13)
.u("redstone_torch").uv(7, 6, 9, 8).noCull()
.add(4, 2, 10, 6, 8, 14)
@ -353,12 +353,12 @@ public class BlockRedstoneComparator extends BlockRedstoneDiode implements ITile
.e("unlit_redstone_torch").uv(7, 6, 9, 8).noCull())
: (state.getValue(MODE) == Mode.SUBTRACT ? provider.getModel("comparator_off")
.add(0, 0, 0, 16, 2, 16)
.d("double_stone_top").uv(0, 0, 16, 16)
.d("concrete_plate").uv(0, 0, 16, 16)
.u().uv(0, 0, 16, 16).noCull()
.n("double_stone_top").uv(0, 14, 16, 16)
.s("double_stone_top").uv(0, 14, 16, 16)
.w("double_stone_top").uv(0, 14, 16, 16)
.e("double_stone_top").uv(0, 14, 16, 16)
.n("concrete_plate").uv(0, 14, 16, 16)
.s("concrete_plate").uv(0, 14, 16, 16)
.w("concrete_plate").uv(0, 14, 16, 16)
.e("concrete_plate").uv(0, 14, 16, 16)
.add(4, 2, 11, 6, 7, 13)
.d("unlit_redstone_torch").uv(7, 13, 9, 15).noCull()
.u("unlit_redstone_torch").uv(7, 6, 9, 8).noCull()
@ -382,12 +382,12 @@ public class BlockRedstoneComparator extends BlockRedstoneDiode implements ITile
.n("redstone_torch").uv(6, 5, 10, 9).noCull()
.s("redstone_torch").uv(6, 5, 10, 9).noCull() : provider.getModel("comparator_off")
.add(0, 0, 0, 16, 2, 16)
.d("double_stone_top").uv(0, 0, 16, 16)
.d("concrete_plate").uv(0, 0, 16, 16)
.u().uv(0, 0, 16, 16).noCull()
.n("double_stone_top").uv(0, 14, 16, 16)
.s("double_stone_top").uv(0, 14, 16, 16)
.w("double_stone_top").uv(0, 14, 16, 16)
.e("double_stone_top").uv(0, 14, 16, 16)
.n("concrete_plate").uv(0, 14, 16, 16)
.s("concrete_plate").uv(0, 14, 16, 16)
.w("concrete_plate").uv(0, 14, 16, 16)
.e("concrete_plate").uv(0, 14, 16, 16)
.add(4, 2, 11, 6, 7, 13)
.d("unlit_redstone_torch").uv(7, 13, 9, 15).noCull()
.u("unlit_redstone_torch").uv(7, 6, 9, 8).noCull()

View file

@ -147,12 +147,12 @@ public class BlockRedstoneRepeater extends BlockRedstoneDiode
default:
return ModelProvider.getModelProvider().getModel("repeater_off")
.add(0, 0, 0, 16, 2, 16)
.d("double_stone_top").uv(0, 0, 16, 16)
.d("concrete_plate").uv(0, 0, 16, 16)
.u().uv(0, 0, 16, 16).noCull()
.n("double_stone_top").uv(0, 14, 16, 16)
.s("double_stone_top").uv(0, 14, 16, 16)
.w("double_stone_top").uv(0, 14, 16, 16)
.e("double_stone_top").uv(0, 14, 16, 16)
.n("concrete_plate").uv(0, 14, 16, 16)
.s("concrete_plate").uv(0, 14, 16, 16)
.w("concrete_plate").uv(0, 14, 16, 16)
.e("concrete_plate").uv(0, 14, 16, 16)
.add(7, 2, 6, 9, 7, 8)
.d("unlit_redstone_torch").uv(7, 13, 9, 15).noCull()
.u("unlit_redstone_torch").uv(7, 6, 9, 8).noCull()
@ -170,12 +170,12 @@ public class BlockRedstoneRepeater extends BlockRedstoneDiode
case 2:
return ModelProvider.getModelProvider().getModel("repeater_off")
.add(0, 0, 0, 16, 2, 16)
.d("double_stone_top").uv(0, 0, 16, 16)
.d("concrete_plate").uv(0, 0, 16, 16)
.u().uv(0, 0, 16, 16).noCull()
.n("double_stone_top").uv(0, 14, 16, 16)
.s("double_stone_top").uv(0, 14, 16, 16)
.w("double_stone_top").uv(0, 14, 16, 16)
.e("double_stone_top").uv(0, 14, 16, 16)
.n("concrete_plate").uv(0, 14, 16, 16)
.s("concrete_plate").uv(0, 14, 16, 16)
.w("concrete_plate").uv(0, 14, 16, 16)
.e("concrete_plate").uv(0, 14, 16, 16)
.add(7, 2, 8, 9, 7, 10)
.d("unlit_redstone_torch").uv(7, 13, 9, 15).noCull()
.u("unlit_redstone_torch").uv(7, 6, 9, 8).noCull()
@ -193,12 +193,12 @@ public class BlockRedstoneRepeater extends BlockRedstoneDiode
case 3:
return ModelProvider.getModelProvider().getModel("repeater_off")
.add(0, 0, 0, 16, 2, 16)
.d("double_stone_top").uv(0, 0, 16, 16)
.d("concrete_plate").uv(0, 0, 16, 16)
.u().uv(0, 0, 16, 16).noCull()
.n("double_stone_top").uv(0, 14, 16, 16)
.s("double_stone_top").uv(0, 14, 16, 16)
.w("double_stone_top").uv(0, 14, 16, 16)
.e("double_stone_top").uv(0, 14, 16, 16)
.n("concrete_plate").uv(0, 14, 16, 16)
.s("concrete_plate").uv(0, 14, 16, 16)
.w("concrete_plate").uv(0, 14, 16, 16)
.e("concrete_plate").uv(0, 14, 16, 16)
.add(7, 2, 10, 9, 7, 12)
.d("unlit_redstone_torch").uv(7, 13, 9, 15).noCull()
.u("unlit_redstone_torch").uv(7, 6, 9, 8).noCull()
@ -216,12 +216,12 @@ public class BlockRedstoneRepeater extends BlockRedstoneDiode
case 4:
return ModelProvider.getModelProvider().getModel("repeater_off")
.add(0, 0, 0, 16, 2, 16)
.d("double_stone_top").uv(0, 0, 16, 16)
.d("concrete_plate").uv(0, 0, 16, 16)
.u().uv(0, 0, 16, 16).noCull()
.n("double_stone_top").uv(0, 14, 16, 16)
.s("double_stone_top").uv(0, 14, 16, 16)
.w("double_stone_top").uv(0, 14, 16, 16)
.e("double_stone_top").uv(0, 14, 16, 16)
.n("concrete_plate").uv(0, 14, 16, 16)
.s("concrete_plate").uv(0, 14, 16, 16)
.w("concrete_plate").uv(0, 14, 16, 16)
.e("concrete_plate").uv(0, 14, 16, 16)
.add(7, 2, 12, 9, 7, 14)
.d("unlit_redstone_torch").uv(7, 13, 9, 15).noCull()
.u("unlit_redstone_torch").uv(7, 6, 9, 8).noCull()
@ -245,12 +245,12 @@ public class BlockRedstoneRepeater extends BlockRedstoneDiode
default:
return ModelProvider.getModelProvider().getModel("repeater_on")
.add(0, 0, 0, 16, 2, 16)
.d("double_stone_top").uv(0, 0, 16, 16)
.d("concrete_plate").uv(0, 0, 16, 16)
.u().uv(0, 0, 16, 16).noCull()
.n("double_stone_top").uv(0, 14, 16, 16)
.s("double_stone_top").uv(0, 14, 16, 16)
.w("double_stone_top").uv(0, 14, 16, 16)
.e("double_stone_top").uv(0, 14, 16, 16)
.n("concrete_plate").uv(0, 14, 16, 16)
.s("concrete_plate").uv(0, 14, 16, 16)
.w("concrete_plate").uv(0, 14, 16, 16)
.e("concrete_plate").uv(0, 14, 16, 16)
.add(7, 7, 6, 9, 7, 8)
.u("redstone_torch").uv(7, 6, 9, 8).noCull()
.add(7, 2, 5, 9, 8, 9)
@ -270,12 +270,12 @@ public class BlockRedstoneRepeater extends BlockRedstoneDiode
case 2:
return ModelProvider.getModelProvider().getModel("repeater_on")
.add(0, 0, 0, 16, 2, 16)
.d("double_stone_top").uv(0, 0, 16, 16)
.d("concrete_plate").uv(0, 0, 16, 16)
.u().uv(0, 0, 16, 16).noCull()
.n("double_stone_top").uv(0, 14, 16, 16)
.s("double_stone_top").uv(0, 14, 16, 16)
.w("double_stone_top").uv(0, 14, 16, 16)
.e("double_stone_top").uv(0, 14, 16, 16)
.n("concrete_plate").uv(0, 14, 16, 16)
.s("concrete_plate").uv(0, 14, 16, 16)
.w("concrete_plate").uv(0, 14, 16, 16)
.e("concrete_plate").uv(0, 14, 16, 16)
.add(7, 7, 8, 9, 7, 10)
.u("redstone_torch").uv(7, 6, 9, 8).noCull()
.add(7, 2, 7, 9, 8, 11)
@ -295,12 +295,12 @@ public class BlockRedstoneRepeater extends BlockRedstoneDiode
case 3:
return ModelProvider.getModelProvider().getModel("repeater_on")
.add(0, 0, 0, 16, 2, 16)
.d("double_stone_top").uv(0, 0, 16, 16)
.d("concrete_plate").uv(0, 0, 16, 16)
.u().uv(0, 0, 16, 16).noCull()
.n("double_stone_top").uv(0, 14, 16, 16)
.s("double_stone_top").uv(0, 14, 16, 16)
.w("double_stone_top").uv(0, 14, 16, 16)
.e("double_stone_top").uv(0, 14, 16, 16)
.n("concrete_plate").uv(0, 14, 16, 16)
.s("concrete_plate").uv(0, 14, 16, 16)
.w("concrete_plate").uv(0, 14, 16, 16)
.e("concrete_plate").uv(0, 14, 16, 16)
.add(7, 7, 10, 9, 7, 12)
.u("redstone_torch").uv(7, 6, 9, 8).noCull()
.add(7, 2, 9, 9, 8, 13)
@ -320,12 +320,12 @@ public class BlockRedstoneRepeater extends BlockRedstoneDiode
case 4:
return ModelProvider.getModelProvider().getModel("repeater_on")
.add(0, 0, 0, 16, 2, 16)
.d("double_stone_top").uv(0, 0, 16, 16)
.d("concrete_plate").uv(0, 0, 16, 16)
.u().uv(0, 0, 16, 16).noCull()
.n("double_stone_top").uv(0, 14, 16, 16)
.s("double_stone_top").uv(0, 14, 16, 16)
.w("double_stone_top").uv(0, 14, 16, 16)
.e("double_stone_top").uv(0, 14, 16, 16)
.n("concrete_plate").uv(0, 14, 16, 16)
.s("concrete_plate").uv(0, 14, 16, 16)
.w("concrete_plate").uv(0, 14, 16, 16)
.e("concrete_plate").uv(0, 14, 16, 16)
.add(7, 7, 12, 9, 7, 14)
.u("redstone_torch").uv(7, 6, 9, 8).noCull()
.add(7, 2, 11, 9, 8, 15)
@ -351,12 +351,12 @@ public class BlockRedstoneRepeater extends BlockRedstoneDiode
default:
return ModelProvider.getModelProvider().getModel("repeater_off")
.add(0, 0, 0, 16, 2, 16)
.d("double_stone_top").uv(0, 0, 16, 16)
.d("concrete_plate").uv(0, 0, 16, 16)
.u().uv(0, 0, 16, 16).noCull()
.n("double_stone_top").uv(0, 14, 16, 16)
.s("double_stone_top").uv(0, 14, 16, 16)
.w("double_stone_top").uv(0, 14, 16, 16)
.e("double_stone_top").uv(0, 14, 16, 16)
.n("concrete_plate").uv(0, 14, 16, 16)
.s("concrete_plate").uv(0, 14, 16, 16)
.w("concrete_plate").uv(0, 14, 16, 16)
.e("concrete_plate").uv(0, 14, 16, 16)
.add(2, 2, 6, 14, 4, 8)
.d("bedrock").uv(7, 2, 9, 14).rot(90).noCull()
.u("bedrock").uv(7, 2, 9, 14).rot(90).noCull()
@ -374,12 +374,12 @@ public class BlockRedstoneRepeater extends BlockRedstoneDiode
case 2:
return ModelProvider.getModelProvider().getModel("repeater_off")
.add(0, 0, 0, 16, 2, 16)
.d("double_stone_top").uv(0, 0, 16, 16)
.d("concrete_plate").uv(0, 0, 16, 16)
.u().uv(0, 0, 16, 16).noCull()
.n("double_stone_top").uv(0, 14, 16, 16)
.s("double_stone_top").uv(0, 14, 16, 16)
.w("double_stone_top").uv(0, 14, 16, 16)
.e("double_stone_top").uv(0, 14, 16, 16)
.n("concrete_plate").uv(0, 14, 16, 16)
.s("concrete_plate").uv(0, 14, 16, 16)
.w("concrete_plate").uv(0, 14, 16, 16)
.e("concrete_plate").uv(0, 14, 16, 16)
.add(2, 2, 8, 14, 4, 10)
.d("bedrock").uv(7, 2, 9, 14).rot(90).noCull()
.u("bedrock").uv(7, 2, 9, 14).rot(90).noCull()
@ -397,12 +397,12 @@ public class BlockRedstoneRepeater extends BlockRedstoneDiode
case 3:
return ModelProvider.getModelProvider().getModel("repeater_off")
.add(0, 0, 0, 16, 2, 16)
.d("double_stone_top").uv(0, 0, 16, 16)
.d("concrete_plate").uv(0, 0, 16, 16)
.u().uv(0, 0, 16, 16).noCull()
.n("double_stone_top").uv(0, 14, 16, 16)
.s("double_stone_top").uv(0, 14, 16, 16)
.w("double_stone_top").uv(0, 14, 16, 16)
.e("double_stone_top").uv(0, 14, 16, 16)
.n("concrete_plate").uv(0, 14, 16, 16)
.s("concrete_plate").uv(0, 14, 16, 16)
.w("concrete_plate").uv(0, 14, 16, 16)
.e("concrete_plate").uv(0, 14, 16, 16)
.add(2, 2, 10, 14, 4, 12)
.d("bedrock").uv(7, 2, 9, 14).rot(90).noCull()
.u("bedrock").uv(7, 2, 9, 14).rot(90).noCull()
@ -420,12 +420,12 @@ public class BlockRedstoneRepeater extends BlockRedstoneDiode
case 4:
return ModelProvider.getModelProvider().getModel("repeater_off")
.add(0, 0, 0, 16, 2, 16)
.d("double_stone_top").uv(0, 0, 16, 16)
.d("concrete_plate").uv(0, 0, 16, 16)
.u().uv(0, 0, 16, 16).noCull()
.n("double_stone_top").uv(0, 14, 16, 16)
.s("double_stone_top").uv(0, 14, 16, 16)
.w("double_stone_top").uv(0, 14, 16, 16)
.e("double_stone_top").uv(0, 14, 16, 16)
.n("concrete_plate").uv(0, 14, 16, 16)
.s("concrete_plate").uv(0, 14, 16, 16)
.w("concrete_plate").uv(0, 14, 16, 16)
.e("concrete_plate").uv(0, 14, 16, 16)
.add(2, 2, 12, 14, 4, 14)
.d("bedrock").uv(7, 2, 9, 14).rot(90).noCull()
.u("bedrock").uv(7, 2, 9, 14).rot(90).noCull()
@ -449,12 +449,12 @@ public class BlockRedstoneRepeater extends BlockRedstoneDiode
default:
return ModelProvider.getModelProvider().getModel("repeater_on")
.add(0, 0, 0, 16, 2, 16)
.d("double_stone_top").uv(0, 0, 16, 16)
.d("concrete_plate").uv(0, 0, 16, 16)
.u().uv(0, 0, 16, 16).noCull()
.n("double_stone_top").uv(0, 14, 16, 16)
.s("double_stone_top").uv(0, 14, 16, 16)
.w("double_stone_top").uv(0, 14, 16, 16)
.e("double_stone_top").uv(0, 14, 16, 16)
.n("concrete_plate").uv(0, 14, 16, 16)
.s("concrete_plate").uv(0, 14, 16, 16)
.w("concrete_plate").uv(0, 14, 16, 16)
.e("concrete_plate").uv(0, 14, 16, 16)
.add(2, 2, 6, 14, 4, 8)
.d("bedrock").uv(7, 2, 9, 14).rot(90).noCull()
.u("bedrock").uv(7, 2, 9, 14).rot(90).noCull()
@ -473,12 +473,12 @@ public class BlockRedstoneRepeater extends BlockRedstoneDiode
case 2:
return ModelProvider.getModelProvider().getModel("repeater_on")
.add(0, 0, 0, 16, 2, 16)
.d("double_stone_top").uv(0, 0, 16, 16)
.d("concrete_plate").uv(0, 0, 16, 16)
.u().uv(0, 0, 16, 16).noCull()
.n("double_stone_top").uv(0, 14, 16, 16)
.s("double_stone_top").uv(0, 14, 16, 16)
.w("double_stone_top").uv(0, 14, 16, 16)
.e("double_stone_top").uv(0, 14, 16, 16)
.n("concrete_plate").uv(0, 14, 16, 16)
.s("concrete_plate").uv(0, 14, 16, 16)
.w("concrete_plate").uv(0, 14, 16, 16)
.e("concrete_plate").uv(0, 14, 16, 16)
.add(2, 2, 8, 14, 4, 10)
.d("bedrock").uv(7, 2, 9, 14).rot(90).noCull()
.u("bedrock").uv(7, 2, 9, 14).rot(90).noCull()
@ -497,12 +497,12 @@ public class BlockRedstoneRepeater extends BlockRedstoneDiode
case 3:
return ModelProvider.getModelProvider().getModel("repeater_on")
.add(0, 0, 0, 16, 2, 16)
.d("double_stone_top").uv(0, 0, 16, 16)
.d("concrete_plate").uv(0, 0, 16, 16)
.u().uv(0, 0, 16, 16).noCull()
.n("double_stone_top").uv(0, 14, 16, 16)
.s("double_stone_top").uv(0, 14, 16, 16)
.w("double_stone_top").uv(0, 14, 16, 16)
.e("double_stone_top").uv(0, 14, 16, 16)
.n("concrete_plate").uv(0, 14, 16, 16)
.s("concrete_plate").uv(0, 14, 16, 16)
.w("concrete_plate").uv(0, 14, 16, 16)
.e("concrete_plate").uv(0, 14, 16, 16)
.add(2, 2, 10, 14, 4, 12)
.d("bedrock").uv(7, 2, 9, 14).rot(90).noCull()
.u("bedrock").uv(7, 2, 9, 14).rot(90).noCull()
@ -521,12 +521,12 @@ public class BlockRedstoneRepeater extends BlockRedstoneDiode
case 4:
return ModelProvider.getModelProvider().getModel("repeater_on")
.add(0, 0, 0, 16, 2, 16)
.d("double_stone_top").uv(0, 0, 16, 16)
.d("concrete_plate").uv(0, 0, 16, 16)
.u().uv(0, 0, 16, 16).noCull()
.n("double_stone_top").uv(0, 14, 16, 16)
.s("double_stone_top").uv(0, 14, 16, 16)
.w("double_stone_top").uv(0, 14, 16, 16)
.e("double_stone_top").uv(0, 14, 16, 16)
.n("concrete_plate").uv(0, 14, 16, 16)
.s("concrete_plate").uv(0, 14, 16, 16)
.w("concrete_plate").uv(0, 14, 16, 16)
.e("concrete_plate").uv(0, 14, 16, 16)
.add(2, 2, 12, 14, 4, 14)
.d("bedrock").uv(7, 2, 9, 14).rot(90).noCull()
.u("bedrock").uv(7, 2, 9, 14).rot(90).noCull()