From 7d6d2b6409e95a7938249306d03560709946d72b Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Wed, 4 Dec 2024 16:12:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E6=89=80=E6=9C=89java=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E7=9A=84=E5=BC=B9=E5=B0=84=E7=89=A9=E5=85=A8=E9=83=A8?= =?UTF-8?q?=E6=9B=BF=E6=8D=A2=E4=B8=BAgeo=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/model/entity/ModelGrenade.java | 43 -- .../client/model/entity/ModelHandGrenade.java | 66 -- .../client/model/entity/ModelMortarShell.java | 81 -- .../client/model/entity/ModelTaserRod.java | 46 -- .../renderer/entity/GunGrenadeRenderer.java | 42 +- .../entity/HandGrenadeEntityRenderer.java | 41 -- .../renderer/entity/HandGrenadeRenderer.java | 48 ++ .../entity/JavelinMissileRenderer.java | 3 +- .../renderer/entity/MortarShellRenderer.java | 39 +- .../renderer/entity/RgoGrenadeRenderer.java | 3 +- .../renderer/entity/RpgRocketRenderer.java | 5 +- .../entity/TaserBulletProjectileRenderer.java | 39 +- .../superbwarfare/entity/ClaymoreEntity.java | 1 + .../superbwarfare/entity/DroneEntity.java | 1 + .../superbwarfare/entity/Mk42Entity.java | 1 + .../superbwarfare/entity/Mle1934Entity.java | 1 + .../superbwarfare/entity/MortarEntity.java | 1 + .../superbwarfare/entity/TargetEntity.java | 3 +- .../entity/layer/GunGrenadeLayer.java | 27 + .../entity/layer/JavelinMissleLayer.java | 27 + .../entity/layer/RpgRocketLayer.java | 27 + .../entity/model/GunGrenadeModel.java | 33 + .../entity/model/HandGrenadeEntityModel.java | 23 + .../entity/model/MortarShellEntityModel.java | 24 + .../entity/model/RgoGrenadeEntityModel.java | 2 +- .../model/TaserBulletProjectileModel.java | 23 + .../entity/projectile/CannonShellEntity.java | 1 + .../entity/projectile/GunGrenadeEntity.java | 18 +- .../entity/projectile/HandGrenadeEntity.java | 17 +- .../projectile/JavelinMissileEntity.java | 1 + .../entity/projectile/MortarShellEntity.java | 18 +- .../entity/projectile/ProjectileEntity.java | 1 + .../entity/projectile/RgoGrenadeEntity.java | 1 + .../entity/projectile/RpgRocketEntity.java | 1 + .../TaserBulletProjectileEntity.java | 40 +- .../init/ModEntityRenderers.java | 2 +- .../superbwarfare/init/ModModels.java | 21 - .../animations/javelin_missile.animation.json | 118 ++- .../animations/rgo_grenade.animation.json | 9 - .../animations/rpg_rocket.animation.json | 139 ++-- .../superbwarfare/geo/hand_grenade.geo.json | 270 +++++++ .../geo/javelin_missile.geo.json | 107 +++ .../superbwarfare/geo/mortar_shell.geo.json | 689 ++++++++++++++++++ .../superbwarfare/geo/rpg_rocket.geo.json | 119 ++- .../superbwarfare/geo/taser_rod.geo.json | 79 ++ .../textures/entity/hand_grenade.png | Bin 276 -> 173 bytes .../textures/entity/rpg_rocket_e.png | Bin 0 -> 193 bytes .../textures/entity/taser_rod.png | Bin 129 -> 109 bytes 48 files changed, 1843 insertions(+), 458 deletions(-) delete mode 100644 src/main/java/com/atsuishio/superbwarfare/client/model/entity/ModelGrenade.java delete mode 100644 src/main/java/com/atsuishio/superbwarfare/client/model/entity/ModelHandGrenade.java delete mode 100644 src/main/java/com/atsuishio/superbwarfare/client/model/entity/ModelMortarShell.java delete mode 100644 src/main/java/com/atsuishio/superbwarfare/client/model/entity/ModelTaserRod.java delete mode 100644 src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/HandGrenadeEntityRenderer.java create mode 100644 src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/HandGrenadeRenderer.java create mode 100644 src/main/java/com/atsuishio/superbwarfare/entity/layer/GunGrenadeLayer.java create mode 100644 src/main/java/com/atsuishio/superbwarfare/entity/layer/JavelinMissleLayer.java create mode 100644 src/main/java/com/atsuishio/superbwarfare/entity/layer/RpgRocketLayer.java create mode 100644 src/main/java/com/atsuishio/superbwarfare/entity/model/GunGrenadeModel.java create mode 100644 src/main/java/com/atsuishio/superbwarfare/entity/model/HandGrenadeEntityModel.java create mode 100644 src/main/java/com/atsuishio/superbwarfare/entity/model/MortarShellEntityModel.java create mode 100644 src/main/java/com/atsuishio/superbwarfare/entity/model/TaserBulletProjectileModel.java delete mode 100644 src/main/java/com/atsuishio/superbwarfare/init/ModModels.java delete mode 100644 src/main/resources/assets/superbwarfare/animations/rgo_grenade.animation.json create mode 100644 src/main/resources/assets/superbwarfare/geo/hand_grenade.geo.json create mode 100644 src/main/resources/assets/superbwarfare/geo/mortar_shell.geo.json create mode 100644 src/main/resources/assets/superbwarfare/geo/taser_rod.geo.json create mode 100644 src/main/resources/assets/superbwarfare/textures/entity/rpg_rocket_e.png diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/ModelGrenade.java b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/ModelGrenade.java deleted file mode 100644 index 82c85f9d1..000000000 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/ModelGrenade.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.atsuishio.superbwarfare.client.model.entity; - -import com.atsuishio.superbwarfare.ModUtils; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import net.minecraft.client.model.EntityModel; -import net.minecraft.client.model.geom.ModelLayerLocation; -import net.minecraft.client.model.geom.ModelPart; -import net.minecraft.client.model.geom.PartPose; -import net.minecraft.client.model.geom.builders.*; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.Entity; - -// Made with Blockbench 4.9.2 -// Exported for Minecraft version 1.17 or later with Mojang mappings -// Paste this class into your mod and generate all required imports -public class ModelGrenade extends EntityModel { - // This layer location should be baked with EntityRendererProvider.Context in - // the entity renderer and passed into this model's constructor - public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation(ModUtils.MODID, "model_grenade"), "main"); - public final ModelPart bone; - - public ModelGrenade(ModelPart root) { - this.bone = root.getChild("bone"); - } - - public static LayerDefinition createBodyLayer() { - MeshDefinition meshdefinition = new MeshDefinition(); - PartDefinition partdefinition = meshdefinition.getRoot(); - PartDefinition bone = partdefinition.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 24.0F, 0.0F, 0.0F, 0.0F, 1.5708F)); - PartDefinition cube_r1 = bone.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(2, 2).addBox(-0.5F, -0.5F, -23.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 1.5708F, 0.0F)); - return LayerDefinition.create(meshdefinition, 16, 16); - } - - @Override - public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { - } - - @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - } -} diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/ModelHandGrenade.java b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/ModelHandGrenade.java deleted file mode 100644 index 275fa6584..000000000 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/ModelHandGrenade.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.atsuishio.superbwarfare.client.model.entity; - -import com.atsuishio.superbwarfare.ModUtils; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import net.minecraft.client.model.EntityModel; -import net.minecraft.client.model.geom.ModelLayerLocation; -import net.minecraft.client.model.geom.ModelPart; -import net.minecraft.client.model.geom.PartPose; -import net.minecraft.client.model.geom.builders.*; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.Entity; - -@SuppressWarnings("unused") -public class ModelHandGrenade extends EntityModel { - // This layer location should be baked with EntityRendererProvider.Context in the entity renderer and passed into this model's constructor - public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation(ModUtils.MODID, "model_hand_grenade"), "main"); - public final ModelPart group; - - public ModelHandGrenade(ModelPart root) { - this.group = root.getChild("group"); - } - - public static LayerDefinition createBodyLayer() { - MeshDefinition meshdefinition = new MeshDefinition(); - PartDefinition partdefinition = meshdefinition.getRoot(); - - PartDefinition group = partdefinition.addOrReplaceChild("group", CubeListBuilder.create().texOffs(6, 8).addBox(-0.4375F, 0.424F, -1.0258F, 0.875F, 0.3F, 1.075F, new CubeDeformation(0.0F)) - .texOffs(11, 13).addBox(-0.45F, -0.4283F, -1.0883F, 0.9F, 0.85F, 1.35F, new CubeDeformation(0.0F)) - .texOffs(13, 14).addBox(-0.45F, -0.4283F, 0.2617F, 0.9F, 0.85F, 0.3F, new CubeDeformation(0.0F)) - .texOffs(12, 15).addBox(-0.45F, 0.0717F, 0.5617F, 0.9F, 0.35F, 0.3F, new CubeDeformation(0.0F)) - .texOffs(11, 14).addBox(-0.45F, -0.2283F, 0.5617F, 0.9F, 0.3F, 0.2F, new CubeDeformation(0.0F)) - .texOffs(9, 13).addBox(-0.5F, -0.6283F, -1.5883F, 1.0F, 0.2F, 2.2F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, -0.0217F, 0.4883F)); - - PartDefinition cube_r1 = group.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(11, 14).addBox(-1.5F, -0.2F, 1.5F, 1.0F, 1.0F, 0.2F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(1.0F, 0.207F, -0.8823F, 0.3927F, 0.0F, 0.0F)); - - PartDefinition cube_r2 = group.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(12, 14).addBox(-1.45F, -1.3391F, 0.4F, 0.9F, 0.9391F, 0.3508F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(1.0F, 0.9443F, -1.3048F, 0.3927F, 0.0F, 0.0F)); - - PartDefinition bone2 = group.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(0.0F, 2.0295F, -26.2164F)); - - PartDefinition bone178_r1 = bone2.addOrReplaceChild("bone178_r1", CubeListBuilder.create().texOffs(0, 8).addBox(-1.2976F, -0.5375F, -0.5375F, 2.5953F, 1.075F, 1.075F, new CubeDeformation(0.0F)) - .texOffs(10, 0).addBox(-0.5375F, -1.2976F, -0.5375F, 1.075F, 2.5953F, 1.075F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -0.0078F, 25.7281F, 0.0F, 0.0F, 0.7854F)); - - PartDefinition bone3 = group.addOrReplaceChild("bone3", CubeListBuilder.create().texOffs(0, 10).addBox(-0.5375F, -1.3054F, 25.1906F, 1.075F, 2.5953F, 1.075F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 2.0295F, -26.2164F)); - - PartDefinition bone179_r1 = bone3.addOrReplaceChild("bone179_r1", CubeListBuilder.create().texOffs(5, 1).addBox(-0.5375F, -0.5375F, -1.2976F, 1.075F, 1.075F, 2.5953F, new CubeDeformation(0.0F)) - .texOffs(7, 9).addBox(-0.5375F, -1.2976F, -0.5375F, 1.075F, 2.5953F, 1.075F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -0.0078F, 25.7281F, 0.7854F, 0.0F, 0.0F)); - - PartDefinition bone175 = group.addOrReplaceChild("bone175", CubeListBuilder.create().texOffs(7, 7).addBox(-1.2976F, -0.5453F, 25.1906F, 2.5953F, 1.075F, 1.075F, new CubeDeformation(0.0F)) - .texOffs(0, 4).addBox(-0.5375F, -0.5453F, 24.4305F, 1.075F, 1.075F, 2.5953F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 2.0295F, -26.2164F)); - - PartDefinition bone180_r1 = bone175.addOrReplaceChild("bone180_r1", CubeListBuilder.create().texOffs(0, 0).addBox(-0.5375F, -0.5375F, -1.2976F, 1.075F, 1.075F, 2.5953F, new CubeDeformation(0.0F)) - .texOffs(5, 5).addBox(-1.2976F, -0.5375F, -0.5375F, 2.5953F, 1.075F, 1.075F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -0.0078F, 25.7281F, 0.0F, 0.7854F, 0.0F)); - - return LayerDefinition.create(meshdefinition, 16, 16); - } - - @Override - public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { - } - - @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - group.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - } -} \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/ModelMortarShell.java b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/ModelMortarShell.java deleted file mode 100644 index 8b1ec2c91..000000000 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/ModelMortarShell.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.atsuishio.superbwarfare.client.model.entity; - -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import com.atsuishio.superbwarfare.ModUtils; -import net.minecraft.client.model.EntityModel; -import net.minecraft.client.model.geom.ModelLayerLocation; -import net.minecraft.client.model.geom.ModelPart; -import net.minecraft.client.model.geom.PartPose; -import net.minecraft.client.model.geom.builders.*; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.Entity; - -// Made with Blockbench 4.9.4 -// Exported for Minecraft version 1.17 or later with Mojang mappings -// Paste this class into your mod and generate all required imports -public class ModelMortarShell extends EntityModel { - // This layer location should be baked with EntityRendererProvider.Context in - // the entity renderer and passed into this model's constructor - public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation(ModUtils.MODID, "modelmortar_shell_converted"), "main"); - public final ModelPart Rockets; - - public ModelMortarShell(ModelPart root) { - this.Rockets = root.getChild("Rockets"); - } - - public static LayerDefinition createBodyLayer() { - MeshDefinition meshdefinition = new MeshDefinition(); - PartDefinition partdefinition = meshdefinition.getRoot(); - PartDefinition Rockets = partdefinition.addOrReplaceChild("Rockets", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, -24.7579F, 0.4535F, -1.5708F, 0.0F, 0.0F)); - PartDefinition octagon_r1 = Rockets.addOrReplaceChild("octagon_r1", CubeListBuilder.create().texOffs(6, 3).addBox(-1.3735F, -0.2401F, -1.5325F, 0.7465F, 0.4803F, 1.7605F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(1.8097F, 0.0033F, 5.8407F, 0.0F, 0.3927F, 0.0F)); - PartDefinition octagon_r2 = Rockets.addOrReplaceChild("octagon_r2", CubeListBuilder.create().texOffs(7, 0).addBox(0.627F, -0.2401F, -1.5325F, 0.7465F, 0.4803F, 1.7605F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(-1.8097F, 0.0033F, 5.8407F, 0.0F, -0.3927F, 0.0F)); - PartDefinition octagon_r3 = Rockets.addOrReplaceChild("octagon_r3", CubeListBuilder.create().texOffs(0, 8).addBox(-0.2401F, 0.627F, -1.4075F, 0.4803F, 0.684F, 1.6355F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(0.0F, -0.0003F, 6.5823F, -0.3927F, 0.0F, 0.0F)); - PartDefinition octagon_r4 = Rockets.addOrReplaceChild("octagon_r4", CubeListBuilder.create().texOffs(4, 8).addBox(-0.2401F, -1.311F, -1.4075F, 0.4803F, 0.684F, 1.6355F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(0.0F, -0.0003F, 6.5823F, 0.3927F, 0.0F, 0.0F)); - PartDefinition octagon_r5 = Rockets.addOrReplaceChild("octagon_r5", - CubeListBuilder.create().texOffs(2, 0).addBox(-0.57F, -0.2361F, -4.1689F, 1.14F, 0.4722F, 2.85F, new CubeDeformation(0.0F)).texOffs(0, 3).addBox(-0.2361F, -0.57F, -4.1689F, 0.4722F, 1.14F, 2.85F, new CubeDeformation(0.0F)) - .texOffs(0, 15).addBox(-0.741F, -0.3069F, -3.4849F, 1.482F, 0.6139F, 1.824F, new CubeDeformation(0.0F)).texOffs(19, 0).addBox(-0.3069F, -0.741F, -3.4849F, 0.6139F, 1.482F, 1.824F, new CubeDeformation(0.0F)).texOffs(13, 13) - .addBox(-0.912F, -0.3778F, -2.3449F, 1.824F, 0.7555F, 7.0265F, new CubeDeformation(0.0F)).texOffs(19, 0).addBox(-0.3778F, -0.912F, -2.3449F, 0.7555F, 1.824F, 7.0265F, new CubeDeformation(0.0F)).texOffs(29, 23) - .addBox(-0.4486F, -1.083F, -1.3189F, 0.8972F, 2.166F, 5.066F, new CubeDeformation(0.0F)).texOffs(28, 0).addBox(-1.083F, -0.4486F, -1.3189F, 2.166F, 0.8972F, 5.066F, new CubeDeformation(0.0F)).texOffs(29, 30) - .addBox(-1.254F, -0.5194F, -0.2929F, 2.508F, 1.0388F, 3.128F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-0.5194F, -1.254F, -0.2929F, 1.0388F, 2.508F, 3.128F, new CubeDeformation(0.0F)).texOffs(0, 8) - .addBox(-1.425F, -0.5902F, 0.7331F, 2.85F, 1.1805F, 1.19F, new CubeDeformation(0.0F)).texOffs(7, 5).addBox(-0.5902F, -1.425F, 0.7331F, 1.1805F, 2.85F, 1.19F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(0.0F, -0.0003F, -0.8848F, 0.0F, 0.0F, -0.3927F)); - PartDefinition octagon_r6 = Rockets.addOrReplaceChild("octagon_r6", - CubeListBuilder.create().texOffs(4, 0).addBox(-0.57F, -0.2361F, -4.1689F, 1.14F, 0.4722F, 2.85F, new CubeDeformation(0.0F)).texOffs(0, 4).addBox(-0.2361F, -0.57F, -4.1689F, 0.4722F, 1.14F, 2.85F, new CubeDeformation(0.0F)) - .texOffs(11, 17).addBox(-0.741F, -0.3069F, -3.4849F, 1.482F, 0.6139F, 1.824F, new CubeDeformation(0.0F)).texOffs(19, 3).addBox(-0.3069F, -0.741F, -3.4849F, 0.6139F, 1.482F, 1.824F, new CubeDeformation(0.0F)).texOffs(0, 15) - .addBox(-0.912F, -0.3778F, -2.3449F, 1.824F, 0.7555F, 7.0265F, new CubeDeformation(0.0F)).texOffs(11, 21).addBox(-0.3778F, -0.912F, -2.3449F, 0.7555F, 1.824F, 7.0265F, new CubeDeformation(0.0F)).texOffs(24, 9) - .addBox(-1.083F, -0.4486F, -1.3189F, 2.166F, 0.8972F, 5.066F, new CubeDeformation(0.0F)).texOffs(9, 30).addBox(-0.4486F, -1.083F, -1.3189F, 0.8972F, 2.166F, 5.066F, new CubeDeformation(0.0F)).texOffs(0, 31) - .addBox(-1.254F, -0.5194F, -0.2929F, 2.508F, 1.0388F, 3.128F, new CubeDeformation(0.0F)).texOffs(33, 6).addBox(-0.5194F, -1.254F, -0.2929F, 1.0388F, 2.508F, 3.128F, new CubeDeformation(0.0F)).texOffs(11, 15) - .addBox(-1.425F, -0.5902F, 0.7331F, 2.85F, 1.1805F, 1.19F, new CubeDeformation(0.0F)).texOffs(0, 18).addBox(-0.5902F, -1.425F, 0.7331F, 1.1805F, 2.85F, 1.19F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(0.0F, -0.0003F, -0.8848F, 0.0F, 0.0F, 0.3927F)); - PartDefinition group2 = Rockets.addOrReplaceChild("group2", CubeListBuilder.create(), PartPose.offset(0.0F, -6.0003F, 12.3571F)); - PartDefinition group3 = Rockets.addOrReplaceChild("group3", CubeListBuilder.create(), PartPose.offset(0.0F, -9.7972F, 8.7641F)); - PartDefinition octagon_r7 = group3.addOrReplaceChild("octagon_r7", CubeListBuilder.create().texOffs(20, 21).addBox(-0.7434F, -0.308F, 1.7936F, 1.4868F, 0.6158F, 5.7403F, new CubeDeformation(0.0F)).texOffs(28, 15).addBox(-0.3079F, -0.7435F, - 1.7936F, 0.6159F, 1.4868F, 5.7403F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 9.797F, -9.6489F, 0.0F, 0.0F, -0.3927F)); - PartDefinition octagon_r8 = group3.addOrReplaceChild("octagon_r8", - CubeListBuilder.create().texOffs(0, 24).addBox(-0.7434F, -0.308F, 1.7936F, 1.4868F, 0.6158F, 5.7403F, new CubeDeformation(0.0F)).texOffs(21, 28).addBox(-0.308F, -0.7435F, 1.7936F, 0.6159F, 1.4868F, 5.7403F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(0.0F, 9.797F, -9.6489F, 0.0F, 0.0F, 0.3927F)); - PartDefinition group4 = Rockets.addOrReplaceChild("group4", CubeListBuilder.create(), PartPose.offset(0.0F, -9.7972F, 8.7641F)); - PartDefinition group = Rockets.addOrReplaceChild("group", CubeListBuilder.create(), PartPose.offset(0.0F, 0.2029F, -5.0537F)); - PartDefinition octagon_r9 = group.addOrReplaceChild("octagon_r9", - CubeListBuilder.create().texOffs(0, 1).addBox(-0.1549F, -0.3739F, -4.905F, 0.3098F, 0.7478F, 1.1522F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-0.3739F, -0.1549F, -4.905F, 0.7478F, 0.3098F, 1.1522F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(0.0F, -0.2031F, 4.1689F, 0.0F, 0.0F, -0.3927F)); - PartDefinition octagon_r10 = group.addOrReplaceChild("octagon_r10", - CubeListBuilder.create().texOffs(8, 8).addBox(-0.1549F, -0.3739F, -4.905F, 0.3098F, 0.7478F, 1.1522F, new CubeDeformation(0.0F)).texOffs(0, 1).addBox(-0.3739F, -0.1549F, -4.905F, 0.7478F, 0.3098F, 1.1522F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(0.0F, -0.2031F, 4.1689F, 0.0F, 0.0F, 0.3927F)); - return LayerDefinition.create(meshdefinition, 16, 16); - } - - @Override - public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { - } - - @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - Rockets.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - } -} diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/ModelTaserRod.java b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/ModelTaserRod.java deleted file mode 100644 index c557c2556..000000000 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/ModelTaserRod.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.atsuishio.superbwarfare.client.model.entity; - -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import com.atsuishio.superbwarfare.ModUtils; -import net.minecraft.client.model.EntityModel; -import net.minecraft.client.model.geom.ModelLayerLocation; -import net.minecraft.client.model.geom.ModelPart; -import net.minecraft.client.model.geom.PartPose; -import net.minecraft.client.model.geom.builders.*; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.Entity; - -// Made with Blockbench 4.9.3 -// Exported for Minecraft version 1.17 or later with Mojang mappings -// Paste this class into your mod and generate all required imports -public class ModelTaserRod extends EntityModel { - // This layer location should be baked with EntityRendererProvider.Context in - // the entity renderer and passed into this model's constructor - public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation(ModUtils.MODID, "modeltaser_rod"), "main"); - public final ModelPart bone; - - public ModelTaserRod(ModelPart root) { - this.bone = root.getChild("bone"); - } - - public static LayerDefinition createBodyLayer() { - MeshDefinition meshdefinition = new MeshDefinition(); - PartDefinition partdefinition = meshdefinition.getRoot(); - PartDefinition bone = partdefinition.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(0.0F, 24.0F, 0.0F)); - PartDefinition cube_r1 = bone.addOrReplaceChild("cube_r1", - CubeListBuilder.create().texOffs(0, 4).addBox(-0.5F, -27.0F, -2.5F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-1.0F, -23.0F, -7.0F, 2.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0) - .addBox(-1.0F, -23.0F, -3.0F, 2.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 4).addBox(-0.5F, -27.0F, -6.5F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); - return LayerDefinition.create(meshdefinition, 16, 16); - } - - @Override - public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { - } - - @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - } -} diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/GunGrenadeRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/GunGrenadeRenderer.java index 936443d8a..f060a47eb 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/GunGrenadeRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/GunGrenadeRenderer.java @@ -1,41 +1,51 @@ package com.atsuishio.superbwarfare.client.renderer.entity; +import com.atsuishio.superbwarfare.entity.layer.GunGrenadeLayer; +import com.atsuishio.superbwarfare.entity.model.GunGrenadeModel; +import com.atsuishio.superbwarfare.entity.projectile.GunGrenadeEntity; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Axis; -import com.atsuishio.superbwarfare.ModUtils; -import com.atsuishio.superbwarfare.client.model.entity.ModelGrenade; -import com.atsuishio.superbwarfare.entity.projectile.GunGrenadeEntity; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; -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.GeoEntityRenderer; -public class GunGrenadeRenderer extends EntityRenderer { - private static final ResourceLocation TEXTURE = new ResourceLocation(ModUtils.MODID, "textures/entity/grenade.png"); - private final ModelGrenade model; +public class GunGrenadeRenderer extends GeoEntityRenderer { + public GunGrenadeRenderer(EntityRendererProvider.Context renderManager) { + super(renderManager, new GunGrenadeModel()); + this.addRenderLayer(new GunGrenadeLayer(this)); + this.shadowRadius = 0f; + } - public GunGrenadeRenderer(EntityRendererProvider.Context context) { - super(context); - model = new ModelGrenade<>(context.bakeLayer(ModelGrenade.LAYER_LOCATION)); + @Override + public RenderType getRenderType(GunGrenadeEntity animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) { + return RenderType.entityTranslucent(getTextureLocation(animatable)); + } + + @Override + public void preRender(PoseStack poseStack, GunGrenadeEntity entity, BakedGeoModel model, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, float red, float green, + float blue, float alpha) { + float scale = 1f; + this.scaleHeight = scale; + this.scaleWidth = scale; + super.preRender(poseStack, entity, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha); } @Override public void render(GunGrenadeEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) { - VertexConsumer vb = bufferIn.getBuffer(RenderType.entityCutout(this.getTextureLocation(entityIn))); poseStack.pushPose(); poseStack.mulPose(Axis.YP.rotationDegrees(Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()) - 90)); poseStack.mulPose(Axis.ZP.rotationDegrees(90 + Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot()))); - model.renderToBuffer(poseStack, vb, packedLightIn, OverlayTexture.NO_OVERLAY, 1, 1, 1, 0.0625f); - poseStack.popPose(); super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn); + poseStack.popPose(); } @Override - public ResourceLocation getTextureLocation(GunGrenadeEntity entity) { - return TEXTURE; + protected float getDeathMaxRotation(GunGrenadeEntity entityLivingBaseIn) { + return 0.0F; } } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/HandGrenadeEntityRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/HandGrenadeEntityRenderer.java deleted file mode 100644 index b663c7de2..000000000 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/HandGrenadeEntityRenderer.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.atsuishio.superbwarfare.client.renderer.entity; - -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import com.mojang.math.Axis; -import com.atsuishio.superbwarfare.ModUtils; -import com.atsuishio.superbwarfare.client.model.entity.ModelHandGrenade; -import com.atsuishio.superbwarfare.entity.projectile.HandGrenadeEntity; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.entity.EntityRenderer; -import net.minecraft.client.renderer.entity.EntityRendererProvider; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.Mth; - -public class HandGrenadeEntityRenderer extends EntityRenderer { - private static final ResourceLocation TEXTURE = new ResourceLocation(ModUtils.MODID, "textures/entity/hand_grenade.png"); - private final ModelHandGrenade model; - - public HandGrenadeEntityRenderer(EntityRendererProvider.Context context) { - super(context); - model = new ModelHandGrenade<>(context.bakeLayer(ModelHandGrenade.LAYER_LOCATION)); - } - - @Override - public void render(HandGrenadeEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) { - VertexConsumer vb = bufferIn.getBuffer(RenderType.entityCutout(this.getTextureLocation(entityIn))); - poseStack.pushPose(); - poseStack.mulPose(Axis.YP.rotationDegrees(Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()) - 90)); - poseStack.mulPose(Axis.ZP.rotationDegrees(90 + Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot()))); - model.renderToBuffer(poseStack, vb, packedLightIn, OverlayTexture.NO_OVERLAY, 1, 1, 1, 0.0625f); - poseStack.popPose(); - super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn); - } - - @Override - public ResourceLocation getTextureLocation(HandGrenadeEntity entity) { - return TEXTURE; - } -} diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/HandGrenadeRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/HandGrenadeRenderer.java new file mode 100644 index 000000000..045c1cb36 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/HandGrenadeRenderer.java @@ -0,0 +1,48 @@ +package com.atsuishio.superbwarfare.client.renderer.entity; + +import com.atsuishio.superbwarfare.entity.model.HandGrenadeEntityModel; +import com.atsuishio.superbwarfare.entity.projectile.HandGrenadeEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.math.Axis; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class HandGrenadeRenderer extends GeoEntityRenderer { + public HandGrenadeRenderer(EntityRendererProvider.Context renderManager) { + super(renderManager, new HandGrenadeEntityModel()); + } + + @Override + public RenderType getRenderType(HandGrenadeEntity animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) { + return RenderType.entityTranslucent(getTextureLocation(animatable)); + } + + @Override + public void preRender(PoseStack poseStack, HandGrenadeEntity entity, BakedGeoModel model, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, float red, float green, + float blue, float alpha) { + float scale = 1f; + this.scaleHeight = scale; + this.scaleWidth = scale; + super.preRender(poseStack, entity, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha); + } + + @Override + public void render(HandGrenadeEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) { + poseStack.pushPose(); + poseStack.mulPose(Axis.YP.rotationDegrees(Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()) - 90)); + poseStack.mulPose(Axis.ZP.rotationDegrees(90 + Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot()))); + super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn); + poseStack.popPose(); + } + + @Override + protected float getDeathMaxRotation(HandGrenadeEntity entityLivingBaseIn) { + return 0.0F; + } +} diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/JavelinMissileRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/JavelinMissileRenderer.java index 59da26470..e9c3423d7 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/JavelinMissileRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/JavelinMissileRenderer.java @@ -1,5 +1,6 @@ package com.atsuishio.superbwarfare.client.renderer.entity; +import com.atsuishio.superbwarfare.entity.layer.JavelinMissleLayer; import com.atsuishio.superbwarfare.entity.model.JavelinMissileModel; import com.atsuishio.superbwarfare.entity.projectile.JavelinMissileEntity; import com.mojang.blaze3d.vertex.PoseStack; @@ -16,7 +17,7 @@ import software.bernie.geckolib.renderer.GeoEntityRenderer; public class JavelinMissileRenderer extends GeoEntityRenderer { public JavelinMissileRenderer(EntityRendererProvider.Context renderManager) { super(renderManager, new JavelinMissileModel()); - this.shadowRadius = 0.1f; + this.addRenderLayer(new JavelinMissleLayer(this)); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/MortarShellRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/MortarShellRenderer.java index 07eec4c4b..d7c2f6bcf 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/MortarShellRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/MortarShellRenderer.java @@ -1,41 +1,48 @@ package com.atsuishio.superbwarfare.client.renderer.entity; +import com.atsuishio.superbwarfare.entity.model.MortarShellEntityModel; +import com.atsuishio.superbwarfare.entity.projectile.MortarShellEntity; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Axis; -import com.atsuishio.superbwarfare.ModUtils; -import com.atsuishio.superbwarfare.client.model.entity.ModelMortarShell; -import com.atsuishio.superbwarfare.entity.projectile.MortarShellEntity; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; -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.GeoEntityRenderer; -public class MortarShellRenderer extends EntityRenderer { - private static final ResourceLocation TEXTURE = new ResourceLocation(ModUtils.MODID, "textures/entity/mortar_shell.png"); - private final ModelMortarShell model; +public class MortarShellRenderer extends GeoEntityRenderer { + public MortarShellRenderer(EntityRendererProvider.Context renderManager) { + super(renderManager, new MortarShellEntityModel()); + } - public MortarShellRenderer(EntityRendererProvider.Context context) { - super(context); - model = new ModelMortarShell<>(context.bakeLayer(ModelMortarShell.LAYER_LOCATION)); + @Override + public RenderType getRenderType(MortarShellEntity animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) { + return RenderType.entityTranslucent(getTextureLocation(animatable)); + } + + @Override + public void preRender(PoseStack poseStack, MortarShellEntity entity, BakedGeoModel model, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, float red, float green, + float blue, float alpha) { + float scale = 1f; + this.scaleHeight = scale; + this.scaleWidth = scale; + super.preRender(poseStack, entity, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha); } @Override public void render(MortarShellEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) { - VertexConsumer vb = bufferIn.getBuffer(RenderType.entityCutout(this.getTextureLocation(entityIn))); poseStack.pushPose(); poseStack.mulPose(Axis.YP.rotationDegrees(Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()) - 90)); poseStack.mulPose(Axis.ZP.rotationDegrees(90 + Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot()))); - model.renderToBuffer(poseStack, vb, packedLightIn, OverlayTexture.NO_OVERLAY, 1, 1, 1, 0.0625f); - poseStack.popPose(); super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn); + poseStack.popPose(); } @Override - public ResourceLocation getTextureLocation(MortarShellEntity entity) { - return TEXTURE; + protected float getDeathMaxRotation(MortarShellEntity entityLivingBaseIn) { + return 0.0F; } } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/RgoGrenadeRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/RgoGrenadeRenderer.java index 7439c6ed8..735d15810 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/RgoGrenadeRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/RgoGrenadeRenderer.java @@ -1,10 +1,10 @@ package com.atsuishio.superbwarfare.client.renderer.entity; import com.atsuishio.superbwarfare.entity.model.RgoGrenadeEntityModel; +import com.atsuishio.superbwarfare.entity.projectile.RgoGrenadeEntity; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Axis; -import com.atsuishio.superbwarfare.entity.projectile.RgoGrenadeEntity; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.entity.EntityRendererProvider; @@ -16,7 +16,6 @@ import software.bernie.geckolib.renderer.GeoEntityRenderer; public class RgoGrenadeRenderer extends GeoEntityRenderer { public RgoGrenadeRenderer(EntityRendererProvider.Context renderManager) { super(renderManager, new RgoGrenadeEntityModel()); - this.shadowRadius = 0.1f; } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/RpgRocketRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/RpgRocketRenderer.java index ac150bd59..8379091b9 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/RpgRocketRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/RpgRocketRenderer.java @@ -1,10 +1,11 @@ package com.atsuishio.superbwarfare.client.renderer.entity; +import com.atsuishio.superbwarfare.entity.layer.RpgRocketLayer; import com.atsuishio.superbwarfare.entity.model.RpgRocketModel; +import com.atsuishio.superbwarfare.entity.projectile.RpgRocketEntity; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Axis; -import com.atsuishio.superbwarfare.entity.projectile.RpgRocketEntity; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.entity.EntityRendererProvider; @@ -16,7 +17,7 @@ import software.bernie.geckolib.renderer.GeoEntityRenderer; public class RpgRocketRenderer extends GeoEntityRenderer { public RpgRocketRenderer(EntityRendererProvider.Context renderManager) { super(renderManager, new RpgRocketModel()); - this.shadowRadius = 0.1f; + this.addRenderLayer(new RpgRocketLayer(this)); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/TaserBulletProjectileRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/TaserBulletProjectileRenderer.java index 0d7c1b407..dc91b2d1a 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/TaserBulletProjectileRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/TaserBulletProjectileRenderer.java @@ -1,41 +1,48 @@ package com.atsuishio.superbwarfare.client.renderer.entity; +import com.atsuishio.superbwarfare.entity.model.TaserBulletProjectileModel; +import com.atsuishio.superbwarfare.entity.projectile.TaserBulletProjectileEntity; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Axis; -import com.atsuishio.superbwarfare.ModUtils; -import com.atsuishio.superbwarfare.client.model.entity.ModelTaserRod; -import com.atsuishio.superbwarfare.entity.projectile.TaserBulletProjectileEntity; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; -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.GeoEntityRenderer; -public class TaserBulletProjectileRenderer extends EntityRenderer { - private static final ResourceLocation TEXTURE = new ResourceLocation(ModUtils.MODID, "textures/entity/taser_rod.png"); - private final ModelTaserRod model; +public class TaserBulletProjectileRenderer extends GeoEntityRenderer { + public TaserBulletProjectileRenderer(EntityRendererProvider.Context renderManager) { + super(renderManager, new TaserBulletProjectileModel()); + } - public TaserBulletProjectileRenderer(EntityRendererProvider.Context context) { - super(context); - model = new ModelTaserRod<>(context.bakeLayer(ModelTaserRod.LAYER_LOCATION)); + @Override + public RenderType getRenderType(TaserBulletProjectileEntity animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) { + return RenderType.entityTranslucent(getTextureLocation(animatable)); + } + + @Override + public void preRender(PoseStack poseStack, TaserBulletProjectileEntity entity, BakedGeoModel model, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, float red, float green, + float blue, float alpha) { + float scale = 1f; + this.scaleHeight = scale; + this.scaleWidth = scale; + super.preRender(poseStack, entity, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha); } @Override public void render(TaserBulletProjectileEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) { - VertexConsumer vb = bufferIn.getBuffer(RenderType.entityCutout(this.getTextureLocation(entityIn))); poseStack.pushPose(); poseStack.mulPose(Axis.YP.rotationDegrees(Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()) - 90)); poseStack.mulPose(Axis.ZP.rotationDegrees(90 + Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot()))); - model.renderToBuffer(poseStack, vb, packedLightIn, OverlayTexture.NO_OVERLAY, 1, 1, 1, 0.0625f); - poseStack.popPose(); super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn); + poseStack.popPose(); } @Override - public ResourceLocation getTextureLocation(TaserBulletProjectileEntity entity) { - return TEXTURE; + protected float getDeathMaxRotation(TaserBulletProjectileEntity entityLivingBaseIn) { + return 0.0F; } } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/ClaymoreEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/ClaymoreEntity.java index 23e889efa..1cf78534f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/ClaymoreEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/ClaymoreEntity.java @@ -47,6 +47,7 @@ public class ClaymoreEntity extends Entity implements GeoEntity, AnimatedEntity, public ClaymoreEntity(EntityType type, Level world) { super(type, world); + this.noCulling = true; } public ClaymoreEntity(LivingEntity owner, Level level) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/DroneEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/DroneEntity.java index da80d5fc8..f798bb32d 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/DroneEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/DroneEntity.java @@ -81,6 +81,7 @@ public class DroneEntity extends LivingEntity implements GeoEntity { public DroneEntity(EntityType type, Level world) { super(type, world); + this.noCulling = true; } public DroneEntity(EntityType type, Level world, float moveX, float moveY, float moveZ) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/Mk42Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/Mk42Entity.java index 5619c0241..c3f40c96f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/Mk42Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/Mk42Entity.java @@ -67,6 +67,7 @@ public class Mk42Entity extends Entity implements GeoEntity, ICannonEntity { public Mk42Entity(EntityType type, Level world) { super(type, world); + this.noCulling = true; } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/Mle1934Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/Mle1934Entity.java index 59f967e62..c0a224ef5 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/Mle1934Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/Mle1934Entity.java @@ -69,6 +69,7 @@ public class Mle1934Entity extends Entity implements GeoEntity, ICannonEntity { public Mle1934Entity(EntityType type, Level world) { super(type, world); + this.noCulling = true; } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/MortarEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/MortarEntity.java index dcb5c938f..e1b95e9c2 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/MortarEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/MortarEntity.java @@ -60,6 +60,7 @@ public class MortarEntity extends Entity implements GeoEntity, AnimatedEntity { public MortarEntity(PlayMessages.SpawnEntity packet, Level world) { this(ModEntities.MORTAR.get(), world); + this.noCulling = true; } public MortarEntity(EntityType type, Level world) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/TargetEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/TargetEntity.java index 8d3078bb2..6a696ab67 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/TargetEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/TargetEntity.java @@ -1,9 +1,9 @@ package com.atsuishio.superbwarfare.entity; import com.atsuishio.superbwarfare.init.ModEntities; -import com.atsuishio.superbwarfare.network.ModVariables; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; +import com.atsuishio.superbwarfare.network.ModVariables; import com.atsuishio.superbwarfare.tools.SoundTool; import net.minecraft.commands.arguments.EntityAnchorArgument; import net.minecraft.core.BlockPos; @@ -50,6 +50,7 @@ public class TargetEntity extends LivingEntity implements GeoEntity, AnimatedEnt public TargetEntity(EntityType type, Level world) { super(type, world); + this.noCulling = true; } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/layer/GunGrenadeLayer.java b/src/main/java/com/atsuishio/superbwarfare/entity/layer/GunGrenadeLayer.java new file mode 100644 index 000000000..2fe370068 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/entity/layer/GunGrenadeLayer.java @@ -0,0 +1,27 @@ +package com.atsuishio.superbwarfare.entity.layer; + +import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.entity.projectile.GunGrenadeEntity; +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 GunGrenadeLayer extends GeoRenderLayer { + private static final ResourceLocation LAYER = new ResourceLocation(ModUtils.MODID, "textures/entity/cannon_shell_e.png"); + + public GunGrenadeLayer(GeoRenderer entityRenderer) { + super(entityRenderer); + } + + @Override + public void render(PoseStack poseStack, GunGrenadeEntity 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/entity/layer/JavelinMissleLayer.java b/src/main/java/com/atsuishio/superbwarfare/entity/layer/JavelinMissleLayer.java new file mode 100644 index 000000000..99df9a589 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/entity/layer/JavelinMissleLayer.java @@ -0,0 +1,27 @@ +package com.atsuishio.superbwarfare.entity.layer; + +import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.entity.projectile.JavelinMissileEntity; +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 JavelinMissleLayer extends GeoRenderLayer { + private static final ResourceLocation LAYER = new ResourceLocation(ModUtils.MODID, "textures/entity/rpg_rocket_e.png"); + + public JavelinMissleLayer(GeoRenderer entityRenderer) { + super(entityRenderer); + } + + @Override + public void render(PoseStack poseStack, JavelinMissileEntity 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/entity/layer/RpgRocketLayer.java b/src/main/java/com/atsuishio/superbwarfare/entity/layer/RpgRocketLayer.java new file mode 100644 index 000000000..d44a910d2 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/entity/layer/RpgRocketLayer.java @@ -0,0 +1,27 @@ +package com.atsuishio.superbwarfare.entity.layer; + +import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.entity.projectile.RpgRocketEntity; +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 RpgRocketLayer extends GeoRenderLayer { + private static final ResourceLocation LAYER = new ResourceLocation(ModUtils.MODID, "textures/entity/rpg_rocket_e.png"); + + public RpgRocketLayer(GeoRenderer entityRenderer) { + super(entityRenderer); + } + + @Override + public void render(PoseStack poseStack, RpgRocketEntity 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/entity/model/GunGrenadeModel.java b/src/main/java/com/atsuishio/superbwarfare/entity/model/GunGrenadeModel.java new file mode 100644 index 000000000..b86c93c72 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/entity/model/GunGrenadeModel.java @@ -0,0 +1,33 @@ +package com.atsuishio.superbwarfare.entity.model; + +import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.entity.projectile.GunGrenadeEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.core.animatable.model.CoreGeoBone; +import software.bernie.geckolib.core.animation.AnimationState; +import software.bernie.geckolib.model.GeoModel; + +public class GunGrenadeModel extends GeoModel { + @Override + public ResourceLocation getAnimationResource(GunGrenadeEntity entity) { + return new ResourceLocation(ModUtils.MODID, "animations/cannon_shell.animation.json"); + } + + @Override + public ResourceLocation getModelResource(GunGrenadeEntity entity) { + return new ResourceLocation(ModUtils.MODID, "geo/cannon_shell.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(GunGrenadeEntity entity) { + return new ResourceLocation(ModUtils.MODID, "textures/entity/cannon_shell.png"); + } + + @Override + public void setCustomAnimations(GunGrenadeEntity animatable, long instanceId, AnimationState animationState) { + CoreGeoBone bone = getAnimationProcessor().getBone("bone"); + bone.setScaleX(0.15f); + bone.setScaleY(0.15f); + bone.setScaleZ(0.15f); + } +} diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/model/HandGrenadeEntityModel.java b/src/main/java/com/atsuishio/superbwarfare/entity/model/HandGrenadeEntityModel.java new file mode 100644 index 000000000..4998f452d --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/entity/model/HandGrenadeEntityModel.java @@ -0,0 +1,23 @@ +package com.atsuishio.superbwarfare.entity.model; + +import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.entity.projectile.HandGrenadeEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class HandGrenadeEntityModel extends GeoModel { + @Override + public ResourceLocation getAnimationResource(HandGrenadeEntity entity) { + return null; + } + + @Override + public ResourceLocation getModelResource(HandGrenadeEntity entity) { + return new ResourceLocation(ModUtils.MODID, "geo/hand_grenade.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(HandGrenadeEntity entity) { + return new ResourceLocation(ModUtils.MODID, "textures/entity/hand_grenade.png"); + } +} diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/model/MortarShellEntityModel.java b/src/main/java/com/atsuishio/superbwarfare/entity/model/MortarShellEntityModel.java new file mode 100644 index 000000000..1a7562a20 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/entity/model/MortarShellEntityModel.java @@ -0,0 +1,24 @@ +package com.atsuishio.superbwarfare.entity.model; + +import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.entity.projectile.MortarShellEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class MortarShellEntityModel extends GeoModel { + @Override + public ResourceLocation getAnimationResource(MortarShellEntity entity) { + return null; + } + + @Override + public ResourceLocation getModelResource(MortarShellEntity entity) { + return new ResourceLocation(ModUtils.MODID, "geo/mortar_shell.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(MortarShellEntity entity) { + return ModUtils.loc("textures/entity/mortar.png"); + } + +} diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/model/RgoGrenadeEntityModel.java b/src/main/java/com/atsuishio/superbwarfare/entity/model/RgoGrenadeEntityModel.java index cbc62c7af..7a65eef75 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/model/RgoGrenadeEntityModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/model/RgoGrenadeEntityModel.java @@ -8,7 +8,7 @@ import software.bernie.geckolib.model.GeoModel; public class RgoGrenadeEntityModel extends GeoModel { @Override public ResourceLocation getAnimationResource(RgoGrenadeEntity entity) { - return new ResourceLocation(ModUtils.MODID, "animations/rgo_grenade.animation.json"); + return null; } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/model/TaserBulletProjectileModel.java b/src/main/java/com/atsuishio/superbwarfare/entity/model/TaserBulletProjectileModel.java new file mode 100644 index 000000000..08a7941dc --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/entity/model/TaserBulletProjectileModel.java @@ -0,0 +1,23 @@ +package com.atsuishio.superbwarfare.entity.model; + +import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.entity.projectile.TaserBulletProjectileEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class TaserBulletProjectileModel extends GeoModel { + @Override + public ResourceLocation getAnimationResource(TaserBulletProjectileEntity entity) { + return null; + } + + @Override + public ResourceLocation getModelResource(TaserBulletProjectileEntity entity) { + return new ResourceLocation(ModUtils.MODID, "geo/taser_rod.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(TaserBulletProjectileEntity entity) { + return new ResourceLocation(ModUtils.MODID, "textures/entity/taser_rod.png"); + } +} diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/CannonShellEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/CannonShellEntity.java index b342ce611..5c26fcf53 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/CannonShellEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/CannonShellEntity.java @@ -58,6 +58,7 @@ public class CannonShellEntity extends ThrowableItemProjectile implements GeoEnt public CannonShellEntity(EntityType type, Level world) { super(type, world); + this.noCulling = true; } public CannonShellEntity(EntityType type, LivingEntity entity, Level world, float damage, float explosionRadius, float explosionDamage, float fireProbability, int fireTime) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/GunGrenadeEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/GunGrenadeEntity.java index ddf900ba6..12401e861 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/GunGrenadeEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/GunGrenadeEntity.java @@ -29,15 +29,21 @@ import net.minecraft.world.phys.EntityHitResult; import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.PacketDistributor; import net.minecraftforge.network.PlayMessages; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.core.animation.AnimatableManager; +import software.bernie.geckolib.util.GeckoLibUtil; -public class GunGrenadeEntity extends ThrowableItemProjectile { +public class GunGrenadeEntity extends ThrowableItemProjectile implements GeoEntity { private float monsterMultiplier = 0.0f; private float damage = 40.0f; private float explosion_damage = 80f; private float explosion_radius = 5f; + private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); public GunGrenadeEntity(EntityType type, Level world) { super(type, world); + this.noCulling = true; } public GunGrenadeEntity(LivingEntity entity, Level level, float damage, float explosion_damage, float explosion_radius) { @@ -141,4 +147,14 @@ public class GunGrenadeEntity extends ThrowableItemProjectile { this.discard(); } } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar data) { + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.cache; + } + } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/HandGrenadeEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/HandGrenadeEntity.java index 27dea63b4..91c1f2a5b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/HandGrenadeEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/HandGrenadeEntity.java @@ -31,12 +31,18 @@ import net.minecraft.world.phys.HitResult; import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.PacketDistributor; import net.minecraftforge.network.PlayMessages; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.core.animation.AnimatableManager; +import software.bernie.geckolib.util.GeckoLibUtil; -public class HandGrenadeEntity extends ThrowableItemProjectile { +public class HandGrenadeEntity extends ThrowableItemProjectile implements GeoEntity { private int fuse = 100; + private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); public HandGrenadeEntity(EntityType type, Level world) { super(type, world); + this.noCulling = true; } public HandGrenadeEntity(LivingEntity entity, Level level, int fuse) { @@ -139,6 +145,15 @@ public class HandGrenadeEntity extends ThrowableItemProjectile { } } + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar data) { + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.cache; + } + @Override protected float getGravity() { return 0.07F; diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/JavelinMissileEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/JavelinMissileEntity.java index e8c011d3d..3fc4500f2 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/JavelinMissileEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/JavelinMissileEntity.java @@ -61,6 +61,7 @@ public class JavelinMissileEntity extends ThrowableItemProjectile implements Geo public JavelinMissileEntity(EntityType type, Level world) { super(type, world); + this.noCulling = true; } public JavelinMissileEntity(LivingEntity entity, Level level, float damage, float explosion_damage, float explosion_radius) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/MortarShellEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/MortarShellEntity.java index 8de71e6af..4c8c7b40b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/MortarShellEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/MortarShellEntity.java @@ -24,15 +24,21 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.EntityHitResult; import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.PlayMessages; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.core.animation.AnimatableManager; +import software.bernie.geckolib.util.GeckoLibUtil; -public class MortarShellEntity extends ThrowableItemProjectile { +public class MortarShellEntity extends ThrowableItemProjectile implements GeoEntity { private float damage = ExplosionConfig.MORTAR_SHELL_EXPLOSION_DAMAGE.get(); private int life = 600; private float radius = ExplosionConfig.MORTAR_SHELL_EXPLOSION_RADIUS.get(); + private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); public MortarShellEntity(EntityType type, Level world) { super(type, world); + this.noCulling = true; } public MortarShellEntity(EntityType type, LivingEntity entity, Level world) { @@ -134,6 +140,16 @@ public class MortarShellEntity extends ThrowableItemProjectile { } } + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar data) { + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.cache; + } + + @Override protected float getGravity() { return 0.05F; diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/ProjectileEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/ProjectileEntity.java index 3ef53791e..7741ba630 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/ProjectileEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/ProjectileEntity.java @@ -103,6 +103,7 @@ public class ProjectileEntity extends Entity implements IEntityAdditionalSpawnDa public ProjectileEntity(EntityType p_i50159_1_, Level p_i50159_2_) { super(p_i50159_1_, p_i50159_2_); + this.noCulling = true; } public ProjectileEntity(Level level) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/RgoGrenadeEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/RgoGrenadeEntity.java index 746bac9ec..bc248e042 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/RgoGrenadeEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/RgoGrenadeEntity.java @@ -50,6 +50,7 @@ public class RgoGrenadeEntity extends ThrowableItemProjectile implements GeoEnti public RgoGrenadeEntity(EntityType type, Level world) { super(type, world); + this.noCulling = true; } public RgoGrenadeEntity(LivingEntity entity, Level level, int fuse) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/RpgRocketEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/RpgRocketEntity.java index cb7705a34..0eba4da44 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/RpgRocketEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/RpgRocketEntity.java @@ -60,6 +60,7 @@ public class RpgRocketEntity extends ThrowableItemProjectile implements GeoEntit public RpgRocketEntity(EntityType type, Level world) { super(type, world); + this.noCulling = true; } public RpgRocketEntity(LivingEntity entity, Level level, float damage, float explosion_damage, float explosion_radius) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/TaserBulletProjectileEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/TaserBulletProjectileEntity.java index 41e1bc08c..3e6bd7590 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/TaserBulletProjectileEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/TaserBulletProjectileEntity.java @@ -1,8 +1,11 @@ package com.atsuishio.superbwarfare.entity.projectile; -import com.atsuishio.superbwarfare.init.*; -import com.atsuishio.superbwarfare.network.message.ClientIndicatorMessage; import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.init.ModDamageTypes; +import com.atsuishio.superbwarfare.init.ModEntities; +import com.atsuishio.superbwarfare.init.ModMobEffects; +import com.atsuishio.superbwarfare.init.ModSounds; +import com.atsuishio.superbwarfare.network.message.ClientIndicatorMessage; import net.minecraft.core.BlockPos; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.game.ClientGamePacketListener; @@ -19,6 +22,7 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.projectile.AbstractArrow; import net.minecraft.world.entity.projectile.ItemSupplier; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.BellBlock; import net.minecraft.world.level.block.state.BlockState; @@ -30,18 +34,24 @@ import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.PacketDistributor; import net.minecraftforge.network.PlayMessages; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.core.animation.AnimatableManager; +import software.bernie.geckolib.util.GeckoLibUtil; @OnlyIn(value = Dist.CLIENT, _interface = ItemSupplier.class) -public class TaserBulletProjectileEntity extends AbstractArrow implements ItemSupplier { +public class TaserBulletProjectileEntity extends AbstractArrow implements GeoEntity { private float damage = 1f; private int volt = 0; private int wireLength = 0; private boolean stop = false; - public static final ItemStack PROJECTILE_ITEM = new ItemStack(ModItems.TASER_ELECTRODE.get()); + public static final ItemStack PROJECTILE_ITEM = new ItemStack(Items.AIR); + private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); public TaserBulletProjectileEntity(PlayMessages.SpawnEntity packet, Level world) { super(ModEntities.TASER_BULLET_PROJECTILE.get(), world); + this.pickup = AbstractArrow.Pickup.DISALLOWED; } public TaserBulletProjectileEntity(LivingEntity entity, Level level, float damage, int volt, int wireLength) { @@ -53,6 +63,7 @@ public class TaserBulletProjectileEntity extends AbstractArrow implements ItemSu public TaserBulletProjectileEntity(EntityType type, Level world) { super(type, world); + this.noCulling = true; } @Override @@ -60,23 +71,11 @@ public class TaserBulletProjectileEntity extends AbstractArrow implements ItemSu return NetworkHooks.getEntitySpawningPacket(this); } - @Override - @OnlyIn(Dist.CLIENT) - public ItemStack getItem() { - return PROJECTILE_ITEM; - } - @Override protected ItemStack getPickupItem() { return PROJECTILE_ITEM; } - @Override - protected void doPostHurtEffects(LivingEntity entity) { - super.doPostHurtEffects(entity); - entity.setArrowCount(entity.getArrowCount() - 1); - } - @Override protected void onHitEntity(EntityHitResult result) { Entity entity = result.getEntity(); @@ -127,5 +126,14 @@ public class TaserBulletProjectileEntity extends AbstractArrow implements ItemSu this.discard(); } } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar data) { + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.cache; + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModEntityRenderers.java b/src/main/java/com/atsuishio/superbwarfare/init/ModEntityRenderers.java index ce7991df4..6d5dbc16c 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModEntityRenderers.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModEntityRenderers.java @@ -23,7 +23,7 @@ public class ModEntityRenderers { event.registerEntityRenderer(ModEntities.PROJECTILE.get(), ProjectileEntityRenderer::new); event.registerEntityRenderer(ModEntities.MK_42.get(), Mk42Renderer::new); event.registerEntityRenderer(ModEntities.DRONE.get(), DroneRenderer::new); - event.registerEntityRenderer(ModEntities.HAND_GRENADE_ENTITY.get(), HandGrenadeEntityRenderer::new); + event.registerEntityRenderer(ModEntities.HAND_GRENADE_ENTITY.get(), HandGrenadeRenderer::new); event.registerEntityRenderer(ModEntities.RGO_GRENADE.get(), RgoGrenadeRenderer::new); event.registerEntityRenderer(ModEntities.MLE_1934.get(), Mle1934Renderer::new); event.registerEntityRenderer(ModEntities.JAVELIN_MISSILE.get(), JavelinMissileRenderer::new); diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModModels.java b/src/main/java/com/atsuishio/superbwarfare/init/ModModels.java deleted file mode 100644 index 09d9dbf38..000000000 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModModels.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.atsuishio.superbwarfare.init; - -import com.atsuishio.superbwarfare.client.model.entity.ModelGrenade; -import com.atsuishio.superbwarfare.client.model.entity.ModelHandGrenade; -import com.atsuishio.superbwarfare.client.model.entity.ModelMortarShell; -import com.atsuishio.superbwarfare.client.model.entity.ModelTaserRod; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.EntityRenderersEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; - -@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, value = {Dist.CLIENT}) -public class ModModels { - @SubscribeEvent - public static void registerLayerDefinitions(EntityRenderersEvent.RegisterLayerDefinitions event) { - event.registerLayerDefinition(ModelMortarShell.LAYER_LOCATION, ModelMortarShell::createBodyLayer); - event.registerLayerDefinition(ModelTaserRod.LAYER_LOCATION, ModelTaserRod::createBodyLayer); - event.registerLayerDefinition(ModelGrenade.LAYER_LOCATION, ModelGrenade::createBodyLayer); - event.registerLayerDefinition(ModelHandGrenade.LAYER_LOCATION, ModelHandGrenade::createBodyLayer); - } -} diff --git a/src/main/resources/assets/superbwarfare/animations/javelin_missile.animation.json b/src/main/resources/assets/superbwarfare/animations/javelin_missile.animation.json index fac2fdb4d..bf072a840 100644 --- a/src/main/resources/assets/superbwarfare/animations/javelin_missile.animation.json +++ b/src/main/resources/assets/superbwarfare/animations/javelin_missile.animation.json @@ -3,7 +3,7 @@ "animations": { "animation.jvm.idle": { "loop": "hold_on_last_frame", - "animation_length": 10, + "animation_length": 10.1, "bones": { "wing1": { "rotation": { @@ -82,6 +82,122 @@ "0.2667": [0, 0, 0], "0.3167": [0, 105, 0] } + }, + "flare": { + "scale": { + "0.0": [0, 0, 0], + "0.3333": [0, 0, 0], + "0.3833": [1.5, 1.5, 1.5], + "0.4": [1, 1, 1], + "0.5333": [1.07048, 1.07048, 1.07048], + "0.6167": [1.1, 1.1, 1.1], + "0.8": [0.99564, 0.99564, 0.99564], + "0.8833": [0.95632, 0.95632, 0.95632], + "0.9": [0.955, 0.955, 0.955], + "1.1167": [1.01085, 1.01085, 1.01085], + "1.2833": [1.05, 1.05, 1.05], + "1.5": [1.0079, 1.0079, 1.0079], + "1.7": [0.97, 0.97, 0.97], + "1.9167": [1.005, 1.005, 1.005], + "2.1333": [1.04, 1.04, 1.04], + "2.2833": [0.97737, 0.97737, 0.97737], + "2.3667": [0.955, 0.955, 0.955], + "2.5833": [1.01085, 1.01085, 1.01085], + "2.75": [1.05, 1.05, 1.05], + "2.9667": [1.0079, 1.0079, 1.0079], + "3.1667": [0.97, 0.97, 0.97], + "3.3833": [1.005, 1.005, 1.005], + "3.6": [1.04, 1.04, 1.04], + "3.6833": [1.00185, 1.00185, 1.00185], + "3.7333": [0.95134, 0.95134, 0.95134], + "3.75": [0.94107, 0.94107, 0.94107], + "3.7667": [0.94129, 0.94129, 0.94129], + "3.7833": [0.955, 0.955, 0.955], + "3.8": [0.96853, 0.96853, 0.96853], + "4.0167": [1.00672, 1.00672, 1.00672], + "4.1333": [1.02876, 1.02876, 1.02876], + "4.15": [1.03647, 1.03647, 1.03647], + "4.1667": [1.05, 1.05, 1.05], + "4.1833": [1.06006, 1.06006, 1.06006], + "4.4": [1.00033, 1.00033, 1.00033], + "4.5333": [0.9592, 0.9592, 0.9592], + "4.5667": [0.95994, 0.95994, 0.95994], + "4.5833": [0.97, 0.97, 0.97], + "4.6": [0.98259, 0.98259, 0.98259], + "4.8167": [1.00534, 1.00534, 1.00534], + "4.9833": [1.02089, 1.02089, 1.02089], + "5.0": [1.02741, 1.02741, 1.02741], + "5.0167": [1.04, 1.04, 1.04], + "5.0333": [1.05377, 1.05377, 1.05377], + "5.25": [1.05274, 1.05274, 1.05274], + "5.3667": [1.04, 1.04, 1.04], + "5.45": [1.00185, 1.00185, 1.00185], + "5.5": [0.95134, 0.95134, 0.95134], + "5.5167": [0.94107, 0.94107, 0.94107], + "5.5333": [0.94129, 0.94129, 0.94129], + "5.55": [0.955, 0.955, 0.955], + "5.5667": [0.96853, 0.96853, 0.96853], + "5.7833": [1.00672, 1.00672, 1.00672], + "5.9": [1.02876, 1.02876, 1.02876], + "5.9167": [1.03647, 1.03647, 1.03647], + "5.9333": [1.05, 1.05, 1.05], + "5.95": [1.06006, 1.06006, 1.06006], + "6.1667": [1.00033, 1.00033, 1.00033], + "6.3": [0.9592, 0.9592, 0.9592], + "6.3333": [0.95994, 0.95994, 0.95994], + "6.35": [0.97, 0.97, 0.97], + "6.3667": [0.98259, 0.98259, 0.98259], + "6.5833": [1.00534, 1.00534, 1.00534], + "6.75": [1.02089, 1.02089, 1.02089], + "6.7667": [1.02741, 1.02741, 1.02741], + "6.7833": [1.04, 1.04, 1.04], + "6.8": [1.05562, 1.05562, 1.05562], + "7.0": [1.04056, 1.04056, 1.04056], + "7.0167": [1.04, 1.04, 1.04], + "7.1": [1.00185, 1.00185, 1.00185], + "7.15": [0.95134, 0.95134, 0.95134], + "7.1667": [0.94107, 0.94107, 0.94107], + "7.1833": [0.94129, 0.94129, 0.94129], + "7.2": [0.955, 0.955, 0.955], + "7.2167": [0.96853, 0.96853, 0.96853], + "7.4333": [1.00672, 1.00672, 1.00672], + "7.55": [1.02876, 1.02876, 1.02876], + "7.5667": [1.03647, 1.03647, 1.03647], + "7.5833": [1.05, 1.05, 1.05], + "7.6": [1.06006, 1.06006, 1.06006], + "7.8167": [1.00033, 1.00033, 1.00033], + "7.95": [0.9592, 0.9592, 0.9592], + "7.9833": [0.95994, 0.95994, 0.95994], + "8.0": [0.97, 0.97, 0.97], + "8.0167": [0.98259, 0.98259, 0.98259], + "8.2333": [1.00534, 1.00534, 1.00534], + "8.4": [1.02089, 1.02089, 1.02089], + "8.4167": [1.02741, 1.02741, 1.02741], + "8.4333": [1.04, 1.04, 1.04], + "8.45": [1.05529, 1.05529, 1.05529], + "8.6667": [1.04055, 1.04055, 1.04055], + "8.6833": [1.04, 1.04, 1.04], + "8.7667": [1.00185, 1.00185, 1.00185], + "8.8167": [0.95134, 0.95134, 0.95134], + "8.8333": [0.94107, 0.94107, 0.94107], + "8.85": [0.94129, 0.94129, 0.94129], + "8.8667": [0.955, 0.955, 0.955], + "8.8833": [0.96853, 0.96853, 0.96853], + "9.1": [1.00672, 1.00672, 1.00672], + "9.2167": [1.02876, 1.02876, 1.02876], + "9.2333": [1.03647, 1.03647, 1.03647], + "9.25": [1.05, 1.05, 1.05], + "9.2667": [1.06006, 1.06006, 1.06006], + "9.4833": [1.00033, 1.00033, 1.00033], + "9.6167": [0.9592, 0.9592, 0.9592], + "9.65": [0.95994, 0.95994, 0.95994], + "9.6667": [0.97, 0.97, 0.97], + "9.6833": [0.98259, 0.98259, 0.98259], + "9.9": [1.00534, 1.00534, 1.00534], + "10.0667": [1.02089, 1.02089, 1.02089], + "10.0833": [1.02741, 1.02741, 1.02741], + "10.1": [1.04, 1.04, 1.04] + } } } } diff --git a/src/main/resources/assets/superbwarfare/animations/rgo_grenade.animation.json b/src/main/resources/assets/superbwarfare/animations/rgo_grenade.animation.json deleted file mode 100644 index db89cd83f..000000000 --- a/src/main/resources/assets/superbwarfare/animations/rgo_grenade.animation.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "format_version": "1.8.0", - "animations": { - "animation.rgo_grenade.idle": { - "loop": true - } - }, - "geckolib_format_version": 2 -} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/animations/rpg_rocket.animation.json b/src/main/resources/assets/superbwarfare/animations/rpg_rocket.animation.json index 342c0b13e..4885194d9 100644 --- a/src/main/resources/assets/superbwarfare/animations/rpg_rocket.animation.json +++ b/src/main/resources/assets/superbwarfare/animations/rpg_rocket.animation.json @@ -7,101 +7,114 @@ "bones": { "wing1": { "rotation": { - "0.2417": { - "vector": [0, 0, 0] - }, - "0.6": { - "vector": [0, 67.5, 0], - "easing": "easeInElastic" - } + "0.2417": [0, 0, 0], + "0.6": [0, 67.5, 0] } }, "wing2": { "rotation": { - "0.2417": { - "vector": [0, 0, 0] - }, - "0.6": { - "vector": [0, 67.5, 0], - "easing": "easeInElastic" - } + "0.2417": [0, 0, 0], + "0.6": [0, 67.5, 0] } }, "wing3": { "rotation": { - "0.2417": { - "vector": [0, 0, 0] - }, - "0.6": { - "vector": [0, 67.5, 0], - "easing": "easeInElastic" - } + "0.2417": [0, 0, 0], + "0.6": [0, 67.5, 0] } }, "wing4": { "rotation": { - "0.2417": { - "vector": [0, 0, 0] - }, - "0.6": { - "vector": [0, 67.5, 0], - "easing": "easeInElastic" - } + "0.2417": [0, 0, 0], + "0.6": [0, 67.5, 0] } }, "wing5": { "rotation": { - "0.2417": { - "vector": [0, 0, 0] - }, - "0.6": { - "vector": [0, 67.5, 0], - "easing": "easeInElastic" - } + "0.2417": [0, 0, 0], + "0.6": [0, 67.5, 0] } }, "wing6": { "rotation": { - "0.2417": { - "vector": [0, 0, 0] - }, - "0.6": { - "vector": [0, 67.5, 0], - "easing": "easeInElastic" - } + "0.2417": [0, 0, 0], + "0.6": [0, 67.5, 0] } }, "wing7": { "rotation": { - "0.2417": { - "vector": [0, 0, 0] - }, - "0.6": { - "vector": [0, 67.5, 0], - "easing": "easeInElastic" - } + "0.2417": [0, 0, 0], + "0.6": [0, 67.5, 0] } }, "wing8": { "rotation": { - "0.2417": { - "vector": [0, 0, 0] - }, - "0.6": { - "vector": [0, 67.5, 0], - "easing": "easeInElastic" - } + "0.2417": [0, 0, 0], + "0.6": [0, 67.5, 0] } }, "body": { "rotation": { - "0.0": { - "vector": [0, 0, 0] - }, - "6.0": { - "vector": [0, 10800, 0], - "easing": "easeInSine" - } + "0.0": [0, 0, 0], + "6.0": [0, 10800, 0] + } + }, + "flare": { + "scale": { + "0.0": [0, 0, 0], + "0.5": [0, 0, 0], + "0.5417": [1.5, 1.5, 1.5], + "0.5667": [1, 1, 1], + "0.675": [1.05, 1.05, 1.05], + "0.7833": [1.1, 1.1, 1.1], + "0.8917": [1.05121, 1.05121, 1.05121], + "1.0": [0.97056, 0.97056, 0.97056], + "1.0583": [0.955, 0.955, 0.955], + "1.1667": [0.97562, 0.97562, 0.97562], + "1.275": [1.01085, 1.01085, 1.01085], + "1.3833": [1.04249, 1.04249, 1.04249], + "1.4417": [1.05, 1.05, 1.05], + "1.55": [1.03425, 1.03425, 1.03425], + "1.6583": [1.0079, 1.0079, 1.0079], + "1.7667": [0.98218, 0.98218, 0.98218], + "1.8583": [0.97, 0.97, 0.97], + "1.9667": [0.98318, 0.98318, 0.98318], + "2.075": [1.005, 1.005, 1.005], + "2.1833": [1.02682, 1.02682, 1.02682], + "2.2917": [1.04, 1.04, 1.04], + "2.4": [1.00495, 1.00495, 1.00495], + "2.5083": [0.95684, 0.95684, 0.95684], + "2.5333": [0.955, 0.955, 0.955], + "2.6417": [0.97562, 0.97562, 0.97562], + "2.75": [1.01085, 1.01085, 1.01085], + "2.8583": [1.04249, 1.04249, 1.04249], + "2.9167": [1.05, 1.05, 1.05], + "3.025": [1.03425, 1.03425, 1.03425], + "3.1333": [1.0079, 1.0079, 1.0079], + "3.2417": [0.98218, 0.98218, 0.98218], + "3.3333": [0.97, 0.97, 0.97], + "3.4417": [0.98318, 0.98318, 0.98318], + "3.55": [1.005, 1.005, 1.005], + "3.6583": [1.02682, 1.02682, 1.02682], + "3.7667": [1.04, 1.04, 1.04], + "3.875": [0.97636, 0.97636, 0.97636], + "3.9167": [0.94107, 0.94107, 0.94107], + "3.95": [0.955, 0.955, 0.955], + "4.0583": [0.99318, 0.99318, 0.99318], + "4.1667": [1.00498, 1.00498, 1.00498], + "4.275": [1.02112, 1.02112, 1.02112], + "4.325": [1.04197, 1.04197, 1.04197], + "4.3333": [1.05, 1.05, 1.05], + "4.4417": [1.04664, 1.04664, 1.04664], + "4.55": [1.00677, 1.00677, 1.00677], + "4.6583": [0.96833, 0.96833, 0.96833], + "4.7333": [0.95994, 0.95994, 0.95994], + "4.75": [0.97, 0.97, 0.97], + "4.8583": [1.00099, 1.00099, 1.00099], + "4.9667": [1.005, 1.005, 1.005], + "5.075": [1.00901, 1.00901, 1.00901], + "5.1667": [1.02741, 1.02741, 1.02741], + "5.1833": [1.04, 1.04, 1.04] } } } diff --git a/src/main/resources/assets/superbwarfare/geo/hand_grenade.geo.json b/src/main/resources/assets/superbwarfare/geo/hand_grenade.geo.json new file mode 100644 index 000000000..0450e20c6 --- /dev/null +++ b/src/main/resources/assets/superbwarfare/geo/hand_grenade.geo.json @@ -0,0 +1,270 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.hand_grenade - Converted", + "texture_width": 16, + "texture_height": 16, + "visible_bounds_width": 2, + "visible_bounds_height": 1.5, + "visible_bounds_offset": [0, 0.25, 0] + }, + "bones": [ + { + "name": "bone", + "pivot": [0, 24.02167, 0.48829] + }, + { + "name": "body", + "parent": "bone", + "pivot": [0, 1.62167, -1.16171], + "rotation": [90, 0, 0], + "cubes": [ + { + "origin": [-0.4375, 0.89764, -2.1875], + "size": [0.875, 0.3, 1.075], + "uv": { + "north": {"uv": [7, 9], "uv_size": [0, 0]}, + "east": {"uv": [6, 9], "uv_size": [1, 0]}, + "south": {"uv": [8, 9], "uv_size": [0, 0]}, + "west": {"uv": [7, 9], "uv_size": [1, 0]}, + "up": {"uv": [7, 8], "uv_size": [0, 1]}, + "down": {"uv": [7, 9], "uv_size": [0, -1]} + } + }, + { + "origin": [-0.45, 1.2, -2.25], + "size": [0.9, 0.85, 1.35], + "uv": { + "north": {"uv": [12, 14], "uv_size": [0, 0]}, + "east": {"uv": [11, 14], "uv_size": [1, 0]}, + "south": {"uv": [13, 14], "uv_size": [0, 0]}, + "west": {"uv": [12, 14], "uv_size": [1, 0]}, + "up": {"uv": [12, 13], "uv_size": [0, 1]}, + "down": {"uv": [12, 14], "uv_size": [0, -1]} + } + }, + { + "origin": [-0.45, 1.2, -0.9], + "size": [0.9, 0.85, 0.3], + "uv": { + "north": {"uv": [13, 14], "uv_size": [0, 0]}, + "east": {"uv": [13, 14], "uv_size": [0, 0]}, + "south": {"uv": [13, 14], "uv_size": [0, 0]}, + "west": {"uv": [13, 14], "uv_size": [0, 0]}, + "up": {"uv": [13, 14], "uv_size": [0, 0]}, + "down": {"uv": [13, 14], "uv_size": [0, 0]} + } + }, + { + "origin": [-0.45, 1.2, -0.6], + "size": [0.9, 0.35, 0.3], + "uv": { + "north": {"uv": [12, 15], "uv_size": [0, 0]}, + "east": {"uv": [12, 15], "uv_size": [0, 0]}, + "south": {"uv": [12, 15], "uv_size": [0, 0]}, + "west": {"uv": [12, 15], "uv_size": [0, 0]}, + "up": {"uv": [12, 15], "uv_size": [0, 0]}, + "down": {"uv": [12, 15], "uv_size": [0, 0]} + } + }, + { + "origin": [-0.45, 1.55, -0.6], + "size": [0.9, 0.3, 0.2], + "uv": { + "north": {"uv": [11, 13], "uv_size": [1, 1]}, + "east": {"uv": [11, 13], "uv_size": [1, 1]}, + "south": {"uv": [11, 13], "uv_size": [1, 1]}, + "west": {"uv": [11, 13], "uv_size": [1, 1]}, + "up": {"uv": [12, 14], "uv_size": [-1, -1]}, + "down": {"uv": [12, 14], "uv_size": [-1, -1]} + } + }, + { + "origin": [-0.45, 1.07737, -2.06648], + "size": [0.9, 0.93906, 0.35078], + "pivot": [1, 0.67737, -2.46648], + "rotation": [22.5, 0, 0], + "uv": { + "north": {"uv": [12, 14], "uv_size": [0, 0]}, + "east": {"uv": [12, 14], "uv_size": [0, 0]}, + "south": {"uv": [12, 14], "uv_size": [0, 0]}, + "west": {"uv": [12, 14], "uv_size": [0, 0]}, + "up": {"uv": [12, 14], "uv_size": [0, 0]}, + "down": {"uv": [12, 14], "uv_size": [0, 0]} + } + }, + { + "origin": [-0.5, 2.05, -2.75], + "size": [1, 0.2, 2.2], + "uv": { + "north": {"uv": [11, 15], "uv_size": [1, 0]}, + "east": {"uv": [9, 15], "uv_size": [2, 1]}, + "south": {"uv": [14, 15], "uv_size": [1, 0]}, + "west": {"uv": [12, 15], "uv_size": [2, 0]}, + "up": {"uv": [11, 13], "uv_size": [1, 2]}, + "down": {"uv": [12, 15], "uv_size": [1, -2]} + } + }, + { + "origin": [-0.5, 0.61466, -0.54406], + "size": [1, 1, 0.2], + "pivot": [1, 1.41466, -2.04406], + "rotation": [22.5, 0, 0], + "uv": { + "north": {"uv": [12, 13], "uv_size": [1, 1]}, + "east": {"uv": [9, 15], "uv_size": [1, 1]}, + "south": {"uv": [12, 14], "uv_size": [1, 1]}, + "west": {"uv": [12, 14], "uv_size": [0, 1]}, + "up": {"uv": [10, 16], "uv_size": [1, -1]}, + "down": {"uv": [12, 14], "uv_size": [1, 0]} + } + } + ] + }, + { + "name": "bone2", + "parent": "body", + "pivot": [0, -0.40781, -27.37809], + "cubes": [ + { + "origin": [-0.5375, -1.69764, -2.1875], + "size": [1.075, 2.59528, 1.075], + "pivot": [0, -0.4, -1.65], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [11, 1], "uv_size": [1, 2]}, + "east": {"uv": [10, 1], "uv_size": [1, 2]}, + "south": {"uv": [13, 1], "uv_size": [1, 2]}, + "west": {"uv": [12, 1], "uv_size": [1, 2]}, + "up": {"uv": [11, 0], "uv_size": [1, 1]}, + "down": {"uv": [12, 1], "uv_size": [1, -1]} + } + }, + { + "origin": [-1.29764, -0.9375, -2.1875], + "size": [2.59528, 1.075, 1.075], + "pivot": [0, -0.4, -1.65], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [1, 9], "uv_size": [2, 1]}, + "east": {"uv": [0, 9], "uv_size": [1, 1]}, + "south": {"uv": [4, 9], "uv_size": [2, 1]}, + "west": {"uv": [3, 9], "uv_size": [1, 1]}, + "up": {"uv": [1, 8], "uv_size": [2, 1]}, + "down": {"uv": [3, 9], "uv_size": [2, -1]} + } + } + ] + }, + { + "name": "bone3", + "parent": "body", + "pivot": [0, -0.40781, -27.37809], + "cubes": [ + { + "origin": [-0.5375, -1.69764, -2.1875], + "size": [1.075, 2.59528, 1.075], + "uv": { + "north": {"uv": [1, 11], "uv_size": [1, 2]}, + "east": {"uv": [0, 11], "uv_size": [1, 2]}, + "south": {"uv": [3, 11], "uv_size": [1, 2]}, + "west": {"uv": [2, 11], "uv_size": [1, 2]}, + "up": {"uv": [1, 10], "uv_size": [1, 1]}, + "down": {"uv": [2, 11], "uv_size": [1, -1]} + } + }, + { + "origin": [-0.5375, -1.69764, -2.1875], + "size": [1.075, 2.59528, 1.075], + "pivot": [0, -0.4, -1.65], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [8, 10], "uv_size": [1, 2]}, + "east": {"uv": [7, 10], "uv_size": [1, 2]}, + "south": {"uv": [10, 10], "uv_size": [1, 2]}, + "west": {"uv": [9, 10], "uv_size": [1, 2]}, + "up": {"uv": [8, 9], "uv_size": [1, 1]}, + "down": {"uv": [9, 10], "uv_size": [1, -1]} + } + }, + { + "origin": [-0.5375, -0.9375, -2.94764], + "size": [1.075, 1.075, 2.59528], + "pivot": [0, -0.4, -1.65], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [7, 3], "uv_size": [1, 1]}, + "east": {"uv": [5, 3], "uv_size": [2, 1]}, + "south": {"uv": [10, 3], "uv_size": [1, 1]}, + "west": {"uv": [8, 3], "uv_size": [2, 1]}, + "up": {"uv": [7, 1], "uv_size": [1, 2]}, + "down": {"uv": [8, 3], "uv_size": [1, -2]} + } + } + ] + }, + { + "name": "bone175", + "parent": "body", + "pivot": [0, -0.40781, -27.37809], + "cubes": [ + { + "origin": [-1.29764, -0.9375, -2.1875], + "size": [2.59528, 1.075, 1.075], + "uv": { + "north": {"uv": [8, 8], "uv_size": [2, 1]}, + "east": {"uv": [7, 8], "uv_size": [1, 1]}, + "south": {"uv": [11, 8], "uv_size": [2, 1]}, + "west": {"uv": [10, 8], "uv_size": [1, 1]}, + "up": {"uv": [8, 7], "uv_size": [2, 1]}, + "down": {"uv": [10, 8], "uv_size": [2, -1]} + } + }, + { + "origin": [-1.29764, -0.9375, -2.1875], + "size": [2.59528, 1.075, 1.075], + "pivot": [0, -0.4, -1.65], + "rotation": [0, 45, 0], + "uv": { + "north": {"uv": [6, 6], "uv_size": [2, 1]}, + "east": {"uv": [5, 6], "uv_size": [1, 1]}, + "south": {"uv": [9, 6], "uv_size": [2, 1]}, + "west": {"uv": [8, 6], "uv_size": [1, 1]}, + "up": {"uv": [6, 5], "uv_size": [2, 1]}, + "down": {"uv": [8, 6], "uv_size": [2, -1]} + } + }, + { + "origin": [-0.5375, -0.9375, -2.94764], + "size": [1.075, 1.075, 2.59528], + "uv": { + "north": {"uv": [2, 6], "uv_size": [1, 1]}, + "east": {"uv": [0, 6], "uv_size": [2, 1]}, + "south": {"uv": [5, 6], "uv_size": [1, 1]}, + "west": {"uv": [3, 6], "uv_size": [2, 1]}, + "up": {"uv": [2, 4], "uv_size": [1, 2]}, + "down": {"uv": [3, 6], "uv_size": [1, -2]} + } + }, + { + "origin": [-0.5375, -0.9375, -2.94764], + "size": [1.075, 1.075, 2.59528], + "pivot": [0, -0.4, -1.65], + "rotation": [0, 45, 0], + "uv": { + "north": {"uv": [2, 2], "uv_size": [1, 1]}, + "east": {"uv": [0, 2], "uv_size": [2, 1]}, + "south": {"uv": [5, 2], "uv_size": [1, 1]}, + "west": {"uv": [3, 2], "uv_size": [2, 1]}, + "up": {"uv": [2, 0], "uv_size": [1, 2]}, + "down": {"uv": [3, 2], "uv_size": [1, -2]} + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/geo/javelin_missile.geo.json b/src/main/resources/assets/superbwarfare/geo/javelin_missile.geo.json index b21edb620..2f1eb7c9c 100644 --- a/src/main/resources/assets/superbwarfare/geo/javelin_missile.geo.json +++ b/src/main/resources/assets/superbwarfare/geo/javelin_missile.geo.json @@ -15,6 +15,113 @@ "name": "bone", "pivot": [0, 0, -0.11791] }, + { + "name": "flare", + "parent": "bone", + "pivot": [0, -0.67, 0], + "cubes": [ + { + "origin": [-23.45, -0.63, -1.05], + "size": [22.4, 0, 2.1], + "uv": { + "up": {"uv": [40, 64], "uv_size": [-36, -4]}, + "down": {"uv": [40, 64], "uv_size": [-36, -4]} + } + }, + { + "origin": [-34.65, -0.63, -1.05], + "size": [33.6, 0, 2.1], + "pivot": [0, 0, 0], + "rotation": [0, 90, 0], + "uv": { + "up": {"uv": [40, 64], "uv_size": [-36, -4]}, + "down": {"uv": [40, 64], "uv_size": [-36, -4]} + } + }, + { + "origin": [-23.45, -0.63, -1.05], + "size": [22.4, 0, 2.1], + "pivot": [0, 0, 0], + "rotation": [0, 180, 0], + "uv": { + "up": {"uv": [40, 64], "uv_size": [-36, -4]}, + "down": {"uv": [40, 64], "uv_size": [-36, -4]} + } + }, + { + "origin": [-22.4, 20.3, -1.4], + "size": [44.8, 0, 2.8], + "pivot": [0, 20.3, 0], + "rotation": [135, 0, 90], + "uv": { + "up": {"uv": [40, 64], "uv_size": [-36, -4]}, + "down": {"uv": [40, 64], "uv_size": [-36, -4]} + } + }, + { + "origin": [-22.4, 20.3, -1.4], + "size": [44.8, 0, 2.8], + "pivot": [0, 20.3, 0], + "rotation": [-135, 0, 90], + "uv": { + "up": {"uv": [40, 64], "uv_size": [-36, -4]}, + "down": {"uv": [40, 64], "uv_size": [-36, -4]} + } + }, + { + "origin": [-34.65, -0.63, -1.05], + "size": [33.6, 0, 2.1], + "pivot": [0, 0, 0], + "rotation": [0, -90, 0], + "uv": { + "up": {"uv": [40, 64], "uv_size": [-36, -4]}, + "down": {"uv": [40, 64], "uv_size": [-36, -4]} + } + }, + { + "origin": [-3.85, -0.63, -3.85], + "size": [7.7, 0, 7.7], + "pivot": [0, -0.63, 0], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [4, 60], "uv_size": [4, 4]}, + "east": {"uv": [4, 60], "uv_size": [4, 4]}, + "south": {"uv": [4, 60], "uv_size": [4, 4]}, + "west": {"uv": [4, 60], "uv_size": [4, 4]}, + "up": {"uv": [8, 64], "uv_size": [-4, -4]}, + "down": {"uv": [8, 64], "uv_size": [-4, -4]} + } + }, + { + "origin": [-3.5, 1.82, -3.5], + "size": [7, 0, 7], + "pivot": [0, 1.82, 0], + "rotation": [90, -45, 0], + "uv": { + "north": {"uv": [4, 60], "uv_size": [4, 4]}, + "east": {"uv": [4, 60], "uv_size": [4, 4]}, + "south": {"uv": [4, 60], "uv_size": [4, 4]}, + "west": {"uv": [4, 60], "uv_size": [4, 4]}, + "up": {"uv": [8, 64], "uv_size": [-4, -4]}, + "down": {"uv": [8, 64], "uv_size": [-4, -4]} + } + }, + { + "origin": [-3.5, 1.82, -3.5], + "size": [7, 0, 7], + "pivot": [0, 1.82, 0], + "rotation": [90, 45, 0], + "uv": { + "north": {"uv": [4, 60], "uv_size": [4, 4]}, + "east": {"uv": [4, 60], "uv_size": [4, 4]}, + "south": {"uv": [4, 60], "uv_size": [4, 4]}, + "west": {"uv": [4, 60], "uv_size": [4, 4]}, + "up": {"uv": [8, 64], "uv_size": [-4, -4]}, + "down": {"uv": [8, 64], "uv_size": [-4, -4]} + } + } + ] + }, { "name": "body", "parent": "bone", diff --git a/src/main/resources/assets/superbwarfare/geo/mortar_shell.geo.json b/src/main/resources/assets/superbwarfare/geo/mortar_shell.geo.json new file mode 100644 index 000000000..484832a5b --- /dev/null +++ b/src/main/resources/assets/superbwarfare/geo/mortar_shell.geo.json @@ -0,0 +1,689 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 103, + "visible_bounds_height": 102, + "visible_bounds_offset": [0, 1, 0] + }, + "bones": [ + { + "name": "bone", + "pivot": [0, 3, 0] + }, + { + "name": "shell", + "parent": "bone", + "pivot": [0, 4.49255, -0.00105], + "rotation": [-180, 0, 0], + "cubes": [ + { + "origin": [-0.40377, 4.34411, -0.19124], + "size": [0.80754, 3.14693, 1.16497], + "uv": { + "north": {"uv": [46, 24], "uv_size": [-1, 3]}, + "east": {"uv": [46, 21], "uv_size": [-1, 3]}, + "south": {"uv": [22, 45], "uv_size": [-1, 3]}, + "west": {"uv": [46, 27], "uv_size": [-1, 3]}, + "up": {"uv": [3, 51], "uv_size": [1, -1]}, + "down": {"uv": [4, 50], "uv_size": [1, 1]} + } + }, + { + "origin": [0.69683, 4.34411, -0.23246], + "size": [0.80754, 3.14693, 1.16497], + "pivot": [0.60006, 2.66391, 1.30687], + "rotation": [0, 45, 0], + "uv": { + "north": {"uv": [46, 15], "uv_size": [-1, 3]}, + "east": {"uv": [46, 12], "uv_size": [-1, 3]}, + "south": {"uv": [46, 9], "uv_size": [-1, 3]}, + "west": {"uv": [46, 18], "uv_size": [-1, 3]}, + "up": {"uv": [50, 2], "uv_size": [1, -1]}, + "down": {"uv": [2, 50], "uv_size": [1, 1]} + } + }, + { + "origin": [1.15271, 4.34411, -0.33197], + "size": [0.80754, 3.14693, 1.16497], + "pivot": [0.84861, 2.66391, 0.70682], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [46, 3], "uv_size": [-1, 3]}, + "east": {"uv": [46, 0], "uv_size": [-1, 3]}, + "south": {"uv": [45, 44], "uv_size": [-1, 3]}, + "west": {"uv": [46, 6], "uv_size": [-1, 3]}, + "up": {"uv": [50, 1], "uv_size": [1, -1]}, + "down": {"uv": [1, 50], "uv_size": [1, 1]} + } + }, + { + "origin": [0.69683, 4.34411, -0.43149], + "size": [0.80754, 3.14693, 1.16497], + "pivot": [0.60006, 2.66391, 0.10676], + "rotation": [0, 135, 0], + "uv": { + "north": {"uv": [45, 41], "uv_size": [-1, 3]}, + "east": {"uv": [45, 38], "uv_size": [-1, 3]}, + "south": {"uv": [37, 44], "uv_size": [-1, 3]}, + "west": {"uv": [44, 44], "uv_size": [-1, 3]}, + "up": {"uv": [49, 50], "uv_size": [1, -1]}, + "down": {"uv": [0, 50], "uv_size": [1, 1]} + } + }, + { + "origin": [-0.40377, 4.34411, -0.47271], + "size": [0.80754, 3.14693, 1.16497], + "pivot": [0, 2.66391, -0.14179], + "rotation": [0, -180, 0], + "uv": { + "north": {"uv": [35, 44], "uv_size": [-1, 3]}, + "east": {"uv": [34, 44], "uv_size": [-1, 3]}, + "south": {"uv": [33, 44], "uv_size": [-1, 3]}, + "west": {"uv": [36, 44], "uv_size": [-1, 3]}, + "up": {"uv": [49, 48], "uv_size": [1, -1]}, + "down": {"uv": [49, 48], "uv_size": [1, 1]} + } + }, + { + "origin": [-1.50436, 4.34411, -0.43149], + "size": [0.80754, 3.14693, 1.16497], + "pivot": [-0.60006, 2.66391, 0.10676], + "rotation": [0, -135, 0], + "uv": { + "north": {"uv": [28, 44], "uv_size": [-1, 3]}, + "east": {"uv": [27, 44], "uv_size": [-1, 3]}, + "south": {"uv": [26, 44], "uv_size": [-1, 3]}, + "west": {"uv": [29, 44], "uv_size": [-1, 3]}, + "up": {"uv": [49, 47], "uv_size": [1, -1]}, + "down": {"uv": [47, 49], "uv_size": [1, 1]} + } + }, + { + "origin": [-1.96025, 4.34411, -0.33197], + "size": [0.80754, 3.14693, 1.16497], + "pivot": [-0.84861, 2.66391, 0.70682], + "rotation": [0, -90, 0], + "uv": { + "north": {"uv": [24, 44], "uv_size": [-1, 3]}, + "east": {"uv": [21, 44], "uv_size": [-1, 3]}, + "south": {"uv": [20, 44], "uv_size": [-1, 3]}, + "west": {"uv": [25, 44], "uv_size": [-1, 3]}, + "up": {"uv": [49, 45], "uv_size": [1, -1]}, + "down": {"uv": [49, 45], "uv_size": [1, 1]} + } + }, + { + "origin": [-1.50436, 4.34411, -0.23246], + "size": [0.80754, 3.14693, 1.16497], + "pivot": [-0.60006, 2.66391, 1.30687], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [10, 44], "uv_size": [-1, 3]}, + "east": {"uv": [44, 41], "uv_size": [-1, 3]}, + "south": {"uv": [44, 38], "uv_size": [-1, 3]}, + "west": {"uv": [19, 44], "uv_size": [-1, 3]}, + "up": {"uv": [43, 50], "uv_size": [1, -1]}, + "down": {"uv": [44, 49], "uv_size": [1, 1]} + } + }, + { + "origin": [-0.3432, 3.33013, -0.16271], + "size": [0.68641, 4.67489, 0.99022], + "uv": { + "north": {"uv": [27.5, 47], "uv_size": [-0.5, 4.5]}, + "east": {"uv": [8, 35], "uv_size": [-1, 4.5]}, + "south": {"uv": [26.5, 47], "uv_size": [-0.5, 4.5]}, + "west": {"uv": [9, 35], "uv_size": [-1, 4.5]}, + "up": {"uv": [51, 38], "uv_size": [0.5, -1]}, + "down": {"uv": [51, 38], "uv_size": [0.5, 1]} + } + }, + { + "origin": [0.5923, 3.33013, -0.19774], + "size": [0.68641, 4.67489, 0.99022], + "pivot": [0.51005, 3.15196, 1.11068], + "rotation": [0, 45, 0], + "uv": { + "north": {"uv": [25.5, 47], "uv_size": [-0.5, 4.5]}, + "east": {"uv": [6, 35], "uv_size": [-1, 4.5]}, + "south": {"uv": [47.5, 24], "uv_size": [-0.5, 4.5]}, + "west": {"uv": [7, 35], "uv_size": [-1, 4.5]}, + "up": {"uv": [51, 36], "uv_size": [0.5, -1]}, + "down": {"uv": [51, 36], "uv_size": [0.5, 1]} + } + }, + { + "origin": [0.9798, 3.33013, -0.28233], + "size": [0.68641, 4.67489, 0.99022], + "pivot": [0.72132, 3.15196, 0.60064], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [24.5, 47], "uv_size": [-0.5, 4.5]}, + "east": {"uv": [35, 18], "uv_size": [-1, 4.5]}, + "south": {"uv": [23.5, 47], "uv_size": [-0.5, 4.5]}, + "west": {"uv": [35, 30], "uv_size": [-1, 4.5]}, + "up": {"uv": [51, 34], "uv_size": [0.5, -1]}, + "down": {"uv": [51, 34], "uv_size": [0.5, 1]} + } + }, + { + "origin": [0.5923, 3.33013, -0.36692], + "size": [0.68641, 4.67489, 0.99022], + "pivot": [0.51005, 3.15196, 0.09059], + "rotation": [0, 135, 0], + "uv": { + "north": {"uv": [20.5, 47], "uv_size": [-0.5, 4.5]}, + "east": {"uv": [35, 8], "uv_size": [-1, 4.5]}, + "south": {"uv": [47.5, 19], "uv_size": [-0.5, 4.5]}, + "west": {"uv": [35, 13], "uv_size": [-1, 4.5]}, + "up": {"uv": [51, 32], "uv_size": [0.5, -1]}, + "down": {"uv": [51, 32], "uv_size": [0.5, 1]} + } + }, + { + "origin": [-0.3432, 3.33013, -0.40196], + "size": [0.68641, 4.67489, 0.99022], + "pivot": [0, 3.15196, -0.12068], + "rotation": [0, -180, 0], + "uv": { + "north": {"uv": [19.5, 47], "uv_size": [-0.5, 4.5]}, + "east": {"uv": [34, 18], "uv_size": [-1, 4.5]}, + "south": {"uv": [18.5, 47], "uv_size": [-0.5, 4.5]}, + "west": {"uv": [34, 30], "uv_size": [-1, 4.5]}, + "up": {"uv": [51, 30], "uv_size": [0.5, -1]}, + "down": {"uv": [51, 30], "uv_size": [0.5, 1]} + } + }, + { + "origin": [-1.27871, 3.33013, -0.36692], + "size": [0.68641, 4.67489, 0.99022], + "pivot": [-0.51005, 3.15196, 0.09059], + "rotation": [0, -135, 0], + "uv": { + "north": {"uv": [17.5, 47], "uv_size": [-0.5, 4.5]}, + "east": {"uv": [34, 8], "uv_size": [-1, 4.5]}, + "south": {"uv": [16.5, 47], "uv_size": [-0.5, 4.5]}, + "west": {"uv": [34, 13], "uv_size": [-1, 4.5]}, + "up": {"uv": [51, 28], "uv_size": [0.5, -1]}, + "down": {"uv": [51, 28], "uv_size": [0.5, 1]} + } + }, + { + "origin": [-1.66621, 3.33013, -0.28233], + "size": [0.68641, 4.67489, 0.99022], + "pivot": [-0.72132, 3.15196, 0.60064], + "rotation": [0, -90, 0], + "uv": { + "north": {"uv": [15.5, 47], "uv_size": [-0.5, 4.5]}, + "east": {"uv": [33, 30], "uv_size": [-1, 4.5]}, + "south": {"uv": [47.5, 14], "uv_size": [-0.5, 4.5]}, + "west": {"uv": [32, 32], "uv_size": [-1, 4.5]}, + "up": {"uv": [51, 26], "uv_size": [0.5, -1]}, + "down": {"uv": [51, 26], "uv_size": [0.5, 1]} + } + }, + { + "origin": [-1.27871, 3.33013, -0.19774], + "size": [0.68641, 4.67489, 0.99022], + "pivot": [-0.51005, 3.15196, 1.11068], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [14.5, 47], "uv_size": [-0.5, 4.5]}, + "east": {"uv": [30, 32], "uv_size": [-1, 4.5]}, + "south": {"uv": [13.5, 47], "uv_size": [-0.5, 4.5]}, + "west": {"uv": [31, 32], "uv_size": [-1, 4.5]}, + "up": {"uv": [51, 24], "uv_size": [0.5, -1]}, + "down": {"uv": [51, 24], "uv_size": [0.5, 1]} + } + }, + { + "origin": [-0.29172, 2.43075, -0.13846], + "size": [0.58345, 5.87366, 0.84169], + "uv": { + "north": {"uv": [47.5, 0], "uv_size": [-0.5, 6]}, + "east": {"uv": [33, 14], "uv_size": [-1, 6]}, + "south": {"uv": [46.5, 42], "uv_size": [-0.5, 6]}, + "west": {"uv": [33, 20], "uv_size": [-1, 6]}, + "up": {"uv": [51, 51], "uv_size": [0.5, -1]}, + "down": {"uv": [51, 51], "uv_size": [0.5, 1]} + } + }, + { + "origin": [0.50346, 2.43075, -0.16824], + "size": [0.58345, 5.87366, 0.84169], + "pivot": [0.43354, 3.5293, 0.94392], + "rotation": [0, 45, 0], + "uv": { + "north": {"uv": [46.5, 36], "uv_size": [-0.5, 6]}, + "east": {"uv": [32, 26], "uv_size": [-1, 6]}, + "south": {"uv": [31.5, 46], "uv_size": [-0.5, 6]}, + "west": {"uv": [33, 8], "uv_size": [-1, 6]}, + "up": {"uv": [51, 50], "uv_size": [0.5, -1]}, + "down": {"uv": [50, 51], "uv_size": [0.5, 1]} + } + }, + { + "origin": [0.83283, 2.43075, -0.24014], + "size": [0.58345, 5.87366, 0.84169], + "pivot": [0.61312, 3.5293, 0.51038], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [46.5, 30], "uv_size": [-0.5, 6]}, + "east": {"uv": [32, 14], "uv_size": [-1, 6]}, + "south": {"uv": [30.5, 46], "uv_size": [-0.5, 6]}, + "west": {"uv": [32, 20], "uv_size": [-1, 6]}, + "up": {"uv": [51, 48], "uv_size": [0.5, -1]}, + "down": {"uv": [51, 48], "uv_size": [0.5, 1]} + } + }, + { + "origin": [0.50346, 2.43075, -0.31204], + "size": [0.58345, 5.87366, 0.84169], + "pivot": [0.43354, 3.5293, 0.07684], + "rotation": [0, 135, 0], + "uv": { + "north": {"uv": [29.5, 46], "uv_size": [-0.5, 6]}, + "east": {"uv": [31, 26], "uv_size": [-1, 6]}, + "south": {"uv": [46.5, 24], "uv_size": [-0.5, 6]}, + "west": {"uv": [32, 8], "uv_size": [-1, 6]}, + "up": {"uv": [51, 46], "uv_size": [0.5, -1]}, + "down": {"uv": [51, 46], "uv_size": [0.5, 1]} + } + }, + { + "origin": [-0.29172, 2.43075, -0.34182], + "size": [0.58345, 5.87366, 0.84169], + "pivot": [0, 3.5293, -0.10273], + "rotation": [0, -180, 0], + "uv": { + "north": {"uv": [22.5, 46], "uv_size": [-0.5, 6]}, + "east": {"uv": [31, 20], "uv_size": [-1, 6]}, + "south": {"uv": [46.5, 18], "uv_size": [-0.5, 6]}, + "west": {"uv": [22, 30], "uv_size": [-1, 6]}, + "up": {"uv": [51, 44], "uv_size": [0.5, -1]}, + "down": {"uv": [51, 44], "uv_size": [0.5, 1]} + } + }, + { + "origin": [-1.0869, 2.43075, -0.31204], + "size": [0.58345, 5.87366, 0.84169], + "pivot": [-0.43354, 3.5293, 0.07684], + "rotation": [0, -135, 0], + "uv": { + "north": {"uv": [46.5, 12], "uv_size": [-0.5, 6]}, + "east": {"uv": [31, 8], "uv_size": [-1, 6]}, + "south": {"uv": [46.5, 6], "uv_size": [-0.5, 6]}, + "west": {"uv": [31, 14], "uv_size": [-1, 6]}, + "up": {"uv": [42, 52], "uv_size": [0.5, -1]}, + "down": {"uv": [51, 42], "uv_size": [0.5, 1]} + } + }, + { + "origin": [-1.41628, 2.43075, -0.24014], + "size": [0.58345, 5.87366, 0.84169], + "pivot": [-0.61312, 3.5293, 0.51038], + "rotation": [0, -90, 0], + "uv": { + "north": {"uv": [46.5, 0], "uv_size": [-0.5, 6]}, + "east": {"uv": [30, 20], "uv_size": [-1, 6]}, + "south": {"uv": [45.5, 44], "uv_size": [-0.5, 6]}, + "west": {"uv": [30, 26], "uv_size": [-1, 6]}, + "up": {"uv": [51, 41], "uv_size": [0.5, -1]}, + "down": {"uv": [51, 41], "uv_size": [0.5, 1]} + } + }, + { + "origin": [-1.0869, 2.43075, -0.16824], + "size": [0.58345, 5.87366, 0.84169], + "pivot": [-0.43354, 3.5293, 0.94392], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [42.5, 45], "uv_size": [-0.5, 6]}, + "east": {"uv": [30, 8], "uv_size": [-1, 6]}, + "south": {"uv": [45.5, 38], "uv_size": [-0.5, 6]}, + "west": {"uv": [30, 14], "uv_size": [-1, 6]}, + "up": {"uv": [39, 52], "uv_size": [0.5, -1]}, + "down": {"uv": [51, 39], "uv_size": [0.5, 1]} + } + }, + { + "origin": [-0.23046, 1.29748, -0.1096], + "size": [0.46092, 7.39019, 0.66493], + "uv": { + "north": {"uv": [42.5, 8], "uv_size": [-0.5, 7.5]}, + "east": {"uv": [4.5, 42], "uv_size": [-0.5, 7.5]}, + "south": {"uv": [3.5, 42], "uv_size": [-0.5, 7.5]}, + "west": {"uv": [42.5, 16], "uv_size": [-0.5, 7.5]}, + "up": {"uv": [18, 52.5], "uv_size": [0.5, -0.5]}, + "down": {"uv": [52, 18], "uv_size": [0.5, 0.5]} + } + }, + { + "origin": [0.39773, 1.29748, -0.13313], + "size": [0.46092, 7.39019, 0.66493], + "pivot": [0.3425, 3.91534, 0.74548], + "rotation": [0, 45, 0], + "uv": { + "north": {"uv": [1.5, 42], "uv_size": [-0.5, 7.5]}, + "east": {"uv": [42.5, 0], "uv_size": [-0.5, 7.5]}, + "south": {"uv": [0.5, 42], "uv_size": [-0.5, 7.5]}, + "west": {"uv": [2.5, 42], "uv_size": [-0.5, 7.5]}, + "up": {"uv": [17, 52.5], "uv_size": [0.5, -0.5]}, + "down": {"uv": [52, 17], "uv_size": [0.5, 0.5]} + } + }, + { + "origin": [0.65794, 1.29748, -0.18993], + "size": [0.46092, 7.39019, 0.66493], + "pivot": [0.48436, 3.91534, 0.40298], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [39.5, 41], "uv_size": [-0.5, 7.5]}, + "east": {"uv": [38.5, 41], "uv_size": [-0.5, 7.5]}, + "south": {"uv": [41.5, 32], "uv_size": [-0.5, 7.5]}, + "west": {"uv": [41.5, 40], "uv_size": [-0.5, 7.5]}, + "up": {"uv": [16, 52.5], "uv_size": [0.5, -0.5]}, + "down": {"uv": [52, 16], "uv_size": [0.5, 0.5]} + } + }, + { + "origin": [0.39773, 1.29748, -0.24673], + "size": [0.46092, 7.39019, 0.66493], + "pivot": [0.3425, 3.91534, 0.06049], + "rotation": [0, 135, 0], + "uv": { + "north": {"uv": [41.5, 16], "uv_size": [-0.5, 7.5]}, + "east": {"uv": [41.5, 8], "uv_size": [-0.5, 7.5]}, + "south": {"uv": [41.5, 0], "uv_size": [-0.5, 7.5]}, + "west": {"uv": [41.5, 24], "uv_size": [-0.5, 7.5]}, + "up": {"uv": [15, 52.5], "uv_size": [0.5, -0.5]}, + "down": {"uv": [52, 15], "uv_size": [0.5, 0.5]} + } + }, + { + "origin": [-0.23046, 1.29748, -0.27026], + "size": [0.46092, 7.39019, 0.66493], + "pivot": [0, 3.91534, -0.08138], + "rotation": [0, -180, 0], + "uv": { + "north": {"uv": [37.5, 40], "uv_size": [-0.5, 7.5]}, + "east": {"uv": [40.5, 32], "uv_size": [-0.5, 7.5]}, + "south": {"uv": [40.5, 24], "uv_size": [-0.5, 7.5]}, + "west": {"uv": [40.5, 40], "uv_size": [-0.5, 7.5]}, + "up": {"uv": [14, 52.5], "uv_size": [0.5, -0.5]}, + "down": {"uv": [52, 14], "uv_size": [0.5, 0.5]} + } + }, + { + "origin": [-0.85865, 1.29748, -0.24673], + "size": [0.46092, 7.39019, 0.66493], + "pivot": [-0.3425, 3.91534, 0.06049], + "rotation": [0, -135, 0], + "uv": { + "north": {"uv": [40.5, 8], "uv_size": [-0.5, 7.5]}, + "east": {"uv": [8.5, 40], "uv_size": [-0.5, 7.5]}, + "south": {"uv": [7.5, 40], "uv_size": [-0.5, 7.5]}, + "west": {"uv": [40.5, 16], "uv_size": [-0.5, 7.5]}, + "up": {"uv": [13, 52.5], "uv_size": [0.5, -0.5]}, + "down": {"uv": [52, 13], "uv_size": [0.5, 0.5]} + } + }, + { + "origin": [-1.11886, 1.29748, -0.18993], + "size": [0.46092, 7.39019, 0.66493], + "pivot": [-0.48436, 3.91534, 0.40298], + "rotation": [0, -90, 0], + "uv": { + "north": {"uv": [5.5, 40], "uv_size": [-0.5, 7.5]}, + "east": {"uv": [40.5, 0], "uv_size": [-0.5, 7.5]}, + "south": {"uv": [39.5, 33], "uv_size": [-0.5, 7.5]}, + "west": {"uv": [6.5, 40], "uv_size": [-0.5, 7.5]}, + "up": {"uv": [12, 52.5], "uv_size": [0.5, -0.5]}, + "down": {"uv": [52, 12], "uv_size": [0.5, 0.5]} + } + }, + { + "origin": [-0.85865, 1.29748, -0.13313], + "size": [0.46092, 7.39019, 0.66493], + "pivot": [-0.3425, 3.91534, 0.74548], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [39.5, 8], "uv_size": [-0.5, 7.5]}, + "east": {"uv": [39.5, 0], "uv_size": [-0.5, 7.5]}, + "south": {"uv": [38.5, 33], "uv_size": [-0.5, 7.5]}, + "west": {"uv": [39.5, 16], "uv_size": [-0.5, 7.5]}, + "up": {"uv": [11, 52.5], "uv_size": [0.5, -0.5]}, + "down": {"uv": [52, 11], "uv_size": [0.5, 0.5]} + } + }, + { + "origin": [-0.16568, 0.64242, -0.07909], + "size": [0.33136, 8.45031, 0.47802], + "uv": { + "north": {"uv": [17.5, 38], "uv_size": [-0.5, 8.5]}, + "east": {"uv": [16.5, 38], "uv_size": [-0.5, 8.5]}, + "south": {"uv": [15.5, 38], "uv_size": [-0.5, 8.5]}, + "west": {"uv": [38.5, 22], "uv_size": [-0.5, 8.5]}, + "up": {"uv": [26, 52.5], "uv_size": [0.5, -0.5]}, + "down": {"uv": [52, 26], "uv_size": [0.5, 0.5]} + } + }, + { + "origin": [0.28593, 0.64242, -0.096], + "size": [0.33136, 8.45031, 0.47802], + "pivot": [0.24622, 4.2744, 0.53563], + "rotation": [0, 45, 0], + "uv": { + "north": {"uv": [38.5, 13], "uv_size": [-0.5, 8.5]}, + "east": {"uv": [13.5, 38], "uv_size": [-0.5, 8.5]}, + "south": {"uv": [12.5, 38], "uv_size": [-0.5, 8.5]}, + "west": {"uv": [14.5, 38], "uv_size": [-0.5, 8.5]}, + "up": {"uv": [25, 52.5], "uv_size": [0.5, -0.5]}, + "down": {"uv": [52, 25], "uv_size": [0.5, 0.5]} + } + }, + { + "origin": [0.47299, 0.64242, -0.13684], + "size": [0.33136, 8.45031, 0.47802], + "pivot": [0.34821, 4.2744, 0.28941], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [10.5, 38], "uv_size": [-0.5, 8.5]}, + "east": {"uv": [38.5, 4], "uv_size": [-0.5, 8.5]}, + "south": {"uv": [37.5, 31], "uv_size": [-0.5, 8.5]}, + "west": {"uv": [11.5, 38], "uv_size": [-0.5, 8.5]}, + "up": {"uv": [24, 52.5], "uv_size": [0.5, -0.5]}, + "down": {"uv": [52, 24], "uv_size": [0.5, 0.5]} + } + }, + { + "origin": [0.28593, 0.64242, -0.17767], + "size": [0.33136, 8.45031, 0.47802], + "pivot": [0.24622, 4.2744, 0.04319], + "rotation": [0, 135, 0], + "uv": { + "north": {"uv": [30.5, 37], "uv_size": [-0.5, 8.5]}, + "east": {"uv": [29.5, 37], "uv_size": [-0.5, 8.5]}, + "south": {"uv": [37.5, 22], "uv_size": [-0.5, 8.5]}, + "west": {"uv": [31.5, 37], "uv_size": [-0.5, 8.5]}, + "up": {"uv": [23, 52.5], "uv_size": [0.5, -0.5]}, + "down": {"uv": [52, 23], "uv_size": [0.5, 0.5]} + } + }, + { + "origin": [-0.16568, 0.64242, -0.19459], + "size": [0.33136, 8.45031, 0.47802], + "pivot": [0, 4.2744, -0.0588], + "rotation": [0, -180, 0], + "uv": { + "north": {"uv": [37.5, 13], "uv_size": [-0.5, 8.5]}, + "east": {"uv": [37.5, 4], "uv_size": [-0.5, 8.5]}, + "south": {"uv": [36.5, 35], "uv_size": [-0.5, 8.5]}, + "west": {"uv": [22.5, 37], "uv_size": [-0.5, 8.5]}, + "up": {"uv": [22, 52.5], "uv_size": [0.5, -0.5]}, + "down": {"uv": [52, 22], "uv_size": [0.5, 0.5]} + } + }, + { + "origin": [-0.61729, 0.64242, -0.17767], + "size": [0.33136, 8.45031, 0.47802], + "pivot": [-0.24622, 4.2744, 0.04319], + "rotation": [0, -135, 0], + "uv": { + "north": {"uv": [21.5, 36], "uv_size": [-0.5, 8.5]}, + "east": {"uv": [36.5, 17], "uv_size": [-0.5, 8.5]}, + "south": {"uv": [36.5, 8], "uv_size": [-0.5, 8.5]}, + "west": {"uv": [36.5, 26], "uv_size": [-0.5, 8.5]}, + "up": {"uv": [21, 52.5], "uv_size": [0.5, -0.5]}, + "down": {"uv": [52, 21], "uv_size": [0.5, 0.5]} + } + }, + { + "origin": [-0.80435, 0.64242, -0.13684], + "size": [0.33136, 8.45031, 0.47802], + "pivot": [-0.34821, 4.2744, 0.28941], + "rotation": [0, -90, 0], + "uv": { + "north": {"uv": [34.5, 35], "uv_size": [-0.5, 8.5]}, + "east": {"uv": [33.5, 35], "uv_size": [-0.5, 8.5]}, + "south": {"uv": [32.5, 35], "uv_size": [-0.5, 8.5]}, + "west": {"uv": [35.5, 35], "uv_size": [-0.5, 8.5]}, + "up": {"uv": [20, 52.5], "uv_size": [0.5, -0.5]}, + "down": {"uv": [52, 20], "uv_size": [0.5, 0.5]} + } + }, + { + "origin": [-0.61729, 0.64242, -0.096], + "size": [0.33136, 8.45031, 0.47802], + "pivot": [-0.24622, 4.2744, 0.53563], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [35.5, 17], "uv_size": [-0.5, 8.5]}, + "east": {"uv": [9.5, 35], "uv_size": [-0.5, 8.5]}, + "south": {"uv": [35.5, 8], "uv_size": [-0.5, 8.5]}, + "west": {"uv": [35.5, 26], "uv_size": [-0.5, 8.5]}, + "up": {"uv": [19, 52.5], "uv_size": [0.5, -0.5]}, + "down": {"uv": [52, 19], "uv_size": [0.5, 0.5]} + } + }, + { + "origin": [-0.61729, -0.35758, -1.096], + "size": [0.33136, 1, 1.47802], + "pivot": [-0.24622, 4.2744, 0.53563], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [52.5, 7], "uv_size": [-0.5, 1]}, + "east": {"uv": [50.5, 33], "uv_size": [-1.5, 1]}, + "south": {"uv": [7.5, 52], "uv_size": [-0.5, 1]}, + "west": {"uv": [35.5, 49], "uv_size": [-1.5, 1]}, + "up": {"uv": [50, 49.5], "uv_size": [0.5, -1.5]}, + "down": {"uv": [49, 50], "uv_size": [0.5, 1.5]} + } + }, + { + "origin": [-0.80435, -0.35758, -1.13684], + "size": [0.33136, 1, 1.47802], + "pivot": [-0.34821, 4.2744, 0.28941], + "rotation": [0, -90, 0], + "uv": { + "north": {"uv": [52.5, 6], "uv_size": [-0.5, 1]}, + "east": {"uv": [33.5, 49], "uv_size": [-1.5, 1]}, + "south": {"uv": [6.5, 52], "uv_size": [-0.5, 1]}, + "west": {"uv": [50.5, 32], "uv_size": [-1.5, 1]}, + "up": {"uv": [47, 51.5], "uv_size": [0.5, -1.5]}, + "down": {"uv": [48, 50], "uv_size": [0.5, 1.5]} + } + }, + { + "origin": [-0.61729, -0.35758, -1.17767], + "size": [0.33136, 1, 1.47802], + "pivot": [-0.24622, 4.2744, 0.04319], + "rotation": [0, -135, 0], + "uv": { + "north": {"uv": [52.5, 5], "uv_size": [-0.5, 1]}, + "east": {"uv": [50.5, 30], "uv_size": [-1.5, 1]}, + "south": {"uv": [5.5, 52], "uv_size": [-0.5, 1]}, + "west": {"uv": [50.5, 31], "uv_size": [-1.5, 1]}, + "up": {"uv": [46, 51.5], "uv_size": [0.5, -1.5]}, + "down": {"uv": [50, 46], "uv_size": [0.5, 1.5]} + } + }, + { + "origin": [-0.16568, -0.35758, -1.19459], + "size": [0.33136, 1, 1.47802], + "pivot": [0, 4.2744, -0.0588], + "rotation": [0, -180, 0], + "uv": { + "north": {"uv": [52.5, 4], "uv_size": [-0.5, 1]}, + "east": {"uv": [50.5, 28], "uv_size": [-1.5, 1]}, + "south": {"uv": [4.5, 52], "uv_size": [-0.5, 1]}, + "west": {"uv": [50.5, 29], "uv_size": [-1.5, 1]}, + "up": {"uv": [50, 45.5], "uv_size": [0.5, -1.5]}, + "down": {"uv": [45, 50], "uv_size": [0.5, 1.5]} + } + }, + { + "origin": [0.28593, -0.35758, -1.17767], + "size": [0.33136, 1, 1.47802], + "pivot": [0.24622, 4.2744, 0.04319], + "rotation": [0, 135, 0], + "uv": { + "north": {"uv": [52.5, 3], "uv_size": [-0.5, 1]}, + "east": {"uv": [50.5, 26], "uv_size": [-1.5, 1]}, + "south": {"uv": [3.5, 52], "uv_size": [-0.5, 1]}, + "west": {"uv": [50.5, 27], "uv_size": [-1.5, 1]}, + "up": {"uv": [43, 51.5], "uv_size": [0.5, -1.5]}, + "down": {"uv": [44, 50], "uv_size": [0.5, 1.5]} + } + }, + { + "origin": [0.47299, -0.35758, -1.13684], + "size": [0.33136, 1, 1.47802], + "pivot": [0.34821, 4.2744, 0.28941], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [52.5, 2], "uv_size": [-0.5, 1]}, + "east": {"uv": [50.5, 24], "uv_size": [-1.5, 1]}, + "south": {"uv": [2.5, 52], "uv_size": [-0.5, 1]}, + "west": {"uv": [50.5, 25], "uv_size": [-1.5, 1]}, + "up": {"uv": [41, 51.5], "uv_size": [0.5, -1.5]}, + "down": {"uv": [50, 42], "uv_size": [0.5, 1.5]} + } + }, + { + "origin": [0.28593, -0.35758, -1.096], + "size": [0.33136, 1, 1.47802], + "pivot": [0.24622, 4.2744, 0.53563], + "rotation": [0, 45, 0], + "uv": { + "north": {"uv": [52.5, 1], "uv_size": [-0.5, 1]}, + "east": {"uv": [50.5, 22], "uv_size": [-1.5, 1]}, + "south": {"uv": [1.5, 52], "uv_size": [-0.5, 1]}, + "west": {"uv": [50.5, 23], "uv_size": [-1.5, 1]}, + "up": {"uv": [40, 51.5], "uv_size": [0.5, -1.5]}, + "down": {"uv": [50, 40], "uv_size": [0.5, 1.5]} + } + }, + { + "origin": [-0.16568, -0.35758, -1.07909], + "size": [0.33136, 1, 1.47802], + "uv": { + "north": {"uv": [52.5, 0], "uv_size": [-0.5, 1]}, + "east": {"uv": [50.5, 20], "uv_size": [-1.5, 1]}, + "south": {"uv": [0.5, 52], "uv_size": [-0.5, 1]}, + "west": {"uv": [50.5, 21], "uv_size": [-1.5, 1]}, + "up": {"uv": [38, 51.5], "uv_size": [0.5, -1.5]}, + "down": {"uv": [50, 38], "uv_size": [0.5, 1.5]} + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/geo/rpg_rocket.geo.json b/src/main/resources/assets/superbwarfare/geo/rpg_rocket.geo.json index e25174bcf..e57a2cb0c 100644 --- a/src/main/resources/assets/superbwarfare/geo/rpg_rocket.geo.json +++ b/src/main/resources/assets/superbwarfare/geo/rpg_rocket.geo.json @@ -15,6 +15,113 @@ "name": "bone", "pivot": [0, 19.5, 0] }, + { + "name": "flare", + "parent": "bone", + "pivot": [0, -0.47857, 0], + "cubes": [ + { + "origin": [-16.75, -0.45, -0.75], + "size": [16, 0, 1.5], + "uv": { + "up": {"uv": [20, 32], "uv_size": [-16, -2]}, + "down": {"uv": [20, 32], "uv_size": [-16, -2]} + } + }, + { + "origin": [-24.75, -0.45, -0.75], + "size": [24, 0, 1.5], + "pivot": [0, 0, 0], + "rotation": [0, 90, 0], + "uv": { + "up": {"uv": [20, 32], "uv_size": [-16, -2]}, + "down": {"uv": [20, 32], "uv_size": [-16, -2]} + } + }, + { + "origin": [-16.75, -0.45, -0.75], + "size": [16, 0, 1.5], + "pivot": [0, 0, 0], + "rotation": [0, 180, 0], + "uv": { + "up": {"uv": [20, 32], "uv_size": [-16, -2]}, + "down": {"uv": [20, 32], "uv_size": [-16, -2]} + } + }, + { + "origin": [-16, 14.5, -1], + "size": [32, 0, 2], + "pivot": [0, 14.5, 0], + "rotation": [135, 0, 90], + "uv": { + "up": {"uv": [20, 32], "uv_size": [-16, -2]}, + "down": {"uv": [20, 32], "uv_size": [-16, -2]} + } + }, + { + "origin": [-16, 14.5, -1], + "size": [32, 0, 2], + "pivot": [0, 14.5, 0], + "rotation": [-135, 0, 90], + "uv": { + "up": {"uv": [20, 32], "uv_size": [-16, -2]}, + "down": {"uv": [20, 32], "uv_size": [-16, -2]} + } + }, + { + "origin": [-24.75, -0.45, -0.75], + "size": [24, 0, 1.5], + "pivot": [0, 0, 0], + "rotation": [0, -90, 0], + "uv": { + "up": {"uv": [20, 32], "uv_size": [-16, -2]}, + "down": {"uv": [20, 32], "uv_size": [-16, -2]} + } + }, + { + "origin": [-2.75, -0.45, -2.75], + "size": [5.5, 0, 5.5], + "pivot": [0, -0.45, 0], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [2, 30], "uv_size": [2, 2]}, + "east": {"uv": [2, 30], "uv_size": [2, 2]}, + "south": {"uv": [2, 30], "uv_size": [2, 2]}, + "west": {"uv": [2, 30], "uv_size": [2, 2]}, + "up": {"uv": [4, 32], "uv_size": [-2, -2]}, + "down": {"uv": [4, 32], "uv_size": [-2, -2]} + } + }, + { + "origin": [-2.5, 1.3, -2.5], + "size": [5, 0, 5], + "pivot": [0, 1.3, 0], + "rotation": [90, -45, 0], + "uv": { + "north": {"uv": [2, 30], "uv_size": [2, 2]}, + "east": {"uv": [2, 30], "uv_size": [2, 2]}, + "south": {"uv": [2, 30], "uv_size": [2, 2]}, + "west": {"uv": [2, 30], "uv_size": [2, 2]}, + "up": {"uv": [4, 32], "uv_size": [-2, -2]}, + "down": {"uv": [4, 32], "uv_size": [-2, -2]} + } + }, + { + "origin": [-2.5, 1.3, -2.5], + "size": [5, 0, 5], + "pivot": [0, 1.3, 0], + "rotation": [90, 45, 0], + "uv": { + "north": {"uv": [2, 30], "uv_size": [2, 2]}, + "east": {"uv": [2, 30], "uv_size": [2, 2]}, + "south": {"uv": [2, 30], "uv_size": [2, 2]}, + "west": {"uv": [2, 30], "uv_size": [2, 2]}, + "up": {"uv": [4, 32], "uv_size": [-2, -2]}, + "down": {"uv": [4, 32], "uv_size": [-2, -2]} + } + } + ] + }, { "name": "body", "parent": "bone", @@ -243,8 +350,6 @@ { "origin": [-0.24018, -19.185, -16.12402], "size": [0.53362, 1.28869, 25.62752], - "pivot": [0.02663, -18.54066, 9.18974], - "rotation": [0, 0, 0], "uv": { "north": {"uv": [13, 29], "uv_size": [1, 1]}, "south": {"uv": [29, 13], "uv_size": [1, 1]}, @@ -298,8 +403,6 @@ { "origin": [-0.60307, -20.15708, -11.65478], "size": [1.34712, 3.25329, 8.54567], - "pivot": [0.0705, -18.53043, 4.5988], - "rotation": [0, 0, 0], "uv": { "north": {"uv": [16, 25], "uv_size": [1, 3]}, "south": {"uv": [17, 25], "uv_size": [1, 3]}, @@ -353,8 +456,6 @@ { "origin": [-0.33442, -19.43744, -21.21069], "size": [0.74488, 1.79888, 5.72526], - "pivot": [0.03802, -18.538, -11.22341], - "rotation": [0, 0, 0], "uv": { "north": {"uv": [2, 26], "uv_size": [1, 2]}, "south": {"uv": [26, 2], "uv_size": [1, 2]}, @@ -408,8 +509,6 @@ { "origin": [-0.24018, -19.185, 17.37598], "size": [0.53362, 1.28869, 0.62752], - "pivot": [0.02663, -18.54066, 27.68974], - "rotation": [0, 0, 0], "uv": { "north": {"uv": [29, 27], "uv_size": [1, 1]}, "south": {"uv": [28, 29], "uv_size": [1, 1]}, @@ -463,8 +562,6 @@ { "origin": [-0.29088, -19.30743, 1.69012], "size": [0.63501, 1.53354, 1.23175], - "pivot": [0.02663, -18.54066, 10.48849], - "rotation": [0, 0, 0], "uv": { "north": {"uv": [21, 25], "uv_size": [1, 2]}, "south": {"uv": [25, 21], "uv_size": [1, 2]}, @@ -518,8 +615,6 @@ { "origin": [-0.07743, -18.79195, 9.47598], "size": [0.20811, 0.50259, 8], - "pivot": [0.02663, -18.54066, 17.59835], - "rotation": [0, 0, 0], "uv": { "north": {"uv": [29, 21], "uv_size": [1, 1]}, "south": {"uv": [22, 29], "uv_size": [1, 1]}, diff --git a/src/main/resources/assets/superbwarfare/geo/taser_rod.geo.json b/src/main/resources/assets/superbwarfare/geo/taser_rod.geo.json new file mode 100644 index 000000000..1a45aed75 --- /dev/null +++ b/src/main/resources/assets/superbwarfare/geo/taser_rod.geo.json @@ -0,0 +1,79 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 16, + "texture_height": 16, + "visible_bounds_width": 2, + "visible_bounds_height": 1.5, + "visible_bounds_offset": [0, 0.25, 0] + }, + "bones": [ + { + "name": "bone", + "pivot": [0, 0, 0], + "cubes": [ + { + "origin": [-0.5, 1.25, -1.25], + "size": [1, 1, 1], + "pivot": [0, 0, 0], + "rotation": [0, -90, 0], + "uv": { + "north": {"uv": [1, 0], "uv_size": [1, 1]}, + "east": {"uv": [1, 0], "uv_size": [1, 1]}, + "south": {"uv": [1, 0], "uv_size": [1, 1]}, + "west": {"uv": [1, 0], "uv_size": [1, 1]}, + "up": {"uv": [1, 0], "uv_size": [1, 1]}, + "down": {"uv": [1, 1], "uv_size": [1, -1]} + } + }, + { + "origin": [-0.25, -1, -1], + "size": [0.5, 2.25, 0.5], + "pivot": [0, 0, 0], + "rotation": [0, -90, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [1, 3]}, + "east": {"uv": [0, 0], "uv_size": [1, 3]}, + "south": {"uv": [0, 0], "uv_size": [1, 3]}, + "west": {"uv": [0, 0], "uv_size": [1, 3]}, + "up": {"uv": [0, 0], "uv_size": [1, 3]}, + "down": {"uv": [0, 3], "uv_size": [1, -3]} + } + }, + { + "origin": [-0.5, 1.25, 0.25], + "size": [1, 1, 1], + "pivot": [0, 0, 0], + "rotation": [0, -90, 0], + "uv": { + "north": {"uv": [1, 0], "uv_size": [1, 1]}, + "east": {"uv": [1, 0], "uv_size": [1, 1]}, + "south": {"uv": [1, 0], "uv_size": [1, 1]}, + "west": {"uv": [1, 0], "uv_size": [1, 1]}, + "up": {"uv": [1, 0], "uv_size": [1, 1]}, + "down": {"uv": [1, 1], "uv_size": [1, -1]} + } + }, + { + "origin": [-0.25, -1, 0.5], + "size": [0.5, 2.25, 0.5], + "pivot": [0, 0, 0], + "rotation": [0, -90, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [1, 3]}, + "east": {"uv": [0, 0], "uv_size": [1, 3]}, + "south": {"uv": [0, 0], "uv_size": [1, 3]}, + "west": {"uv": [0, 0], "uv_size": [1, 3]}, + "up": {"uv": [0, 0], "uv_size": [1, 3]}, + "down": {"uv": [0, 3], "uv_size": [1, -3]} + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/textures/entity/hand_grenade.png b/src/main/resources/assets/superbwarfare/textures/entity/hand_grenade.png index b1903ae6f43918df54a5ea3714c1b7c929d187dc..d2e5f4593b87a857a0dffdba775e82cead7a6c3d 100644 GIT binary patch delta 145 zcmV;C0B--30<8g%B!2;OQb$4nuFf3k0001INkls?7M$Km_3Z$B)AA?CfM@ zU|?WiB1SU<0|UcnrjHDtnLc8O6Kw!4KtBVJ!vN-g`nupV(?^V$psx#PW&jI}f$TqQ z35K8nFikLnumu=4z=W)URLyV~;L0dN0{{RnBploc7%8ta zjUX0^)s}XWN^ju>Jc1BxW3`Y(SCYJH*_prm**^kseLRy$1!zXD&v~=sa$XB5rv4<+ z=Y4Px0NcIAiBn$^@l9IrtF{jgVz=*eX1QXd0ycWN&2fylw>UZVm&}gu!XiCC zfTf(K)COBIHT)9;$iI&&dYW3KT8vxiQYZyjTPE!=X yqN0O5KVvlQf#-Rd-Y^WsxG+T?K*v}`sQCauicGd!m@3c!0000VzG#8MiyP%`LNj~dm-~Vu4Us7U+w8ad| n2Qz$6POeVpIdkt_T`}`JBYovhtIdA^ox$Mg>gTe~DWM4f#!5>< literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/superbwarfare/textures/entity/taser_rod.png b/src/main/resources/assets/superbwarfare/textures/entity/taser_rod.png index 9f29319ac26165556d69c48164ae696423d6a77b..b426ce8261406dfc0eabbf97aa94dd6ab51e9148 100644 GIT binary patch delta 79 zcmZo<%$=a($yglZ?!>U}oXkrG1_pIc7sn8b-sBtm>;KoQsxJM{lftCN#>UoG{r#O` iP|5)f3D(640t^gmV%Z(L#1cVT7(8A5T-G@yGywoOnHp>W delta 99 zcmd08WSpQ9>*49*7-G?zoYKIgs=D+)kH>?1d#ihRTo}}nL>@Btyf9nL?4-Bw4l553 z{QmyFefOb@7bj}$Kg{cJ&8JUMq&o2duLSF1CI$wve**j;zH`Vi0D-5gpUXO@geCxg C=_ODA