From 9e5f6818323bd61fbc80e07666d9d3043b0850d6 Mon Sep 17 00:00:00 2001 From: Cedric Date: Tue, 5 Nov 2024 19:19:41 +0100 Subject: [PATCH] ref: first try of AS --- guilib | 2 +- .../signals/animation/ModelTranslation.java | 6 +- .../animation/SignalAnimationHandler.java | 30 ++- .../handler/ClientSignalStateHandler.java | 2 +- .../tileentitys/SignalSpecialRenderer.java | 5 +- .../signals/tileentitys/SignalTileEntity.java | 7 + .../blocks => models/block}/sh/sh_mech.json | 0 .../block}/sh/sh_mech_sh.json | 0 .../block}/sh/sh_mech_sh_high.json | 0 .../textures/blocks/sh/sh2_mast.json | 1 - .../textures/blocks/sh/sh_light.json | 251 ------------------ .../blocks/sh/sh_light_mast_sign.json | 21 -- .../textures/blocks/sh/sh_mast.json | 1 - .../textures/blocks/sh/sh_mech_number.json | 1 - 14 files changed, 33 insertions(+), 294 deletions(-) rename src/main/resources/assets/opensignals/{textures/blocks => models/block}/sh/sh_mech.json (100%) rename src/main/resources/assets/opensignals/{textures/blocks => models/block}/sh/sh_mech_sh.json (100%) rename src/main/resources/assets/opensignals/{textures/blocks => models/block}/sh/sh_mech_sh_high.json (100%) delete mode 100644 src/main/resources/assets/opensignals/textures/blocks/sh/sh2_mast.json delete mode 100644 src/main/resources/assets/opensignals/textures/blocks/sh/sh_light.json delete mode 100644 src/main/resources/assets/opensignals/textures/blocks/sh/sh_light_mast_sign.json delete mode 100644 src/main/resources/assets/opensignals/textures/blocks/sh/sh_mast.json delete mode 100644 src/main/resources/assets/opensignals/textures/blocks/sh/sh_mech_number.json diff --git a/guilib b/guilib index b8f362cac..40681ad33 160000 --- a/guilib +++ b/guilib @@ -1 +1 @@ -Subproject commit b8f362cac55515c321a631a7e762976e1a66d245 +Subproject commit 40681ad335ee1f5ff5c4877fcf6244405292eabe diff --git a/src/main/java/com/troblecodings/signals/animation/ModelTranslation.java b/src/main/java/com/troblecodings/signals/animation/ModelTranslation.java index 44ae75df9..6ec22625b 100644 --- a/src/main/java/com/troblecodings/signals/animation/ModelTranslation.java +++ b/src/main/java/com/troblecodings/signals/animation/ModelTranslation.java @@ -27,9 +27,9 @@ public ModelTranslation(final VectorWrapper translation) { } public void translate() { - GlStateManager.translate(modelTranslation.getX() - 0.5f, modelTranslation.getY() - 0.5f, - modelTranslation.getZ() - 0.5f); - + // GlStateManager.translate(modelTranslation.getX() - 0.5f, + // modelTranslation.getY() - 0.5f, + // modelTranslation.getZ() - 0.5f); if (quaternion != null) { GlStateManager.rotate(quaternion); } diff --git a/src/main/java/com/troblecodings/signals/animation/SignalAnimationHandler.java b/src/main/java/com/troblecodings/signals/animation/SignalAnimationHandler.java index 645412367..b95f6466d 100644 --- a/src/main/java/com/troblecodings/signals/animation/SignalAnimationHandler.java +++ b/src/main/java/com/troblecodings/signals/animation/SignalAnimationHandler.java @@ -34,6 +34,8 @@ import net.minecraft.client.renderer.vertex.VertexFormatElement; import net.minecraft.util.EnumFacing; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; import net.minecraftforge.client.model.pipeline.LightUtil; public class SignalAnimationHandler { @@ -44,23 +46,25 @@ public SignalAnimationHandler(final SignalTileEntity tile) { this.tile = tile; } - private final Map>>// + private final Map, Entry>>// animationPerModel = new HashMap<>(); - public void render() { - final IBlockState state = tile.getWorld().getBlockState(tile.getPos()); + public void render(final VectorWrapper vector) { + final World world = tile.getWorld(); + final BlockPos pos = tile.getPos(); + final IBlockState state = world.getBlockState(pos); final SignalAngel angle = state.getValue(Signal.ANGEL); - animationPerModel.forEach((buffer, entry) -> { + animationPerModel.forEach((first, entry) -> { final ModelTranslation translation = entry.getKey(); if (!translation.shouldRenderModel()) return; - + GlStateManager.enableAlpha(); GlStateManager.pushMatrix(); - GlStateManager.translate(0.5f, 0.5f, 0.5f); - GlStateManager.rotate(angle.getDregree(), 0, 1, 0); + GlStateManager.translate(vector.getX(), vector.getY(), vector.getZ()); translation.translate(); - drawBuffer(buffer); + GlStateManager.rotate(angle.getDregree(), 0, 1, 0); + drawBuffer(first.getValue()); GlStateManager.popMatrix(); if (translation.isAnimationAssigned()) { @@ -154,17 +158,19 @@ public void updateAnimationListFromBlock() { final ModelTranslation translation = new ModelTranslation(VectorWrapper.ZERO, new Quaternion(0, 0, 0, 0)); translation.setModelTranslation(entry.getValue().copy()); - final BufferBuilder buffer = getBufferFromModel(model); - animationPerModel.put(buffer, Maps.immutableEntry(translation, animations.stream() - .map(animation -> animation.copy()).collect(Collectors.toList()))); + final BufferBuilder buffer = getBufferFromModel(model, entry.getValue().copy()); + animationPerModel.put(Maps.immutableEntry(model, buffer), + Maps.immutableEntry(translation, animations.stream() + .map(animation -> animation.copy()).collect(Collectors.toList()))); }); } - private BufferBuilder getBufferFromModel(final IBakedModel model) { + private BufferBuilder getBufferFromModel(final IBakedModel model, final VectorWrapper vec) { final BufferBuilder buffer = new BufferBuilder(500); final IBlockState ebs = tile.getWorld().getBlockState(tile.getPos()); assert ebs != null; buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK); + buffer.setTranslation(vec.getX(), vec.getY(), vec.getZ()); final List lst = new ArrayList<>(); lst.addAll(model.getQuads(ebs, null, 0)); for (final EnumFacing face : EnumFacing.VALUES) diff --git a/src/main/java/com/troblecodings/signals/handler/ClientSignalStateHandler.java b/src/main/java/com/troblecodings/signals/handler/ClientSignalStateHandler.java index 096feafd8..9fb6e3c67 100644 --- a/src/main/java/com/troblecodings/signals/handler/ClientSignalStateHandler.java +++ b/src/main/java/com/troblecodings/signals/handler/ClientSignalStateHandler.java @@ -69,7 +69,7 @@ public void deserializeClient(final ReadBuffer buffer) { mc.addScheduledTask(() -> { final TileEntity tile = level.getTileEntity(signalPos); if (tile != null && tile instanceof SignalTileEntity) { - ((SignalTileEntity) tile).updateAnimationStates(properties, contains); + ((SignalTileEntity) tile).updateAnimationStates(properties, !contains); } final Chunk chunk = level.getChunkFromBlockCoords(signalPos); if (chunk == null) diff --git a/src/main/java/com/troblecodings/signals/tileentitys/SignalSpecialRenderer.java b/src/main/java/com/troblecodings/signals/tileentitys/SignalSpecialRenderer.java index be7e1b703..a36bec8f8 100644 --- a/src/main/java/com/troblecodings/signals/tileentitys/SignalSpecialRenderer.java +++ b/src/main/java/com/troblecodings/signals/tileentitys/SignalSpecialRenderer.java @@ -1,5 +1,6 @@ package com.troblecodings.signals.tileentitys; +import com.troblecodings.core.VectorWrapper; import com.troblecodings.signals.core.RenderOverlayInfo; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; @@ -13,12 +14,12 @@ public void render(final SignalTileEntity tile, final double x, final double y, tile.renderOverlay(new RenderOverlayInfo(x, y, z, getFontRenderer())); } if (tile.getSignal().hasAnimation()) { - tile.getAnimationHandler().render(); + tile.getAnimationHandler().render(new VectorWrapper((float) x, (float) y, (float) z)); } } @Override public boolean isGlobalRenderer(final SignalTileEntity te) { - return te.hasCustomName(); + return te.hasCustomName() || te.hasAnimation(); } } \ No newline at end of file diff --git a/src/main/java/com/troblecodings/signals/tileentitys/SignalTileEntity.java b/src/main/java/com/troblecodings/signals/tileentitys/SignalTileEntity.java index a9de02f13..6f41f31e1 100644 --- a/src/main/java/com/troblecodings/signals/tileentitys/SignalTileEntity.java +++ b/src/main/java/com/troblecodings/signals/tileentitys/SignalTileEntity.java @@ -84,6 +84,13 @@ public Signal getSignal() { return block instanceof Signal ? (Signal) block : null; } + public boolean hasAnimation() { + final Signal signal = getSignal(); + if (signal == null) + return false; + return signal.hasAnimation(); + } + public Map getProperties() { return ImmutableMap.copyOf(properties); } diff --git a/src/main/resources/assets/opensignals/textures/blocks/sh/sh_mech.json b/src/main/resources/assets/opensignals/models/block/sh/sh_mech.json similarity index 100% rename from src/main/resources/assets/opensignals/textures/blocks/sh/sh_mech.json rename to src/main/resources/assets/opensignals/models/block/sh/sh_mech.json diff --git a/src/main/resources/assets/opensignals/textures/blocks/sh/sh_mech_sh.json b/src/main/resources/assets/opensignals/models/block/sh/sh_mech_sh.json similarity index 100% rename from src/main/resources/assets/opensignals/textures/blocks/sh/sh_mech_sh.json rename to src/main/resources/assets/opensignals/models/block/sh/sh_mech_sh.json diff --git a/src/main/resources/assets/opensignals/textures/blocks/sh/sh_mech_sh_high.json b/src/main/resources/assets/opensignals/models/block/sh/sh_mech_sh_high.json similarity index 100% rename from src/main/resources/assets/opensignals/textures/blocks/sh/sh_mech_sh_high.json rename to src/main/resources/assets/opensignals/models/block/sh/sh_mech_sh_high.json diff --git a/src/main/resources/assets/opensignals/textures/blocks/sh/sh2_mast.json b/src/main/resources/assets/opensignals/textures/blocks/sh/sh2_mast.json deleted file mode 100644 index 911b42daf..000000000 --- a/src/main/resources/assets/opensignals/textures/blocks/sh/sh2_mast.json +++ /dev/null @@ -1 +0,0 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "textures": {"0": "opensignals:blocks/default/shield_gray", "particle": "opensignals:blocks/default/shield_gray"}, "elements": [{"from": [7, -16, 7], "to": [9, 16, 9], "faces": {"north": {"uv": [0, 0, 2, 16], "texture": "#0"}, "east": {"uv": [0, 0, 2, 16], "texture": "#0"}, "south": {"uv": [0, 0, 2, 16], "texture": "#0"}, "west": {"uv": [0, 0, 2, 16], "texture": "#0"}, "up": {"uv": [0, 0, 2, 2], "texture": "#0"}, "down": {"uv": [0, 0, 2, 2], "texture": "#0"}}}]} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/textures/blocks/sh/sh_light.json b/src/main/resources/assets/opensignals/textures/blocks/sh/sh_light.json deleted file mode 100644 index 898c61249..000000000 --- a/src/main/resources/assets/opensignals/textures/blocks/sh/sh_light.json +++ /dev/null @@ -1,251 +0,0 @@ -{ - "credit": "Made with Blockbench by Mc_Jeronimo", - "texture_size": [32, 32], - "textures": { - "0": "opensignals:blocks/default/mast", - "1": "opensignals:blocks/default/shield_black", - "2": "opensignals:blocks/default/white", - "6": "opensignals:blocks/sh/sh_back", - "particle": "opensignals:blocks/default/shield_black", - "lamp_rednorth": "opensignals:blocks/lamps/lamp_dark", - "lamp_white2north": "opensignals:blocks/lamps/lamp_dark", - "lamp_whitenorth": "opensignals:blocks/lamps/lamp_dark" - }, - "elements": [ - { - "from": [2, 2, 6], - "to": [14, 8, 10], - "faces": { - "north": {"uv": [0, 0, 6, 3], "texture": "#1"}, - "east": {"uv": [0, 0, 2, 3], "texture": "#1"}, - "south": {"uv": [0, 10, 12, 16], "texture": "#6"}, - "west": {"uv": [0, 0, 2, 3], "texture": "#1"}, - "up": {"uv": [0, 0, 6, 2], "texture": "#1"}, - "down": {"uv": [0, 0, 6, 2], "texture": "#1"} - } - }, - { - "from": [3, 8, 6], - "to": [13, 9, 10], - "faces": { - "north": {"uv": [0, 0, 5, 0.5], "texture": "#1"}, - "east": {"uv": [0, 0, 2, 0.5], "texture": "#1"}, - "south": {"uv": [1, 9, 11, 10], "texture": "#6"}, - "west": {"uv": [0, 0, 2, 0.5], "texture": "#1"}, - "up": {"uv": [0, 0, 5, 2], "texture": "#1"} - } - }, - { - "from": [4, 9, 6], - "to": [12, 10, 10], - "faces": { - "north": {"uv": [0, 0, 4, 0.5], "texture": "#1"}, - "east": {"uv": [0, 0, 2, 0.5], "texture": "#1"}, - "south": {"uv": [2, 8, 10, 9], "texture": "#6"}, - "west": {"uv": [0, 0, 2, 0.5], "texture": "#1"}, - "up": {"uv": [0, 0, 4, 2], "texture": "#1"} - } - }, - { - "from": [5, 10, 6], - "to": [11, 11, 10], - "faces": { - "north": {"uv": [0, 0, 3, 0.5], "texture": "#1"}, - "east": {"uv": [0, 0, 2, 0.5], "texture": "#1"}, - "south": {"uv": [3, 7, 9, 8], "texture": "#6"}, - "west": {"uv": [0, 0, 2, 0.5], "texture": "#1"}, - "up": {"uv": [0, 0, 3, 2], "texture": "#1"} - } - }, - { - "from": [7, 0, 7], - "to": [9, 2, 9], - "faces": { - "north": {"uv": [0, 0, 1, 1], "texture": "#0"}, - "east": {"uv": [0, 0, 1, 1], "texture": "#0"}, - "south": {"uv": [0, 0, 1, 1], "texture": "#0"}, - "west": {"uv": [0, 0, 1, 1], "texture": "#0"} - } - }, - { - "from": [4.5, 2, 5.5], - "to": [9, 6, 6], - "faces": { - "north": {"uv": [0, 0, 2.5, 3], "texture": "#2"}, - "east": {"uv": [0, 0, 0.5, 3], "texture": "#2"}, - "west": {"uv": [0, 0, 0.5, 3], "texture": "#2"}, - "up": {"uv": [0, 0, 2.5, 0.5], "texture": "#2"}, - "down": {"uv": [0, 0, 2.5, 0.5], "texture": "#2"} - } - }, - { - "name": "lamp_red", - "from": [10, 7, 5.9], - "to": [12, 9, 5.9], - "faces": { - "north": {"uv": [1, 1, 3, 3], "texture": "#lamp_rednorth"} - } - }, - { - "name": "lamp_red2", - "from": [4, 7, 5.9], - "to": [6, 9, 5.9], - "faces": { - "north": {"uv": [1, 1, 3, 3], "texture": "#lamp_rednorth"} - } - }, - { - "name": "lamp_white2", - "from": [6, 7, 5.9], - "to": [8, 9, 5.9], - "faces": { - "north": {"uv": [1, 1, 3, 3], "texture": "#lamp_white2north"} - } - }, - { - "name": "lamp_white", - "from": [10, 3, 5.9], - "to": [12, 5, 5.9], - "faces": { - "north": {"uv": [1, 1, 3, 3], "texture": "#lamp_whitenorth"} - } - }, - { - "from": [9.5, 8, 5], - "to": [10, 9, 6], - "faces": { - "north": {"uv": [0, 0, 0.25, 0.5], "texture": "#1"}, - "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#1"}, - "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#1"}, - "up": {"uv": [0, 0, 0.25, 0.5], "texture": "#1"}, - "down": {"uv": [0, 0, 0.25, 0.5], "texture": "#1"} - } - }, - { - "from": [12, 8, 5], - "to": [12.5, 9, 6], - "faces": { - "north": {"uv": [0, 0, 0.25, 0.5], "texture": "#1"}, - "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#1"}, - "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#1"}, - "up": {"uv": [0, 0, 0.25, 0.5], "texture": "#1"}, - "down": {"uv": [0, 0, 0.25, 0.5], "texture": "#1"} - } - }, - { - "from": [10, 9, 5], - "to": [12, 9.5, 6], - "faces": { - "north": {"uv": [0, 0, 1, 0.25], "texture": "#1"}, - "east": {"uv": [0, 0, 0.5, 0.25], "texture": "#1"}, - "west": {"uv": [0, 0, 0.5, 0.25], "texture": "#1"}, - "up": {"uv": [0, 0, 1, 0.5], "texture": "#1"}, - "down": {"uv": [0, 0, 1, 0.5], "texture": "#1"} - } - }, - { - "from": [8, 8, 5], - "to": [8.5, 9, 6], - "faces": { - "north": {"uv": [0, 0, 0.25, 0.5], "texture": "#1"}, - "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#1"}, - "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#1"}, - "up": {"uv": [0, 0, 0.25, 0.5], "texture": "#1"}, - "down": {"uv": [0, 0, 0.25, 0.5], "texture": "#1"} - } - }, - { - "from": [3.5, 8, 5], - "to": [4, 9, 6], - "faces": { - "north": {"uv": [0, 0, 0.25, 0.5], "texture": "#1"}, - "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#1"}, - "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#1"}, - "up": {"uv": [0, 0, 0.25, 0.5], "texture": "#1"}, - "down": {"uv": [0, 0, 0.25, 0.5], "texture": "#1"} - } - }, - { - "from": [4, 9, 5], - "to": [8, 9.5, 6], - "faces": { - "north": {"uv": [0, 0, 2, 0.25], "texture": "#1"}, - "east": {"uv": [0, 0, 0.5, 0.25], "texture": "#1"}, - "west": {"uv": [0, 0, 0.5, 0.25], "texture": "#1"}, - "up": {"uv": [0, 0, 2, 0.5], "texture": "#1"}, - "down": {"uv": [0, 0, 2, 0.5], "texture": "#1"} - } - }, - { - "from": [10, 5, 5], - "to": [12, 5.5, 6], - "faces": { - "north": {"uv": [0, 0, 1, 0.25], "texture": "#1"}, - "east": {"uv": [0, 0, 0.5, 0.25], "texture": "#1"}, - "west": {"uv": [0, 0, 0.5, 0.25], "texture": "#1"}, - "up": {"uv": [0, 0, 1, 0.5], "texture": "#1"}, - "down": {"uv": [0, 0, 1, 0.5], "texture": "#1"} - } - }, - { - "from": [12, 4, 5], - "to": [12.5, 5, 6], - "faces": { - "north": {"uv": [0, 0, 0.25, 0.5], "texture": "#1"}, - "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#1"}, - "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#1"}, - "up": {"uv": [0, 0, 0.25, 0.5], "texture": "#1"}, - "down": {"uv": [0, 0, 0.25, 0.5], "texture": "#1"} - } - }, - { - "from": [9.5, 4, 5], - "to": [10, 5, 6], - "faces": { - "north": {"uv": [0, 0, 0.25, 0.5], "texture": "#1"}, - "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#1"}, - "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#1"}, - "up": {"uv": [0, 0, 0.25, 0.5], "texture": "#1"}, - "down": {"uv": [0, 0, 0.25, 0.5], "texture": "#1"} - } - } - ], - "groups": [ - { - "name": "body", - "origin": [11, 16, 13], - "color": 0, - "children": [0, 1, 2, 3, 4] - }, - { - "name": "lamps", - "origin": [11, 16, 13], - "color": 0, - "children": [5, 6, 7, 8] - }, - { - "name": "hoods1", - "origin": [8, 8, 8], - "color": 0, - "children": [9, 10, 11] - }, - { - "name": "hoods2", - "origin": [8, 8, 8], - "color": 0, - "children": [12, 13, 14] - }, - { - "name": "hoods3", - "origin": [8, 8, 8], - "color": 0, - "children": [15, 16, 17] - }, - { - "name": "signs", - "origin": [8, 8, 8], - "color": 0, - "children": [] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/textures/blocks/sh/sh_light_mast_sign.json b/src/main/resources/assets/opensignals/textures/blocks/sh/sh_light_mast_sign.json deleted file mode 100644 index 25dc9fc08..000000000 --- a/src/main/resources/assets/opensignals/textures/blocks/sh/sh_light_mast_sign.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "opensignals:blocks/mast_sign/black_dots", - "1": "opensignals:blocks/default/white", - "particle": "opensignals:blocks/mast_sign/black_dots" - }, - "elements": [ - { - "from": [2, 2, 5.5], - "to": [4, 8, 6], - "faces": { - "north": {"uv": [0, 0, 5, 16], "texture": "#0"}, - "east": {"uv": [0, 0, 0.5, 6], "texture": "#1"}, - "west": {"uv": [0, 0, 0.5, 6], "texture": "#1"}, - "up": {"uv": [0, 0, 2, 0.5], "texture": "#1"}, - "down": {"uv": [0, 0, 2, 0.5], "texture": "#1"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/textures/blocks/sh/sh_mast.json b/src/main/resources/assets/opensignals/textures/blocks/sh/sh_mast.json deleted file mode 100644 index c8518ce5b..000000000 --- a/src/main/resources/assets/opensignals/textures/blocks/sh/sh_mast.json +++ /dev/null @@ -1 +0,0 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "texture_size": [32, 32], "textures": {"0": "opensignals:blocks/default/mast", "particle": "opensignals:blocks/default/mast"}, "elements": [{"name": "mast", "from": [7, 0, 7], "to": [9, 16, 9], "faces": {"north": {"uv": [0, 0, 1, 8], "texture": "#0"}, "east": {"uv": [0, 0, 1, 8], "texture": "#0"}, "south": {"uv": [0, 0, 1, 8], "texture": "#0"}, "west": {"uv": [0, 0, 1, 8], "texture": "#0"}, "up": {"uv": [0, 0, 1, 1], "texture": "#0"}, "down": {"uv": [0, 0, 1, 1], "texture": "#0"}}}]} \ No newline at end of file diff --git a/src/main/resources/assets/opensignals/textures/blocks/sh/sh_mech_number.json b/src/main/resources/assets/opensignals/textures/blocks/sh/sh_mech_number.json deleted file mode 100644 index 0c3b7a1e3..000000000 --- a/src/main/resources/assets/opensignals/textures/blocks/sh/sh_mech_number.json +++ /dev/null @@ -1 +0,0 @@ -{"credit": "Made with Blockbench by Mc_Jeronimo", "texture_size": [32, 32], "textures": {"6": "opensignals:blocks/default/white", "particle": "opensignals:blocks/default/shield_black"}, "elements": [{"name": "sign", "from": [7, 12, 5], "to": [13, 17, 6], "faces": {"north": {"uv": [0, 0, 3, 2.5], "texture": "#6"}, "east": {"uv": [0, 0, 0.5, 2.5], "texture": "#6"}, "south": {"uv": [0, 0, 3, 2.5], "texture": "#6"}, "west": {"uv": [0, 0, 0.5, 2.5], "texture": "#6"}, "up": {"uv": [0, 0, 3, 0.5], "texture": "#6"}}}]} \ No newline at end of file