From 320d4e0950d8df2afdd001636a58d1b4c03f6606 Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Fri, 6 Dec 2024 16:31:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9B=B4=E5=A4=9A=E6=8C=87?= =?UTF-8?q?=E7=A4=BA=E7=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/layer/AnnihilatorLedLayer.java | 28 + .../layer/AnnihilatorLedLightLayer.java | 28 + .../client/layer/AnnihilatorPowerLayer.java | 32 + .../layer/AnnihilatorPowerLightLayer.java | 32 + .../client/model/entity/AnnihilatorModel.java | 29 + .../renderer/entity/AnnihilatorRenderer.java | 8 +- .../client/screens/CannonHudOverlay.java | 2 +- .../entity/AnnihilatorEntity.java | 10 +- .../superbwarfare/geo/annihilator.geo.json | 949 +++++++++++------- .../textures/entity/annihilator.png | Bin 5583 -> 5593 bytes .../textures/entity/annihilator_e.png | Bin 5272 -> 170 bytes .../textures/entity/annihilator_led.png | Bin 0 -> 247 bytes .../textures/entity/annihilator_power.png | Bin 0 -> 280 bytes 13 files changed, 763 insertions(+), 355 deletions(-) create mode 100644 src/main/java/com/atsuishio/superbwarfare/client/layer/AnnihilatorLedLayer.java create mode 100644 src/main/java/com/atsuishio/superbwarfare/client/layer/AnnihilatorLedLightLayer.java create mode 100644 src/main/java/com/atsuishio/superbwarfare/client/layer/AnnihilatorPowerLayer.java create mode 100644 src/main/java/com/atsuishio/superbwarfare/client/layer/AnnihilatorPowerLightLayer.java create mode 100644 src/main/resources/assets/superbwarfare/textures/entity/annihilator_led.png create mode 100644 src/main/resources/assets/superbwarfare/textures/entity/annihilator_power.png diff --git a/src/main/java/com/atsuishio/superbwarfare/client/layer/AnnihilatorLedLayer.java b/src/main/java/com/atsuishio/superbwarfare/client/layer/AnnihilatorLedLayer.java new file mode 100644 index 000000000..cead86000 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/client/layer/AnnihilatorLedLayer.java @@ -0,0 +1,28 @@ +package com.atsuishio.superbwarfare.client.layer; + +import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.entity.AnnihilatorEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoRenderer; +import software.bernie.geckolib.renderer.layer.GeoRenderLayer; + +public class AnnihilatorLedLayer extends GeoRenderLayer { + + private static final ResourceLocation LAYER = ModUtils.loc("textures/entity/annihilator_led.png"); + + public AnnihilatorLedLayer(GeoRenderer entityRenderer) { + super(entityRenderer); + } + + @Override + public void render(PoseStack poseStack, AnnihilatorEntity animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) { + RenderType glowRenderType = RenderType.entityTranslucent(LAYER); + getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, packedLight, OverlayTexture.NO_OVERLAY, 1, 1, 1, 1); + } +} diff --git a/src/main/java/com/atsuishio/superbwarfare/client/layer/AnnihilatorLedLightLayer.java b/src/main/java/com/atsuishio/superbwarfare/client/layer/AnnihilatorLedLightLayer.java new file mode 100644 index 000000000..616ba8044 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/client/layer/AnnihilatorLedLightLayer.java @@ -0,0 +1,28 @@ +package com.atsuishio.superbwarfare.client.layer; + +import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.entity.AnnihilatorEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoRenderer; +import software.bernie.geckolib.renderer.layer.GeoRenderLayer; + +public class AnnihilatorLedLightLayer extends GeoRenderLayer { + + private static final ResourceLocation LAYER = ModUtils.loc("textures/entity/annihilator_led.png"); + + public AnnihilatorLedLightLayer(GeoRenderer entityRenderer) { + super(entityRenderer); + } + + @Override + public void render(PoseStack poseStack, AnnihilatorEntity animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) { + RenderType glowRenderType = RenderType.eyes(LAYER); + getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, packedLight, OverlayTexture.NO_OVERLAY, 1, 1, 1, 1); + } +} diff --git a/src/main/java/com/atsuishio/superbwarfare/client/layer/AnnihilatorPowerLayer.java b/src/main/java/com/atsuishio/superbwarfare/client/layer/AnnihilatorPowerLayer.java new file mode 100644 index 000000000..14410d768 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/client/layer/AnnihilatorPowerLayer.java @@ -0,0 +1,32 @@ +package com.atsuishio.superbwarfare.client.layer; + +import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.config.server.CannonConfig; +import com.atsuishio.superbwarfare.entity.AnnihilatorEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoRenderer; +import software.bernie.geckolib.renderer.layer.GeoRenderLayer; + +public class AnnihilatorPowerLayer extends GeoRenderLayer { + + private static final ResourceLocation LAYER = ModUtils.loc("textures/entity/annihilator_power.png"); + + public AnnihilatorPowerLayer(GeoRenderer entityRenderer) { + super(entityRenderer); + } + + @Override + public void render(PoseStack poseStack, AnnihilatorEntity animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) { + RenderType glowRenderType = RenderType.entityTranslucent(LAYER); + float red = 1 - Mth.clamp(2.5f * animatable.getEntityData().get(AnnihilatorEntity.ENERGY)/ CannonConfig.ANNIHILATOR_MAX_ENERGY.get().floatValue(),0,1); + float green = Mth.clamp(2.5f * animatable.getEntityData().get(AnnihilatorEntity.ENERGY)/ CannonConfig.ANNIHILATOR_MAX_ENERGY.get().floatValue(),0,1); + getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, packedLight, OverlayTexture.NO_OVERLAY, red, green, 0, 1); + } +} diff --git a/src/main/java/com/atsuishio/superbwarfare/client/layer/AnnihilatorPowerLightLayer.java b/src/main/java/com/atsuishio/superbwarfare/client/layer/AnnihilatorPowerLightLayer.java new file mode 100644 index 000000000..9f428d1cb --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/client/layer/AnnihilatorPowerLightLayer.java @@ -0,0 +1,32 @@ +package com.atsuishio.superbwarfare.client.layer; + +import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.config.server.CannonConfig; +import com.atsuishio.superbwarfare.entity.AnnihilatorEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoRenderer; +import software.bernie.geckolib.renderer.layer.GeoRenderLayer; + +public class AnnihilatorPowerLightLayer extends GeoRenderLayer { + + private static final ResourceLocation LAYER = ModUtils.loc("textures/entity/annihilator_power.png"); + + public AnnihilatorPowerLightLayer(GeoRenderer entityRenderer) { + super(entityRenderer); + } + + @Override + public void render(PoseStack poseStack, AnnihilatorEntity animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) { + RenderType glowRenderType = RenderType.eyes(LAYER); + float red = 1 - Mth.clamp(2.5f * animatable.getEntityData().get(AnnihilatorEntity.ENERGY)/ CannonConfig.ANNIHILATOR_MAX_ENERGY.get().floatValue(),0,1); + float green = Mth.clamp(2.5f * animatable.getEntityData().get(AnnihilatorEntity.ENERGY)/ CannonConfig.ANNIHILATOR_MAX_ENERGY.get().floatValue(),0,1); + getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, packedLight, OverlayTexture.NO_OVERLAY, red, green, 0, 1); + } +} diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/AnnihilatorModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/AnnihilatorModel.java index fb50c5da1..6a66a758e 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/AnnihilatorModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/AnnihilatorModel.java @@ -1,6 +1,7 @@ package com.atsuishio.superbwarfare.client.model.entity; import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.config.server.CannonConfig; import com.atsuishio.superbwarfare.entity.AnnihilatorEntity; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; @@ -59,5 +60,33 @@ public class AnnihilatorModel extends GeoModel { laserLeft.setScaleZ(animatable.getEntityData().get(LASER_LEFT_LENGTH) + 0.5f); laserMiddle.setScaleZ(animatable.getEntityData().get(LASER_MIDDLE_LENGTH) + 0.5f); laserRight.setScaleZ(animatable.getEntityData().get(LASER_RIGHT_LENGTH) + 0.5f); + + CoreGeoBone ledGreen = getAnimationProcessor().getBone("ledgreen"); + CoreGeoBone ledGreen2 = getAnimationProcessor().getBone("ledgreen2"); + CoreGeoBone ledGreen3 = getAnimationProcessor().getBone("ledgreen3"); + CoreGeoBone ledGreen4 = getAnimationProcessor().getBone("ledgreen4"); + CoreGeoBone ledGreen5 = getAnimationProcessor().getBone("ledgreen5"); + + CoreGeoBone ledRed = getAnimationProcessor().getBone("ledred"); + CoreGeoBone ledRed2 = getAnimationProcessor().getBone("ledred2"); + CoreGeoBone ledRed3 = getAnimationProcessor().getBone("ledred3"); + CoreGeoBone ledRed4 = getAnimationProcessor().getBone("ledred4"); + CoreGeoBone ledRed5 = getAnimationProcessor().getBone("ledred5"); + + float coolDown = animatable.getEntityData().get(COOL_DOWN); + boolean cantShoot = animatable.getEntityData().get(ENERGY) < CannonConfig.ANNIHILATOR_SHOOT_COST.get().floatValue(); + + ledGreen.setHidden(coolDown > 80 || cantShoot); + ledGreen2.setHidden(coolDown > 60 || cantShoot); + ledGreen3.setHidden(coolDown > 40 || cantShoot); + ledGreen4.setHidden(coolDown > 20 || cantShoot); + ledGreen5.setHidden(coolDown > 0 || cantShoot); + + ledRed.setHidden(!ledGreen.isHidden()); + ledRed2.setHidden(!ledGreen2.isHidden()); + ledRed3.setHidden(!ledGreen3.isHidden()); + ledRed4.setHidden(!ledGreen4.isHidden()); + ledRed5.setHidden(!ledGreen5.isHidden()); + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/AnnihilatorRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/AnnihilatorRenderer.java index 14018da00..8b0a667af 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/AnnihilatorRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/AnnihilatorRenderer.java @@ -1,7 +1,6 @@ package com.atsuishio.superbwarfare.client.renderer.entity; -import com.atsuishio.superbwarfare.client.layer.AnnihilatorGlowLayer; -import com.atsuishio.superbwarfare.client.layer.AnnihilatorLayer; +import com.atsuishio.superbwarfare.client.layer.*; import com.atsuishio.superbwarfare.client.model.entity.AnnihilatorModel; import com.atsuishio.superbwarfare.entity.AnnihilatorEntity; import com.mojang.blaze3d.vertex.PoseStack; @@ -19,9 +18,12 @@ public class AnnihilatorRenderer extends GeoEntityRenderer { public AnnihilatorRenderer(EntityRendererProvider.Context renderManager) { super(renderManager, new AnnihilatorModel()); - this.shadowRadius = 7.5f; this.addRenderLayer(new AnnihilatorLayer(this)); this.addRenderLayer(new AnnihilatorGlowLayer(this)); + this.addRenderLayer(new AnnihilatorPowerLayer(this)); + this.addRenderLayer(new AnnihilatorPowerLightLayer(this)); + this.addRenderLayer(new AnnihilatorLedLayer(this)); + this.addRenderLayer(new AnnihilatorLedLightLayer(this)); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/client/screens/CannonHudOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/screens/CannonHudOverlay.java index aa63b18db..3f6e1f0b3 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/screens/CannonHudOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/screens/CannonHudOverlay.java @@ -81,7 +81,7 @@ public class CannonHudOverlay { maxHealth = CannonConfig.ANNIHILATOR_HP.get(); energy = cannon.getEntityData().get(AnnihilatorEntity.ENERGY); maxEnergy = CannonConfig.ANNIHILATOR_MAX_ENERGY.get().floatValue(); - indicatorPosH = 0.2f; + indicatorPosH = cannon.getEntityData().get(AnnihilatorEntity.OFFSET_ANGLE); guiGraphics.pose().pushPose(); guiGraphics.blit(ENERGY, w - 96, h - 28, 0, 0, 12, 12, 12, 12); diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/AnnihilatorEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/AnnihilatorEntity.java index 0aaa29672..d09ae5db1 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/AnnihilatorEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/AnnihilatorEntity.java @@ -60,6 +60,7 @@ public class AnnihilatorEntity extends Entity implements GeoEntity, ICannonEntit public static final EntityDataAccessor LASER_MIDDLE_LENGTH = SynchedEntityData.defineId(AnnihilatorEntity.class, EntityDataSerializers.FLOAT); public static final EntityDataAccessor LASER_RIGHT_LENGTH = SynchedEntityData.defineId(AnnihilatorEntity.class, EntityDataSerializers.FLOAT); public static final EntityDataAccessor ENERGY = SynchedEntityData.defineId(AnnihilatorEntity.class, EntityDataSerializers.FLOAT); + public static final EntityDataAccessor OFFSET_ANGLE = SynchedEntityData.defineId(AnnihilatorEntity.class, EntityDataSerializers.FLOAT); private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); @@ -86,6 +87,7 @@ public class AnnihilatorEntity extends Entity implements GeoEntity, ICannonEntit this.entityData.define(LASER_MIDDLE_LENGTH, 0f); this.entityData.define(LASER_RIGHT_LENGTH, 0f); this.entityData.define(ENERGY, 0f); + this.entityData.define(OFFSET_ANGLE, 0.2f); } @Override @@ -435,7 +437,7 @@ public class AnnihilatorEntity extends Entity implements GeoEntity, ICannonEntit public void travel() { Entity passenger = this.getPassengers().isEmpty() ? null : this.getPassengers().get(0); if (!(passenger instanceof LivingEntity entity)) return; - if (this.entityData.get(ENERGY) == 0) return; + if (this.entityData.get(ENERGY) <= 0) return; float passengerY = entity.getYHeadRot(); @@ -446,7 +448,7 @@ public class AnnihilatorEntity extends Entity implements GeoEntity, ICannonEntit } float diffY = passengerY - this.getYRot(); - float diffX = entity.getXRot() - 0.2f - this.getXRot(); + float diffX = entity.getXRot() - this.entityData.get(OFFSET_ANGLE) - this.getXRot(); if (diffY > 180.0f) { diffY -= 360.0f; } else if (diffY < -180.0f) { @@ -456,13 +458,13 @@ public class AnnihilatorEntity extends Entity implements GeoEntity, ICannonEntit diffX = diffX * 0.15f; this.setYRot(this.getYRot() + diffY); - this.setXRot(Mth.clamp(this.getXRot() + Mth.clamp(diffX, -2f, 2f), -45, 5.2f)); + this.setXRot(Mth.clamp(this.getXRot() + Mth.clamp(diffX, -2f, 2f), -45, 5f + this.entityData.get(OFFSET_ANGLE))); this.setRot(this.getYRot(), this.getXRot()); } protected void clampRotation(Entity entity) { float f = Mth.wrapDegrees(entity.getXRot()); - float f1 = Mth.clamp(f, -45.0F, 5.2F); + float f1 = Mth.clamp(f, -45.0F, 5f + this.entityData.get(OFFSET_ANGLE)); entity.xRotO += f1 - f; entity.setXRot(entity.getXRot() + f1 - f); } diff --git a/src/main/resources/assets/superbwarfare/geo/annihilator.geo.json b/src/main/resources/assets/superbwarfare/geo/annihilator.geo.json index 2c4655aea..d6af14b63 100644 --- a/src/main/resources/assets/superbwarfare/geo/annihilator.geo.json +++ b/src/main/resources/assets/superbwarfare/geo/annihilator.geo.json @@ -42,351 +42,6 @@ "parent": "PaoGuan", "pivot": [43.25, 36.0004, -275] }, - { - "name": "light1", - "parent": "laser", - "pivot": [43.215, 35.2505, -331.2], - "cubes": [ - { - "origin": [43.215, 37.877, -333.745], - "size": [36, 0, 5.09], - "pivot": [43.215, 35.2505, -331.2], - "rotation": [0, -90, 0], - "uv": { - "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} - } - }, - { - "origin": [43.215, 37.877, -333.745], - "size": [36, 0, 5.09], - "pivot": [43.215, 35.2505, -331.2], - "rotation": [0, -90, -180], - "uv": { - "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} - } - }, - { - "origin": [43.215, 37.7945, -333.8275], - "size": [36, 0, 5.255], - "pivot": [43.215, 35.2505, -331.2], - "rotation": [0, -90, 90], - "uv": { - "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} - } - }, - { - "origin": [43.215, 37.7945, -333.8275], - "size": [36, 0, 5.255], - "pivot": [43.215, 35.2505, -331.2], - "rotation": [0, -90, -90], - "uv": { - "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} - } - }, - { - "origin": [43.215, 37.7945, -333.8275], - "size": [36, 0, 5.255], - "pivot": [43.215, 35.2505, -331.2], - "rotation": [0, -90, -90], - "uv": { - "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} - } - }, - { - "origin": [43.215, 37.877, -333.745], - "size": [36, 0, 5.09], - "pivot": [43.215, 35.2505, -331.2], - "rotation": [0, -90, 0], - "uv": { - "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} - } - }, - { - "origin": [43.215, 37.877, -333.745], - "size": [36, 0, 5.09], - "pivot": [43.215, 35.2505, -331.2], - "rotation": [0, -90, -180], - "uv": { - "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} - } - }, - { - "origin": [43.215, 37.7945, -333.8275], - "size": [36, 0, 5.255], - "pivot": [43.215, 35.2505, -331.2], - "rotation": [0, -90, 90], - "uv": { - "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} - } - }, - { - "origin": [43.215, 37.7945, -333.8275], - "size": [36, 0, 5.255], - "pivot": [43.215, 35.2505, -331.2], - "rotation": [0, -90, -90], - "uv": { - "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} - } - }, - { - "origin": [43.215, 37.877, -333.745], - "size": [36, 0, 5.09], - "pivot": [43.215, 35.2505, -331.2], - "rotation": [0, -90, 0], - "uv": { - "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} - } - }, - { - "origin": [43.215, 37.877, -333.745], - "size": [36, 0, 5.09], - "pivot": [43.215, 35.2505, -331.2], - "rotation": [0, -90, -180], - "uv": { - "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} - } - }, - { - "origin": [43.215, 37.7945, -333.8275], - "size": [36, 0, 5.255], - "pivot": [43.215, 35.2505, -331.2], - "rotation": [0, -90, 90], - "uv": { - "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} - } - } - ] - }, - { - "name": "light2", - "parent": "laser", - "pivot": [-43.215, 35.2505, -331.2], - "cubes": [ - { - "origin": [-79.215, 37.877, -333.745], - "size": [36, 0, 5.09], - "pivot": [-43.215, 35.2505, -331.2], - "rotation": [0, 90, 0], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-79.215, 37.877, -333.745], - "size": [36, 0, 5.09], - "pivot": [-43.215, 35.2505, -331.2], - "rotation": [0, 90, 180], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-79.215, 37.7945, -333.8275], - "size": [36, 0, 5.255], - "pivot": [-43.215, 35.2505, -331.2], - "rotation": [0, 90, -90], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-79.215, 37.7945, -333.8275], - "size": [36, 0, 5.255], - "pivot": [-43.215, 35.2505, -331.2], - "rotation": [0, 90, 90], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-79.215, 37.7945, -333.8275], - "size": [36, 0, 5.255], - "pivot": [-43.215, 35.2505, -331.2], - "rotation": [0, 90, 90], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-79.215, 37.877, -333.745], - "size": [36, 0, 5.09], - "pivot": [-43.215, 35.2505, -331.2], - "rotation": [0, 90, 0], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-79.215, 37.877, -333.745], - "size": [36, 0, 5.09], - "pivot": [-43.215, 35.2505, -331.2], - "rotation": [0, 90, 180], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-79.215, 37.7945, -333.8275], - "size": [36, 0, 5.255], - "pivot": [-43.215, 35.2505, -331.2], - "rotation": [0, 90, -90], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-79.215, 37.7945, -333.8275], - "size": [36, 0, 5.255], - "pivot": [-43.215, 35.2505, -331.2], - "rotation": [0, 90, 90], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-79.215, 37.877, -333.745], - "size": [36, 0, 5.09], - "pivot": [-43.215, 35.2505, -331.2], - "rotation": [0, 90, 0], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-79.215, 37.877, -333.745], - "size": [36, 0, 5.09], - "pivot": [-43.215, 35.2505, -331.2], - "rotation": [0, 90, 180], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-79.215, 37.7945, -333.8275], - "size": [36, 0, 5.255], - "pivot": [-43.215, 35.2505, -331.2], - "rotation": [0, 90, -90], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - } - ] - }, - { - "name": "light3", - "parent": "laser", - "pivot": [0, 35.2505, -331.2], - "cubes": [ - { - "origin": [-36, 37.877, -333.745], - "size": [36, 0, 5.09], - "pivot": [0, 35.2505, -331.2], - "rotation": [0, 90, 0], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-36, 37.877, -333.745], - "size": [36, 0, 5.09], - "pivot": [0, 35.2505, -331.2], - "rotation": [0, 90, 180], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-36, 37.7945, -333.8275], - "size": [36, 0, 5.255], - "pivot": [0, 35.2505, -331.2], - "rotation": [0, 90, -90], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-36, 37.7945, -333.8275], - "size": [36, 0, 5.255], - "pivot": [0, 35.2505, -331.2], - "rotation": [0, 90, 90], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-36, 37.7945, -333.8275], - "size": [36, 0, 5.255], - "pivot": [0, 35.2505, -331.2], - "rotation": [0, 90, 90], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-36, 37.877, -333.745], - "size": [36, 0, 5.09], - "pivot": [0, 35.2505, -331.2], - "rotation": [0, 90, 0], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-36, 37.877, -333.745], - "size": [36, 0, 5.09], - "pivot": [0, 35.2505, -331.2], - "rotation": [0, 90, 180], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-36, 37.7945, -333.8275], - "size": [36, 0, 5.255], - "pivot": [0, 35.2505, -331.2], - "rotation": [0, 90, -90], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-36, 37.7945, -333.8275], - "size": [36, 0, 5.255], - "pivot": [0, 35.2505, -331.2], - "rotation": [0, 90, 90], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-36, 37.877, -333.745], - "size": [36, 0, 5.09], - "pivot": [0, 35.2505, -331.2], - "rotation": [0, 90, 0], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-36, 37.877, -333.745], - "size": [36, 0, 5.09], - "pivot": [0, 35.2505, -331.2], - "rotation": [0, 90, 180], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - }, - { - "origin": [-36, 37.7945, -333.8275], - "size": [36, 0, 5.255], - "pivot": [0, 35.2505, -331.2], - "rotation": [0, 90, -90], - "uv": { - "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} - } - } - ] - }, { "name": "glow1", "parent": "laser", @@ -422,7 +77,122 @@ ] }, { - "name": "glow2", + "name": "bone7", + "parent": "glow1", + "pivot": [45.759, 35.33301, -305.2], + "cubes": [ + { + "origin": [17.215, 37.877, -307.745], + "size": [36, 0, 5.09], + "pivot": [43.215, 37.877, -305.2], + "rotation": [0, -90, 0], + "uv": { + "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} + } + }, + { + "origin": [17.215, 32.624, -307.745], + "size": [36, 0, 5.09], + "pivot": [43.215, 32.624, -305.2], + "rotation": [0, -90, -180], + "uv": { + "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} + } + }, + { + "origin": [19.759, 35.25051, -307.8275], + "size": [36, 0, 5.255], + "pivot": [45.759, 35.25051, -305.2], + "rotation": [0, -90, 90], + "uv": { + "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} + } + }, + { + "origin": [14.671, 35.2505, -307.8275], + "size": [36, 0, 5.255], + "pivot": [40.671, 35.2505, -305.2], + "rotation": [0, -90, -90], + "uv": { + "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} + } + }, + { + "origin": [14.671, 35.2505, -307.8275], + "size": [36, 0, 5.255], + "pivot": [40.671, 35.2505, -305.2], + "rotation": [0, -90, -90], + "uv": { + "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} + } + }, + { + "origin": [17.215, 37.877, -307.745], + "size": [36, 0, 5.09], + "pivot": [43.215, 37.877, -305.2], + "rotation": [0, -90, 0], + "uv": { + "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} + } + }, + { + "origin": [17.215, 32.624, -307.745], + "size": [36, 0, 5.09], + "pivot": [43.215, 32.624, -305.2], + "rotation": [0, -90, -180], + "uv": { + "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} + } + }, + { + "origin": [19.759, 35.25051, -307.8275], + "size": [36, 0, 5.255], + "pivot": [45.759, 35.25051, -305.2], + "rotation": [0, -90, 90], + "uv": { + "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} + } + }, + { + "origin": [14.671, 35.2505, -307.8275], + "size": [36, 0, 5.255], + "pivot": [40.671, 35.2505, -305.2], + "rotation": [0, -90, -90], + "uv": { + "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} + } + }, + { + "origin": [17.215, 37.877, -307.745], + "size": [36, 0, 5.09], + "pivot": [43.215, 37.877, -305.2], + "rotation": [0, -90, 0], + "uv": { + "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} + } + }, + { + "origin": [17.215, 32.624, -307.745], + "size": [36, 0, 5.09], + "pivot": [43.215, 32.624, -305.2], + "rotation": [0, -90, -180], + "uv": { + "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} + } + }, + { + "origin": [19.759, 35.25051, -307.8275], + "size": [36, 0, 5.255], + "pivot": [45.759, 35.25051, -305.2], + "rotation": [0, -90, 90], + "uv": { + "up": {"uv": [93.625, 108.75], "uv_size": [-23.875, -8.125]} + } + } + ] + }, + { + "name": "glow3", "parent": "laser", "pivot": [-43.25, 35.2538, -330.9], "cubes": [ @@ -456,7 +226,122 @@ ] }, { - "name": "glow3", + "name": "bone9", + "parent": "glow3", + "pivot": [-45.759, 35.33301, -305.2], + "cubes": [ + { + "origin": [-53.215, 37.877, -307.745], + "size": [36, 0, 5.09], + "pivot": [-43.215, 37.877, -305.2], + "rotation": [0, 90, 0], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-53.215, 32.624, -307.745], + "size": [36, 0, 5.09], + "pivot": [-43.215, 32.624, -305.2], + "rotation": [0, 90, 180], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-55.759, 35.25051, -307.8275], + "size": [36, 0, 5.255], + "pivot": [-45.759, 35.25051, -305.2], + "rotation": [0, 90, -90], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-50.671, 35.2505, -307.8275], + "size": [36, 0, 5.255], + "pivot": [-40.671, 35.2505, -305.2], + "rotation": [0, 90, 90], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-50.671, 35.2505, -307.8275], + "size": [36, 0, 5.255], + "pivot": [-40.671, 35.2505, -305.2], + "rotation": [0, 90, 90], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-53.215, 37.877, -307.745], + "size": [36, 0, 5.09], + "pivot": [-43.215, 37.877, -305.2], + "rotation": [0, 90, 0], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-53.215, 32.624, -307.745], + "size": [36, 0, 5.09], + "pivot": [-43.215, 32.624, -305.2], + "rotation": [0, 90, 180], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-55.759, 35.25051, -307.8275], + "size": [36, 0, 5.255], + "pivot": [-45.759, 35.25051, -305.2], + "rotation": [0, 90, -90], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-50.671, 35.2505, -307.8275], + "size": [36, 0, 5.255], + "pivot": [-40.671, 35.2505, -305.2], + "rotation": [0, 90, 90], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-53.215, 37.877, -307.745], + "size": [36, 0, 5.09], + "pivot": [-43.215, 37.877, -305.2], + "rotation": [0, 90, 0], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-53.215, 32.624, -307.745], + "size": [36, 0, 5.09], + "pivot": [-43.215, 32.624, -305.2], + "rotation": [0, 90, 180], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-55.759, 35.25051, -307.8275], + "size": [36, 0, 5.255], + "pivot": [-45.759, 35.25051, -305.2], + "rotation": [0, 90, -90], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + } + ] + }, + { + "name": "glow2", "parent": "laser", "pivot": [-0.035, 35.2538, -330.9], "cubes": [ @@ -489,6 +374,121 @@ } ] }, + { + "name": "bone11", + "parent": "glow2", + "pivot": [-2.544, 35.33301, -305.2], + "cubes": [ + { + "origin": [-10, 37.877, -307.745], + "size": [36, 0, 5.09], + "pivot": [0, 37.877, -305.2], + "rotation": [0, 90, 0], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-10, 32.624, -307.745], + "size": [36, 0, 5.09], + "pivot": [0, 32.624, -305.2], + "rotation": [0, 90, 180], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-12.544, 35.25051, -307.8275], + "size": [36, 0, 5.255], + "pivot": [-2.544, 35.25051, -305.2], + "rotation": [0, 90, -90], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-7.456, 35.2505, -307.8275], + "size": [36, 0, 5.255], + "pivot": [2.544, 35.2505, -305.2], + "rotation": [0, 90, 90], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-7.456, 35.2505, -307.8275], + "size": [36, 0, 5.255], + "pivot": [2.544, 35.2505, -305.2], + "rotation": [0, 90, 90], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-10, 37.877, -307.745], + "size": [36, 0, 5.09], + "pivot": [0, 37.877, -305.2], + "rotation": [0, 90, 0], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-10, 32.624, -307.745], + "size": [36, 0, 5.09], + "pivot": [0, 32.624, -305.2], + "rotation": [0, 90, 180], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-12.544, 35.25051, -307.8275], + "size": [36, 0, 5.255], + "pivot": [-2.544, 35.25051, -305.2], + "rotation": [0, 90, -90], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-7.456, 35.2505, -307.8275], + "size": [36, 0, 5.255], + "pivot": [2.544, 35.2505, -305.2], + "rotation": [0, 90, 90], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-10, 37.877, -307.745], + "size": [36, 0, 5.09], + "pivot": [0, 37.877, -305.2], + "rotation": [0, 90, 0], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-10, 32.624, -307.745], + "size": [36, 0, 5.09], + "pivot": [0, 32.624, -305.2], + "rotation": [0, 90, 180], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + }, + { + "origin": [-12.544, 35.25051, -307.8275], + "size": [36, 0, 5.255], + "pivot": [-2.544, 35.25051, -305.2], + "rotation": [0, 90, -90], + "uv": { + "up": {"uv": [69.75, 108.75], "uv_size": [23.875, -8.125]} + } + } + ] + }, { "name": "laser1", "parent": "laser", @@ -1571,6 +1571,261 @@ "parent": "main", "pivot": [0, 0, -24] }, + { + "name": "led", + "parent": "body", + "pivot": [0, 91.72092, -117.08214] + }, + { + "name": "ledgreen", + "parent": "led", + "pivot": [0, 91.72092, -117.08214], + "cubes": [ + { + "origin": [-74.74347, 68.4, -17.85867], + "size": [7.2, 0, 7.2], + "pivot": [0, 91.72092, -117.08214], + "rotation": [0, 45, 0], + "uv": { + "up": {"uv": [1, 82], "uv_size": [-1, 1]} + } + }, + { + "origin": [67.54347, 68.4, -17.85867], + "size": [7.2, 0, 7.2], + "pivot": [0, 91.72092, -117.08214], + "rotation": [0, -45, 0], + "uv": { + "up": {"uv": [0, 82], "uv_size": [1, 1]} + } + } + ] + }, + { + "name": "ledgreen2", + "parent": "led", + "pivot": [0, 91.72092, -106.08214], + "cubes": [ + { + "origin": [-74.74347, 68.399, -7.05867], + "size": [7.2, 0, 7.2], + "pivot": [0, 91.71992, -106.28214], + "rotation": [0, 45, 0], + "uv": { + "up": {"uv": [1, 82], "uv_size": [-1, 1]} + } + }, + { + "origin": [67.54347, 68.399, -7.05867], + "size": [7.2, 0, 7.2], + "pivot": [0, 91.71992, -106.28214], + "rotation": [0, -45, 0], + "uv": { + "up": {"uv": [0, 82], "uv_size": [1, 1]} + } + } + ] + }, + { + "name": "ledgreen3", + "parent": "led", + "pivot": [0, 91.72092, -106.08214], + "cubes": [ + { + "origin": [-74.74347, 68.399, 3.74133], + "size": [7.2, 0, 7.2], + "pivot": [0, 91.71992, -95.48214], + "rotation": [0, 45, 0], + "uv": { + "up": {"uv": [1, 82], "uv_size": [-1, 1]} + } + }, + { + "origin": [67.54347, 68.399, 3.74133], + "size": [7.2, 0, 7.2], + "pivot": [0, 91.71992, -95.48214], + "rotation": [0, -45, 0], + "uv": { + "up": {"uv": [0, 82], "uv_size": [1, 1]} + } + } + ] + }, + { + "name": "ledgreen4", + "parent": "led", + "pivot": [0, 91.72092, -106.08214], + "cubes": [ + { + "origin": [-74.74347, 68.399, 14.54133], + "size": [7.2, 0, 7.2], + "pivot": [0, 91.71992, -84.68214], + "rotation": [0, 45, 0], + "uv": { + "up": {"uv": [1, 82], "uv_size": [-1, 1]} + } + }, + { + "origin": [67.54347, 68.399, 14.54133], + "size": [7.2, 0, 7.2], + "pivot": [0, 91.71992, -84.68214], + "rotation": [0, -45, 0], + "uv": { + "up": {"uv": [0, 82], "uv_size": [1, 1]} + } + } + ] + }, + { + "name": "ledgreen5", + "parent": "led", + "pivot": [0, 91.72092, -106.08214], + "cubes": [ + { + "origin": [-74.74347, 68.399, 25.34133], + "size": [7.2, 0, 7.2], + "pivot": [0, 91.71992, -73.88214], + "rotation": [0, 45, 0], + "uv": { + "up": {"uv": [1, 82], "uv_size": [-1, 1]} + } + }, + { + "origin": [67.54347, 68.399, 25.34133], + "size": [7.2, 0, 7.2], + "pivot": [0, 91.71992, -73.88214], + "rotation": [0, -45, 0], + "uv": { + "up": {"uv": [0, 82], "uv_size": [1, 1]} + } + } + ] + }, + { + "name": "ledred", + "parent": "led", + "pivot": [0, 91.72092, -117.08214], + "cubes": [ + { + "origin": [-74.74347, 68.4, -17.85867], + "size": [7.2, 0, 7.2], + "pivot": [0, 91.72092, -117.08214], + "rotation": [0, 45, 0], + "uv": { + "up": {"uv": [2, 82], "uv_size": [-1, 1]} + } + }, + { + "origin": [67.54347, 68.4, -17.85867], + "size": [7.2, 0, 7.2], + "pivot": [0, 91.72092, -117.08214], + "rotation": [0, -45, 0], + "uv": { + "up": {"uv": [1, 82], "uv_size": [1, 1]} + } + } + ] + }, + { + "name": "ledred2", + "parent": "led", + "pivot": [0, 91.72092, -86.28214], + "cubes": [ + { + "origin": [-74.74347, 68.399, -7.05867], + "size": [7.2, 0, 7.2], + "pivot": [0, 91.71992, -106.28214], + "rotation": [0, 45, 0], + "uv": { + "up": {"uv": [2, 82], "uv_size": [-1, 1]} + } + }, + { + "origin": [67.54347, 68.399, -7.05867], + "size": [7.2, 0, 7.2], + "pivot": [0, 91.71992, -106.28214], + "rotation": [0, -45, 0], + "uv": { + "up": {"uv": [1, 82], "uv_size": [1, 1]} + } + } + ] + }, + { + "name": "ledred3", + "parent": "led", + "pivot": [0, 91.72092, -79.03214], + "cubes": [ + { + "origin": [-74.74347, 68.399, 3.74133], + "size": [7.2, 0, 7.2], + "pivot": [0, 91.71992, -95.48214], + "rotation": [0, 45, 0], + "uv": { + "up": {"uv": [2, 82], "uv_size": [-1, 1]} + } + }, + { + "origin": [67.54347, 68.399, 3.74133], + "size": [7.2, 0, 7.2], + "pivot": [0, 91.71992, -95.48214], + "rotation": [0, -45, 0], + "uv": { + "up": {"uv": [1, 82], "uv_size": [1, 1]} + } + } + ] + }, + { + "name": "ledred4", + "parent": "led", + "pivot": [0, 91.72092, -72.03214], + "cubes": [ + { + "origin": [-74.74347, 68.399, 14.54133], + "size": [7.2, 0, 7.2], + "pivot": [0, 91.71992, -84.68214], + "rotation": [0, 45, 0], + "uv": { + "up": {"uv": [2, 82], "uv_size": [-1, 1]} + } + }, + { + "origin": [67.54347, 68.399, 14.54133], + "size": [7.2, 0, 7.2], + "pivot": [0, 91.71992, -84.68214], + "rotation": [0, -45, 0], + "uv": { + "up": {"uv": [1, 82], "uv_size": [1, 1]} + } + } + ] + }, + { + "name": "ledred5", + "parent": "led", + "pivot": [0, 91.72092, -63.78214], + "cubes": [ + { + "origin": [-74.74347, 68.399, 25.34133], + "size": [7.2, 0, 7.2], + "pivot": [0, 91.71992, -73.88214], + "rotation": [0, 45, 0], + "uv": { + "up": {"uv": [2, 82], "uv_size": [-1, 1]} + } + }, + { + "origin": [67.54347, 68.399, 25.34133], + "size": [7.2, 0, 7.2], + "pivot": [0, 91.71992, -73.88214], + "rotation": [0, -45, 0], + "uv": { + "up": {"uv": [1, 82], "uv_size": [1, 1]} + } + } + ] + }, { "name": "QianPaoDun", "parent": "body", diff --git a/src/main/resources/assets/superbwarfare/textures/entity/annihilator.png b/src/main/resources/assets/superbwarfare/textures/entity/annihilator.png index 7b21da2cd85eebe11bf72caab52a58ee648b1455..8af7114214ec1785a0f54ba90fc374c4405dba28 100644 GIT binary patch delta 5397 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 diff --git a/src/main/resources/assets/superbwarfare/textures/entity/annihilator_e.png b/src/main/resources/assets/superbwarfare/textures/entity/annihilator_e.png index dc0c9c4755eba21b9f0dd97ff4598eeaa2c9e8e6..4c038f6ff548f1c5dc012477461251c78ab3961d 100644 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-D$|QaoK8Ln`LH zJ?F^FV8Fp*U=$c^pWoiL*TZA=f>5A5QQ%GCJ>N+__Bho3Gp$Qu{V@0YHjt|rJYD@< J);T3K0RRi=AZq{s literal 5272 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&zE~RK2WrGmv5|4sv&5Sa(k5B?E&f&++bU|qOlhO)crj*+I@Z`C-A7ojZ|6Koi^11K>+p{F(Oj`Tm)3S@q3=9?1QsdW$A3y)L zfS>b2+cS_5L&I-QkmUrEc=-+{h9f$^tM*#e<+WG4G~}NEmpBCV(b{Lj-~0p9L1~QP z$Np)xd)@LYHWgdndCd4h|MLq_DSzNEF{S(v52T7rU@7q+R`+*R@4XMFcFL~%SQG94 z|4;9;&-@40lTrZ^3I~N$phXSex4e06T6K8x+}jVW#TY84RDJ>Jdr(JIjWD6!{p02P z$!~2h0rk|d`h&C*D#IXE3P>eBpb4!184B8gS@@##yf=6Fz5{cualaf$%N?*agz9~K zh6CjqreuC$Xei$b_PjQzUSwwYkVs0UNWcOHun!n&)&jk7{?EUivhM^L_bntbbdSGI zzdyO!{QW~#V3cTAfa8R?mQDhw>GYL(@qOq2UuuC){lI4fZYK?|3VqnOSRfuGl+*@T z{sT8Kv-)p;^ZM(nA3J6L@i%UN@{5h(f)Od%mAF*x0P-oJoIh$5D3mDd1c8je1Hi>+ zMf&M|aqIi$-+pK;_UsR^gz_Y*m31J0G5dvQwlAl|UjO>(&-`UCgP;HZ^ZdR3|G)eH z|9JiMef_uhz%p599>^KQ#W@}ak4lY(z-S1JhQMeD&_4v~wz0FTfUIr$w?EH)0k{>5 b(-j6nF~9RB9d@{X8l=S2)z4*}Q$iB}LPB-t diff --git a/src/main/resources/assets/superbwarfare/textures/entity/annihilator_led.png b/src/main/resources/assets/superbwarfare/textures/entity/annihilator_led.png new file mode 100644 index 0000000000000000000000000000000000000000..4bafb59f8dda87a8195016145347f6de7d317c6c GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-D$|HhQ`^hE&XX zd&iOMh=Kr%!{qBvPyXJ0GWELz2lq*h*so1)zZWoDfpkNG!=6>E-tjOvG+WJKOuAVE z5>2RzE^o-ZEBP@`{xv%TgU&J2XI5ys~luQlOrM^n$XFL+nnJm)nBXG{{9A%@^tlc JS?83{1OTRcNe%!2 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/superbwarfare/textures/entity/annihilator_power.png b/src/main/resources/assets/superbwarfare/textures/entity/annihilator_power.png new file mode 100644 index 0000000000000000000000000000000000000000..74aa13f3ecbd87f66c752ab094eefda7d2f7f795 GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-D$|E_u2*hE&XX zd&iNlSwVm`;N{=Qe@~guy5oY{-z>p~d}Cgp@^4LZH_kttcoA%Hi*Q2$lYk$? mA&|W=vmQv!_Jy(0=)SV@OE$b&KdL8yBs^XHT-G@yGywoU>sQYJ literal 0 HcmV?d00001