From 22568685a95cc152a7b1031a21e3395425dd82d2 Mon Sep 17 00:00:00 2001 From: Atsuishio <842960157@qq.com> Date: Thu, 1 May 2025 23:53:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=BF=80=E5=85=89=E9=98=B2?= =?UTF-8?q?=E5=BE=A1=E5=A1=94=E6=B8=B2=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../block/FuMO25BlockEntityRenderer.java | 2 +- .../renderer/entity/LaserTowerRenderer.java | 21 +- .../superbwarfare/geo/laser_tower.geo.json | 345 +++++------------- .../geo/laser_tower.lod1.geo.json | 268 ++++---------- .../geo/laser_tower.lod2.geo.json | 157 ++++---- .../textures/entity/laser_tower.png | Bin 5986 -> 10413 bytes 6 files changed, 263 insertions(+), 530 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/block/FuMO25BlockEntityRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/block/FuMO25BlockEntityRenderer.java index f8d8a3f3e..b7b3c8ebf 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/block/FuMO25BlockEntityRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/block/FuMO25BlockEntityRenderer.java @@ -21,7 +21,7 @@ public class FuMO25BlockEntityRenderer extends GeoBlockRenderer { @Override public void renderRecursively(PoseStack poseStack, LaserTowerEntity animatable, GeoBone bone, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, int color) { String name = bone.getName(); - if (name.equals("turret")) { + + Minecraft minecraft = Minecraft.getInstance(); + Frustum pCamera = minecraft.levelRenderer.getFrustum(); + + AABB aabb = animatable.getBoundingBoxForCulling().inflate(0.5); + if (aabb.hasNaN() || aabb.getSize() == 0.0) { + aabb = new AABB(animatable.getX() - 2.0, animatable.getY() - 2.0, animatable.getZ() - 2.0, animatable.getX() + 2.0, animatable.getY() + 2.0, animatable.getZ() + 2.0); + } + + if (name.equals("root")) { + bone.setHidden(!pCamera.isVisible(aabb)); + } + + if (name.equals("turret") || name.equals("turret2")) { bone.setRotY(-Mth.lerp(partialTick, animatable.yRotO, animatable.getYRot()) * Mth.DEG_TO_RAD); } - if (name.equals("barrel")) { + + if (name.equals("barrel") || name.equals("barrel2")) { bone.setRotX(-Mth.lerp(partialTick, animatable.xRotO, animatable.getXRot()) * Mth.DEG_TO_RAD); } diff --git a/src/main/resources/assets/superbwarfare/geo/laser_tower.geo.json b/src/main/resources/assets/superbwarfare/geo/laser_tower.geo.json index 7c57197c4..e72622fd0 100644 --- a/src/main/resources/assets/superbwarfare/geo/laser_tower.geo.json +++ b/src/main/resources/assets/superbwarfare/geo/laser_tower.geo.json @@ -11,8 +11,13 @@ "visible_bounds_offset": [0, 1.25, 0] }, "bones": [ + { + "name": "root", + "pivot": [0, 0, 0] + }, { "name": "turret", + "parent": "root", "pivot": [0, 10.5, 0] }, { @@ -415,77 +420,6 @@ } ] }, - { - "name": "laser", - "parent": "barrel", - "pivot": [0, 22.2505, 0], - "cubes": [ - { - "origin": [-0.3, 21.95024, -1.6], - "size": [0.6, 0.6, 1.6], - "uv": { - "north": {"uv": [69, 68], "uv_size": [1, 1]}, - "east": {"uv": [69, 68], "uv_size": [1, 1]}, - "south": {"uv": [69, 68], "uv_size": [1, 1]}, - "west": {"uv": [69, 68], "uv_size": [1, 1]}, - "up": {"uv": [70, 69], "uv_size": [-1, -1]}, - "down": {"uv": [70, 69], "uv_size": [-1, -1]} - } - }, - { - "origin": [-0.45, 21.80014, -1.6], - "size": [0.9, 0, 1.6], - "uv": { - "up": {"uv": [71, 69], "uv_size": [-1, -1]} - } - }, - { - "origin": [-0.4503, 21.80044, -1.6], - "size": [0.9, 0, 1.6], - "pivot": [0, 22.25044, -1.2], - "rotation": [0, 0, 90], - "uv": { - "up": {"uv": [71, 69], "uv_size": [-1, -1]} - } - }, - { - "origin": [-0.45, 21.80014, -1.6], - "size": [0.9, 0, 1.6], - "pivot": [0, 22.25044, -1.2], - "rotation": [0, 0, -180], - "uv": { - "up": {"uv": [71, 69], "uv_size": [-1, -1]} - } - }, - { - "origin": [-0.4503, 21.80044, -1.6], - "size": [0.9, 0, 1.6], - "pivot": [0, 22.25044, -1.2], - "rotation": [0, 0, -90], - "uv": { - "up": {"uv": [71, 69], "uv_size": [-1, -1]} - } - }, - { - "origin": [-0.4003, 21.80104, -0.85], - "size": [0.9, 0, 0.9], - "pivot": [0.05, 22.25104, -0.45], - "rotation": [90, 0, -90], - "uv": { - "up": {"uv": [71, 69], "uv_size": [-1, -1]} - } - }, - { - "origin": [-0.45, 22.25074, -2.05], - "size": [0.9, 0, 0.9], - "pivot": [0, 22.25074, -1.6], - "rotation": [-90, 0, -90], - "uv": { - "up": {"uv": [71, 69], "uv_size": [-1, -1]} - } - } - ] - }, { "name": "bone6", "parent": "barrel", @@ -1072,106 +1006,6 @@ "south": {"uv": [67, 20], "uv_size": [1, 1]}, "west": {"uv": [67, 23], "uv_size": [1, 1]} } - }, - { - "origin": [0.19267, 23.32194, 6.15], - "size": [0.25, 4.085, 0.25], - "pivot": [0, 25.36444, 6.15], - "rotation": [0, -45, -90], - "uv": { - "south": {"uv": [27, 64], "uv_size": [1, 4]}, - "west": {"uv": [28, 64], "uv_size": [1, 4]} - } - }, - { - "origin": [0.19267, 22.82194, 6.15], - "size": [0.25, 4.085, 0.25], - "pivot": [0, 24.86444, 6.15], - "rotation": [0, -45, -90], - "uv": { - "south": {"uv": [29, 64], "uv_size": [1, 4]}, - "west": {"uv": [30, 64], "uv_size": [1, 4]} - } - }, - { - "origin": [0.19267, 22.32194, 6.15], - "size": [0.25, 4.085, 0.25], - "pivot": [0, 24.36444, 6.15], - "rotation": [0, -45, -90], - "uv": { - "south": {"uv": [35, 64], "uv_size": [1, 4]}, - "west": {"uv": [60, 64], "uv_size": [1, 4]} - } - }, - { - "origin": [0.19267, 21.82194, 6.15], - "size": [0.25, 4.085, 0.25], - "pivot": [0, 23.86444, 6.15], - "rotation": [0, -45, -90], - "uv": { - "south": {"uv": [61, 64], "uv_size": [1, 4]}, - "west": {"uv": [64, 61], "uv_size": [1, 4]} - } - }, - { - "origin": [0.19267, 21.32194, 6.15], - "size": [0.25, 4.085, 0.25], - "pivot": [0, 23.36444, 6.15], - "rotation": [0, -45, -90], - "uv": { - "south": {"uv": [62, 64], "uv_size": [1, 4]}, - "west": {"uv": [63, 64], "uv_size": [1, 4]} - } - }, - { - "origin": [0.19267, 20.82194, 6.15], - "size": [0.25, 4.085, 0.25], - "pivot": [0, 22.86444, 6.15], - "rotation": [0, -45, -90], - "uv": { - "south": {"uv": [3, 65], "uv_size": [1, 4]}, - "west": {"uv": [6, 65], "uv_size": [1, 4]} - } - }, - { - "origin": [0.19267, 20.32194, 6.15], - "size": [0.25, 4.085, 0.25], - "pivot": [0, 22.36444, 6.15], - "rotation": [0, -45, -90], - "uv": { - "south": {"uv": [7, 65], "uv_size": [1, 4]}, - "west": {"uv": [65, 11], "uv_size": [1, 4]} - } - }, - { - "origin": [0.19267, 19.82194, 6.15], - "size": [0.25, 4.085, 0.25], - "pivot": [0, 21.86444, 6.15], - "rotation": [0, -45, -90], - "uv": { - "south": {"uv": [65, 15], "uv_size": [1, 4]}, - "west": {"uv": [65, 22], "uv_size": [1, 4]} - } - }, - { - "origin": [0.19267, 19.32194, 6.15], - "size": [0.25, 4.085, 0.25], - "pivot": [0, 21.36444, 6.15], - "rotation": [0, -45, -90], - "uv": { - "south": {"uv": [65, 45], "uv_size": [1, 4]}, - "west": {"uv": [53, 65], "uv_size": [1, 4]} - } - }, - { - "origin": [0.19267, 18.82194, 6.15], - "size": [0.25, 4.085, 0.25], - "pivot": [0, 20.86444, 6.15], - "rotation": [0, -45, -90], - "uv": { - "south": {"uv": [54, 65], "uv_size": [1, 4]}, - "west": {"uv": [55, 65], "uv_size": [1, 4]} - } } ] }, @@ -1944,56 +1778,9 @@ } ] }, - { - "name": "pan2", - "parent": "bone5", - "pivot": [0, 11, 0], - "rotation": [0, -22.5, 0], - "cubes": [ - { - "origin": [-2.27322, 6.0118, -0.74998], - "size": [4.5464, 10.97634, 0.75], - "pivot": [0, 11.5, 0.00002], - "rotation": [-90, -22.5, 0], - "uv": { - "up": {"uv": [61, 30], "uv_size": [5, 1]}, - "down": {"uv": [61, 32], "uv_size": [5, -1]} - } - }, - { - "origin": [-5.48825, 9.22683, -0.74998], - "size": [10.97634, 4.5464, 0.75], - "pivot": [0, 11.5, 0.00002], - "rotation": [-90, -22.5, 0], - "uv": { - "east": {"uv": [2, 61], "uv_size": [1, 5]}, - "west": {"uv": [10, 61], "uv_size": [1, 5]} - } - }, - { - "origin": [-5.4882, 9.22678, -0.74998], - "size": [10.97634, 4.5464, 0.75], - "pivot": [0, 11.5, 0.00002], - "rotation": [-90, -67.5, 0], - "uv": { - "east": {"uv": [11, 61], "uv_size": [1, 5]}, - "west": {"uv": [12, 61], "uv_size": [1, 5]} - } - }, - { - "origin": [-2.27317, 6.01175, -0.74998], - "size": [4.5464, 10.97634, 0.75], - "pivot": [0, 11.5, 0.00002], - "rotation": [-90, -67.5, 0], - "uv": { - "up": {"uv": [61, 32], "uv_size": [5, 1]}, - "down": {"uv": [61, 34], "uv_size": [5, -1]} - } - } - ] - }, { "name": "base", + "parent": "root", "pivot": [0, 0, 0] }, { @@ -2003,8 +1790,8 @@ "rotation": [0, -22.5, 0], "cubes": [ { - "origin": [-2.36794, 4.78313, -0.99998], - "size": [4.73584, 11.43369, 1], + "origin": [-2.36794, 4.78313, -1.09998], + "size": [4.73584, 11.43369, 1.1], "pivot": [0, 10.5, 0.00002], "rotation": [-90, -22.5, 0], "uv": { @@ -2014,8 +1801,8 @@ } }, { - "origin": [-5.71693, 8.13212, -0.99998], - "size": [11.43369, 4.73584, 1], + "origin": [-5.71693, 8.13212, -1.09998], + "size": [11.43369, 4.73584, 1.1], "pivot": [0, 10.5, 0.00002], "rotation": [-90, -22.5, 0], "uv": { @@ -2025,8 +1812,8 @@ } }, { - "origin": [-5.71687, 8.13206, -0.99998], - "size": [11.43369, 4.73584, 1], + "origin": [-5.71687, 8.13206, -1.09998], + "size": [11.43369, 4.73584, 1.1], "pivot": [0, 10.5, 0.00002], "rotation": [-90, -67.5, 0], "uv": { @@ -2036,8 +1823,8 @@ } }, { - "origin": [-2.36788, 4.78307, -0.99998], - "size": [4.73584, 11.43369, 1], + "origin": [-2.36788, 4.78307, -1.09998], + "size": [4.73584, 11.43369, 1.1], "pivot": [0, 10.5, 0.00002], "rotation": [-90, -67.5, 0], "uv": { @@ -2337,30 +2124,6 @@ "up": {"uv": [26, 13], "uv_size": [11, 11]} } }, - { - "origin": [-5.625, 3.375, -2.025], - "size": [11.25, 4.15, 4.05], - "uv": { - "north": {"uv": [46, 0], "uv_size": [11, 4]}, - "east": {"uv": [49, 6], "uv_size": [4, 4]}, - "south": {"uv": [18, 46], "uv_size": [11, 4]}, - "west": {"uv": [34, 49], "uv_size": [4, 4]}, - "up": {"uv": [47, 22], "uv_size": [11, 4]} - } - }, - { - "origin": [-5.625, 3.375, -2.025], - "size": [11.25, 4.15, 4.05], - "pivot": [0, 4.95, 0], - "rotation": [0, 90, 0], - "uv": { - "north": {"uv": [47, 34], "uv_size": [11, 4]}, - "east": {"uv": [38, 49], "uv_size": [4, 4]}, - "south": {"uv": [47, 38], "uv_size": [11, 4]}, - "west": {"uv": [42, 49], "uv_size": [4, 4]}, - "up": {"uv": [47, 42], "uv_size": [11, 4]} - } - }, { "origin": [4.5, 0, -7.2], "size": [2.7, 1.8, 2.7], @@ -2410,6 +2173,86 @@ } } ] + }, + { + "name": "turret2", + "pivot": [0, 10.5, 0] + }, + { + "name": "barrel2", + "parent": "turret2", + "pivot": [0, 22.25, 0] + }, + { + "name": "laser", + "parent": "barrel2", + "pivot": [0, 22.2505, 0], + "cubes": [ + { + "origin": [-0.3, 21.95024, -1.6], + "size": [0.6, 0.6, 1.6], + "uv": { + "north": {"uv": [69, 68], "uv_size": [1, 1]}, + "east": {"uv": [69, 68], "uv_size": [1, 1]}, + "south": {"uv": [69, 68], "uv_size": [1, 1]}, + "west": {"uv": [69, 68], "uv_size": [1, 1]}, + "up": {"uv": [70, 69], "uv_size": [-1, -1]}, + "down": {"uv": [70, 69], "uv_size": [-1, -1]} + } + }, + { + "origin": [-0.45, 21.80014, -1.6], + "size": [0.9, 0, 1.6], + "uv": { + "up": {"uv": [71, 69], "uv_size": [-1, -1]} + } + }, + { + "origin": [-0.4503, 21.80044, -1.6], + "size": [0.9, 0, 1.6], + "pivot": [0, 22.25044, -1.2], + "rotation": [0, 0, 90], + "uv": { + "up": {"uv": [71, 69], "uv_size": [-1, -1]} + } + }, + { + "origin": [-0.45, 21.80014, -1.6], + "size": [0.9, 0, 1.6], + "pivot": [0, 22.25044, -1.2], + "rotation": [0, 0, -180], + "uv": { + "up": {"uv": [71, 69], "uv_size": [-1, -1]} + } + }, + { + "origin": [-0.4503, 21.80044, -1.6], + "size": [0.9, 0, 1.6], + "pivot": [0, 22.25044, -1.2], + "rotation": [0, 0, -90], + "uv": { + "up": {"uv": [71, 69], "uv_size": [-1, -1]} + } + }, + { + "origin": [-0.4003, 21.80104, -0.85], + "size": [0.9, 0, 0.9], + "pivot": [0.05, 22.25104, -0.45], + "rotation": [90, 0, -90], + "uv": { + "up": {"uv": [71, 69], "uv_size": [-1, -1]} + } + }, + { + "origin": [-0.45, 22.25074, -2.05], + "size": [0.9, 0, 0.9], + "pivot": [0, 22.25074, -1.6], + "rotation": [-90, 0, -90], + "uv": { + "up": {"uv": [71, 69], "uv_size": [-1, -1]} + } + } + ] } ] } diff --git a/src/main/resources/assets/superbwarfare/geo/laser_tower.lod1.geo.json b/src/main/resources/assets/superbwarfare/geo/laser_tower.lod1.geo.json index 2b86164db..60fc264c6 100644 --- a/src/main/resources/assets/superbwarfare/geo/laser_tower.lod1.geo.json +++ b/src/main/resources/assets/superbwarfare/geo/laser_tower.lod1.geo.json @@ -11,8 +11,13 @@ "visible_bounds_offset": [0, 1.25, 0] }, "bones": [ + { + "name": "root", + "pivot": [0, 0, 0] + }, { "name": "turret", + "parent": "root", "pivot": [0, 10.5, 0] }, { @@ -293,112 +298,6 @@ "west": {"uv": [42, 53], "uv_size": [2, 5]}, "down": {"uv": [54, 54], "uv_size": [5, -2]} } - }, - { - "origin": [1.5, 18.45, 4], - "size": [0.6, 0.6, 0.05], - "pivot": [1.25, 19.8, 5], - "rotation": [0, 0, 45], - "uv": { - "east": {"uv": [67, 24], "uv_size": [1, 1]}, - "south": {"uv": [67, 31], "uv_size": [1, 1]}, - "west": {"uv": [67, 32], "uv_size": [1, 1]}, - "up": {"uv": [67, 33], "uv_size": [1, 1]}, - "down": {"uv": [67, 35], "uv_size": [1, -1]} - } - }, - { - "origin": [-0.10355, 18.46863, 4], - "size": [0.4, 0.4, 0.05], - "uv": { - "east": {"uv": [67, 35], "uv_size": [1, 1]}, - "south": {"uv": [36, 67], "uv_size": [1, 1]}, - "west": {"uv": [67, 36], "uv_size": [1, 1]}, - "up": {"uv": [37, 67], "uv_size": [1, 1]}, - "down": {"uv": [67, 38], "uv_size": [1, -1]} - } - }, - { - "origin": [-0.85355, 18.46863, 4], - "size": [0.4, 0.4, 0.05], - "uv": { - "east": {"uv": [38, 67], "uv_size": [1, 1]}, - "south": {"uv": [67, 38], "uv_size": [1, 1]}, - "west": {"uv": [39, 67], "uv_size": [1, 1]}, - "up": {"uv": [40, 67], "uv_size": [1, 1]}, - "down": {"uv": [67, 41], "uv_size": [1, -1]} - } - } - ] - }, - { - "name": "laser", - "parent": "barrel", - "pivot": [0, 22.2505, 0], - "cubes": [ - { - "origin": [-0.3, 21.95024, -1.6], - "size": [0.6, 0.6, 1.6], - "uv": { - "north": {"uv": [69, 68], "uv_size": [1, 1]}, - "east": {"uv": [69, 68], "uv_size": [1, 1]}, - "south": {"uv": [69, 68], "uv_size": [1, 1]}, - "west": {"uv": [69, 68], "uv_size": [1, 1]}, - "up": {"uv": [70, 69], "uv_size": [-1, -1]}, - "down": {"uv": [70, 69], "uv_size": [-1, -1]} - } - }, - { - "origin": [-0.45, 21.80014, -1.6], - "size": [0.9, 0, 1.6], - "uv": { - "up": {"uv": [71, 69], "uv_size": [-1, -1]} - } - }, - { - "origin": [-0.4503, 21.80044, -1.6], - "size": [0.9, 0, 1.6], - "pivot": [0, 22.25044, -1.2], - "rotation": [0, 0, 90], - "uv": { - "up": {"uv": [71, 69], "uv_size": [-1, -1]} - } - }, - { - "origin": [-0.45, 21.80014, -1.6], - "size": [0.9, 0, 1.6], - "pivot": [0, 22.25044, -1.2], - "rotation": [0, 0, -180], - "uv": { - "up": {"uv": [71, 69], "uv_size": [-1, -1]} - } - }, - { - "origin": [-0.4503, 21.80044, -1.6], - "size": [0.9, 0, 1.6], - "pivot": [0, 22.25044, -1.2], - "rotation": [0, 0, -90], - "uv": { - "up": {"uv": [71, 69], "uv_size": [-1, -1]} - } - }, - { - "origin": [-0.4003, 21.80104, -0.85], - "size": [0.9, 0, 0.9], - "pivot": [0.05, 22.25104, -0.45], - "rotation": [90, 0, -90], - "uv": { - "up": {"uv": [71, 69], "uv_size": [-1, -1]} - } - }, - { - "origin": [-0.45, 22.25074, -2.05], - "size": [0.9, 0, 0.9], - "pivot": [0, 22.25074, -1.6], - "rotation": [-90, 0, -90], - "uv": { - "up": {"uv": [71, 69], "uv_size": [-1, -1]} - } } ] }, @@ -746,56 +645,6 @@ "south": {"uv": [67, 20], "uv_size": [1, 1]}, "west": {"uv": [67, 23], "uv_size": [1, 1]} } - }, - { - "origin": [0.19267, 22.82194, 6.15], - "size": [0.25, 4.085, 0.25], - "pivot": [0, 24.86444, 6.15], - "rotation": [0, -45, -90], - "uv": { - "south": {"uv": [29, 64], "uv_size": [1, 4]}, - "west": {"uv": [30, 64], "uv_size": [1, 4]} - } - }, - { - "origin": [0.19267, 21.82194, 6.15], - "size": [0.25, 4.085, 0.25], - "pivot": [0, 23.86444, 6.15], - "rotation": [0, -45, -90], - "uv": { - "south": {"uv": [61, 64], "uv_size": [1, 4]}, - "west": {"uv": [64, 61], "uv_size": [1, 4]} - } - }, - { - "origin": [0.19267, 20.82194, 6.15], - "size": [0.25, 4.085, 0.25], - "pivot": [0, 22.86444, 6.15], - "rotation": [0, -45, -90], - "uv": { - "south": {"uv": [3, 65], "uv_size": [1, 4]}, - "west": {"uv": [6, 65], "uv_size": [1, 4]} - } - }, - { - "origin": [0.19267, 19.82194, 6.15], - "size": [0.25, 4.085, 0.25], - "pivot": [0, 21.86444, 6.15], - "rotation": [0, -45, -90], - "uv": { - "south": {"uv": [65, 15], "uv_size": [1, 4]}, - "west": {"uv": [65, 22], "uv_size": [1, 4]} - } - }, - { - "origin": [0.19267, 18.82194, 6.15], - "size": [0.25, 4.085, 0.25], - "pivot": [0, 20.86444, 6.15], - "rotation": [0, -45, -90], - "uv": { - "south": {"uv": [54, 65], "uv_size": [1, 4]}, - "west": {"uv": [55, 65], "uv_size": [1, 4]} - } } ] }, @@ -1410,6 +1259,7 @@ }, { "name": "base", + "parent": "root", "pivot": [0, 0, 0] }, { @@ -1612,77 +1462,85 @@ "west": {"uv": [36, 40], "uv_size": [11, 5]}, "up": {"uv": [26, 13], "uv_size": [11, 11]} } - }, + } + ] + }, + { + "name": "turret2", + "pivot": [0, 10.5, 0] + }, + { + "name": "barrel2", + "parent": "turret2", + "pivot": [0, 22.25, 0] + }, + { + "name": "laser", + "parent": "barrel2", + "pivot": [0, 22.2505, 0], + "cubes": [ { - "origin": [-5.625, 3.375, -2.025], - "size": [11.25, 4.15, 4.05], + "origin": [-0.3, 21.95024, -1.6], + "size": [0.6, 0.6, 1.6], "uv": { - "north": {"uv": [46, 0], "uv_size": [11, 4]}, - "east": {"uv": [49, 6], "uv_size": [4, 4]}, - "south": {"uv": [18, 46], "uv_size": [11, 4]}, - "west": {"uv": [34, 49], "uv_size": [4, 4]}, - "up": {"uv": [47, 22], "uv_size": [11, 4]} + "north": {"uv": [69, 68], "uv_size": [1, 1]}, + "east": {"uv": [69, 68], "uv_size": [1, 1]}, + "south": {"uv": [69, 68], "uv_size": [1, 1]}, + "west": {"uv": [69, 68], "uv_size": [1, 1]}, + "up": {"uv": [70, 69], "uv_size": [-1, -1]}, + "down": {"uv": [70, 69], "uv_size": [-1, -1]} } }, { - "origin": [-5.625, 3.375, -2.025], - "size": [11.25, 4.15, 4.05], - "pivot": [0, 4.95, 0], - "rotation": [0, 90, 0], + "origin": [-0.45, 21.80014, -1.6], + "size": [0.9, 0, 1.6], "uv": { - "north": {"uv": [47, 34], "uv_size": [11, 4]}, - "east": {"uv": [38, 49], "uv_size": [4, 4]}, - "south": {"uv": [47, 38], "uv_size": [11, 4]}, - "west": {"uv": [42, 49], "uv_size": [4, 4]}, - "up": {"uv": [47, 42], "uv_size": [11, 4]} + "up": {"uv": [71, 69], "uv_size": [-1, -1]} } }, { - "origin": [4.5, 0, -7.2], - "size": [2.7, 1.8, 2.7], + "origin": [-0.4503, 21.80044, -1.6], + "size": [0.9, 0, 1.6], + "pivot": [0, 22.25044, -1.2], + "rotation": [0, 0, 90], "uv": { - "north": {"uv": [35, 5], "uv_size": [3, 2]}, - "east": {"uv": [58, 34], "uv_size": [3, 2]}, - "south": {"uv": [58, 36], "uv_size": [3, 2]}, - "west": {"uv": [58, 38], "uv_size": [3, 2]}, - "up": {"uv": [5, 35], "uv_size": [3, 3]}, - "down": {"uv": [25, 58], "uv_size": [3, -3]} + "up": {"uv": [71, 69], "uv_size": [-1, -1]} } }, { - "origin": [-7.2, 0, -7.2], - "size": [2.7, 1.8, 2.7], + "origin": [-0.45, 21.80014, -1.6], + "size": [0.9, 0, 1.6], + "pivot": [0, 22.25044, -1.2], + "rotation": [0, 0, -180], "uv": { - "north": {"uv": [40, 58], "uv_size": [3, 2]}, - "east": {"uv": [58, 40], "uv_size": [3, 2]}, - "south": {"uv": [58, 42], "uv_size": [3, 2]}, - "west": {"uv": [43, 58], "uv_size": [3, 2]}, - "up": {"uv": [54, 55], "uv_size": [3, 3]}, - "down": {"uv": [5, 59], "uv_size": [3, -3]} + "up": {"uv": [71, 69], "uv_size": [-1, -1]} } }, { - "origin": [4.5, 0, 4.5], - "size": [2.7, 1.8, 2.7], + "origin": [-0.4503, 21.80044, -1.6], + "size": [0.9, 0, 1.6], + "pivot": [0, 22.25044, -1.2], + "rotation": [0, 0, -90], "uv": { - "north": {"uv": [0, 59], "uv_size": [3, 2]}, - "east": {"uv": [5, 59], "uv_size": [3, 2]}, - "south": {"uv": [8, 59], "uv_size": [3, 2]}, - "west": {"uv": [11, 59], "uv_size": [3, 2]}, - "up": {"uv": [14, 56], "uv_size": [3, 3]}, - "down": {"uv": [17, 59], "uv_size": [3, -3]} + "up": {"uv": [71, 69], "uv_size": [-1, -1]} } }, { - "origin": [-7.2, 0, 4.5], - "size": [2.7, 1.8, 2.7], + "origin": [-0.4003, 21.80104, -0.85], + "size": [0.9, 0, 0.9], + "pivot": [0.05, 22.25104, -0.45], + "rotation": [90, 0, -90], "uv": { - "north": {"uv": [58, 44], "uv_size": [3, 2]}, - "east": {"uv": [46, 58], "uv_size": [3, 2]}, - "south": {"uv": [49, 58], "uv_size": [3, 2]}, - "west": {"uv": [52, 58], "uv_size": [3, 2]}, - "up": {"uv": [8, 56], "uv_size": [3, 3]}, - "down": {"uv": [11, 59], "uv_size": [3, -3]} + "up": {"uv": [71, 69], "uv_size": [-1, -1]} + } + }, + { + "origin": [-0.45, 22.25074, -2.05], + "size": [0.9, 0, 0.9], + "pivot": [0, 22.25074, -1.6], + "rotation": [-90, 0, -90], + "uv": { + "up": {"uv": [71, 69], "uv_size": [-1, -1]} } } ] diff --git a/src/main/resources/assets/superbwarfare/geo/laser_tower.lod2.geo.json b/src/main/resources/assets/superbwarfare/geo/laser_tower.lod2.geo.json index fc0a28545..9ba8c9618 100644 --- a/src/main/resources/assets/superbwarfare/geo/laser_tower.lod2.geo.json +++ b/src/main/resources/assets/superbwarfare/geo/laser_tower.lod2.geo.json @@ -11,8 +11,13 @@ "visible_bounds_offset": [0, 1.25, 0] }, "bones": [ + { + "name": "root", + "pivot": [0, 10.5, 0] + }, { "name": "turret", + "parent": "root", "pivot": [0, 10.5, 0] }, { @@ -76,77 +81,6 @@ } ] }, - { - "name": "laser", - "parent": "barrel", - "pivot": [0, 22.2505, 0], - "cubes": [ - { - "origin": [-0.3, 21.95024, -1.6], - "size": [0.6, 0.6, 1.6], - "uv": { - "north": {"uv": [69, 68], "uv_size": [1, 1]}, - "east": {"uv": [69, 68], "uv_size": [1, 1]}, - "south": {"uv": [69, 68], "uv_size": [1, 1]}, - "west": {"uv": [69, 68], "uv_size": [1, 1]}, - "up": {"uv": [70, 69], "uv_size": [-1, -1]}, - "down": {"uv": [70, 69], "uv_size": [-1, -1]} - } - }, - { - "origin": [-0.45, 21.80014, -1.6], - "size": [0.9, 0, 1.6], - "uv": { - "up": {"uv": [71, 69], "uv_size": [-1, -1]} - } - }, - { - "origin": [-0.4503, 21.80044, -1.6], - "size": [0.9, 0, 1.6], - "pivot": [0, 22.25044, -1.2], - "rotation": [0, 0, 90], - "uv": { - "up": {"uv": [71, 69], "uv_size": [-1, -1]} - } - }, - { - "origin": [-0.45, 21.80014, -1.6], - "size": [0.9, 0, 1.6], - "pivot": [0, 22.25044, -1.2], - "rotation": [0, 0, -180], - "uv": { - "up": {"uv": [71, 69], "uv_size": [-1, -1]} - } - }, - { - "origin": [-0.4503, 21.80044, -1.6], - "size": [0.9, 0, 1.6], - "pivot": [0, 22.25044, -1.2], - "rotation": [0, 0, -90], - "uv": { - "up": {"uv": [71, 69], "uv_size": [-1, -1]} - } - }, - { - "origin": [-0.4003, 21.80104, -0.85], - "size": [0.9, 0, 0.9], - "pivot": [0.05, 22.25104, -0.45], - "rotation": [90, 0, -90], - "uv": { - "up": {"uv": [71, 69], "uv_size": [-1, -1]} - } - }, - { - "origin": [-0.45, 22.25074, -2.05], - "size": [0.9, 0, 0.9], - "pivot": [0, 22.25074, -1.6], - "rotation": [-90, 0, -90], - "uv": { - "up": {"uv": [71, 69], "uv_size": [-1, -1]} - } - } - ] - }, { "name": "bone11", "parent": "barrel", @@ -464,6 +398,7 @@ }, { "name": "base", + "parent": "root", "pivot": [0, 0, 0] }, { @@ -606,6 +541,86 @@ } } ] + }, + { + "name": "turret2", + "pivot": [0, 10.5, 0] + }, + { + "name": "barrel2", + "parent": "turret2", + "pivot": [0, 22.25, 0] + }, + { + "name": "laser", + "parent": "barrel2", + "pivot": [0, 22.2505, 0], + "cubes": [ + { + "origin": [-0.3, 21.95024, -1.6], + "size": [0.6, 0.6, 1.6], + "uv": { + "north": {"uv": [69, 68], "uv_size": [1, 1]}, + "east": {"uv": [69, 68], "uv_size": [1, 1]}, + "south": {"uv": [69, 68], "uv_size": [1, 1]}, + "west": {"uv": [69, 68], "uv_size": [1, 1]}, + "up": {"uv": [70, 69], "uv_size": [-1, -1]}, + "down": {"uv": [70, 69], "uv_size": [-1, -1]} + } + }, + { + "origin": [-0.45, 21.80014, -1.6], + "size": [0.9, 0, 1.6], + "uv": { + "up": {"uv": [71, 69], "uv_size": [-1, -1]} + } + }, + { + "origin": [-0.4503, 21.80044, -1.6], + "size": [0.9, 0, 1.6], + "pivot": [0, 22.25044, -1.2], + "rotation": [0, 0, 90], + "uv": { + "up": {"uv": [71, 69], "uv_size": [-1, -1]} + } + }, + { + "origin": [-0.45, 21.80014, -1.6], + "size": [0.9, 0, 1.6], + "pivot": [0, 22.25044, -1.2], + "rotation": [0, 0, -180], + "uv": { + "up": {"uv": [71, 69], "uv_size": [-1, -1]} + } + }, + { + "origin": [-0.4503, 21.80044, -1.6], + "size": [0.9, 0, 1.6], + "pivot": [0, 22.25044, -1.2], + "rotation": [0, 0, -90], + "uv": { + "up": {"uv": [71, 69], "uv_size": [-1, -1]} + } + }, + { + "origin": [-0.4003, 21.80104, -0.85], + "size": [0.9, 0, 0.9], + "pivot": [0.05, 22.25104, -0.45], + "rotation": [90, 0, -90], + "uv": { + "up": {"uv": [71, 69], "uv_size": [-1, -1]} + } + }, + { + "origin": [-0.45, 22.25074, -2.05], + "size": [0.9, 0, 0.9], + "pivot": [0, 22.25074, -1.6], + "rotation": [-90, 0, -90], + "uv": { + "up": {"uv": [71, 69], "uv_size": [-1, -1]} + } + } + ] } ] } diff --git a/src/main/resources/assets/superbwarfare/textures/entity/laser_tower.png b/src/main/resources/assets/superbwarfare/textures/entity/laser_tower.png index b0a967292db9f01521d16605a8233507303beac7..422404dd393ce529efc278283d8fe3f6a28edbc8 100644 GIT binary patch literal 10413 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