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 7b21da2cd..8af711421 100644 Binary files a/src/main/resources/assets/superbwarfare/textures/entity/annihilator.png and b/src/main/resources/assets/superbwarfare/textures/entity/annihilator.png differ 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 dc0c9c475..4c038f6ff 100644 Binary files a/src/main/resources/assets/superbwarfare/textures/entity/annihilator_e.png and b/src/main/resources/assets/superbwarfare/textures/entity/annihilator_e.png differ 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 000000000..4bafb59f8 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/entity/annihilator_led.png differ 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 000000000..74aa13f3e Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/entity/annihilator_power.png differ