From 148e80bd2a7d14afce5e6a92190df79079b8401e Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Fri, 1 Nov 2024 16:50:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=8A=A8=E7=94=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/model/item/AK12ItemModel.java | 34 ++++++++++++------ .../client/model/item/AK47ItemModel.java | 30 +++++++++++----- .../client/model/item/Hk416ItemModel.java | 33 +++++++++++------ .../client/model/item/M4ItemModel.java | 36 ++++++++++++------- .../event/ClientEventHandler.java | 6 ++-- .../assets/superbwarfare/geo/ak.geo.json | 26 ++++++++++++-- .../assets/superbwarfare/geo/ak12.geo.json | 26 ++++++++++++-- .../assets/superbwarfare/geo/hk416.geo.json | 26 ++++++++++++-- .../assets/superbwarfare/geo/m4.geo.json | 26 ++++++++++++-- 9 files changed, 186 insertions(+), 57 deletions(-) diff --git a/src/main/java/net/mcreator/superbwarfare/client/model/item/AK12ItemModel.java b/src/main/java/net/mcreator/superbwarfare/client/model/item/AK12ItemModel.java index 9cf12badd..ba729d293 100644 --- a/src/main/java/net/mcreator/superbwarfare/client/model/item/AK12ItemModel.java +++ b/src/main/java/net/mcreator/superbwarfare/client/model/item/AK12ItemModel.java @@ -41,7 +41,6 @@ public class AK12ItemModel extends GeoModel { @Override public void setCustomAnimations(AK12Item animatable, long instanceId, AnimationState animationState) { CoreGeoBone gun = getAnimationProcessor().getBone("bone"); - CoreGeoBone shen = getAnimationProcessor().getBone("shen"); CoreGeoBone scope1 = getAnimationProcessor().getBone("Scope1"); CoreGeoBone scope2 = getAnimationProcessor().getBone("Scope2"); CoreGeoBone scope3 = getAnimationProcessor().getBone("Scope3"); @@ -54,6 +53,7 @@ public class AK12ItemModel extends GeoModel { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return; + float times = 0.6f * (float) Math.min(Minecraft.getInstance().getDeltaFrameTime(), 1.6); double zt = ClientEventHandler.zoomTime; double zp = ClientEventHandler.zoomPos; double zpz = ClientEventHandler.zoomPosZ; @@ -67,12 +67,11 @@ public class AK12ItemModel extends GeoModel { double turnRotX = ClientEventHandler.turnRot[0]; double turnRotY = ClientEventHandler.turnRot[1]; double turnRotZ = ClientEventHandler.turnRot[2]; - double fpz = ClientEventHandler.firePosZ; + double fpz = ClientEventHandler.firePosZ * 13 * times;; double fp = ClientEventHandler.firePos; double fr = ClientEventHandler.fireRot; int type = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.SCOPE); - float times = 0.6f * (float) Math.min(Minecraft.getInstance().getDeltaFrameTime(), 1.6); float posY = switch (type) { case 0 -> 0.781f; @@ -110,22 +109,35 @@ public class AK12ItemModel extends GeoModel { stack.getOrCreateTag().putBoolean("HoloHidden", !(gun.getPosX() > 1.85)); - fireRotY = (float) Mth.lerp(0.35f * times, fireRotY, 0.26f * ClientEventHandler.recoilHorizon * fpz); - fireRotZ = (float) Mth.lerp(0.35f * times, fireRotZ, (0.4f + 0.5 * fr) * ClientEventHandler.recoilHorizon); + CoreGeoBone shen; + if (zt < 0.5) { + shen = getAnimationProcessor().getBone("fireRootNormal"); + } else { + shen = switch (type) { + case 0 -> getAnimationProcessor().getBone("fireRoot0"); + case 1 -> getAnimationProcessor().getBone("fireRoot1"); + case 2 -> getAnimationProcessor().getBone("fireRoot2"); + case 3 -> getAnimationProcessor().getBone("fireRoot3"); + default -> getAnimationProcessor().getBone("fireRootNormal"); + }; + } - shen.setPosX((float) (0.95f * ClientEventHandler.recoilHorizon * fpz * fp)); + fireRotY = (float) Mth.lerp(0.5f * times, fireRotY, 0.2f * ClientEventHandler.recoilHorizon * fpz); + fireRotZ = (float) Mth.lerp(0.7f * times, fireRotZ, (0.4f + 0.5 * fr) * ClientEventHandler.recoilHorizon); + + shen.setPosX((float) (-1.65f * ClientEventHandler.recoilHorizon * fpz * fp)); shen.setPosY((float) (0.15f * fp + 0.18f * fr)); shen.setPosZ((float) (0.275 * fp + 0.34f * fr + 0.65 * fpz)); - shen.setRotX((float) (0.01f * fp + 0.05f * fr + 0.01f * fpz)); + shen.setRotX((float) (0.01f * fp + 0.08f * fr + 0.01f * fpz)); shen.setRotY(fireRotY); shen.setRotZ(fireRotZ); - shen.setPosX((float) (shen.getPosX() * (1 - 0.5 * zt))); + shen.setPosX((float) (shen.getPosX() * (1 - 0.1 * zt))); shen.setPosY((float) (shen.getPosY() * (-1 + 0.8 * zt))); - shen.setPosZ((float) (shen.getPosZ() * (1 - 0.3 * zt))); + shen.setPosZ((float) (shen.getPosZ() * (1 - 0.6 * zt))); shen.setRotX((float) (shen.getRotX() * (1 - 0.9 * zt))); - shen.setRotY((float) (shen.getRotY() * (1 - 0.9 * zt))); - shen.setRotZ((float) (shen.getRotZ() * (1 - 0.9 * zt))); + shen.setRotY((float) (shen.getRotY() * (1 - 0.75 * zt))); + shen.setRotZ((float) (shen.getRotZ() * (1 - 0.4 * zt))); shuan.setPosZ(2.4f * (float) fp); diff --git a/src/main/java/net/mcreator/superbwarfare/client/model/item/AK47ItemModel.java b/src/main/java/net/mcreator/superbwarfare/client/model/item/AK47ItemModel.java index 2670a8d01..643bfbdb1 100644 --- a/src/main/java/net/mcreator/superbwarfare/client/model/item/AK47ItemModel.java +++ b/src/main/java/net/mcreator/superbwarfare/client/model/item/AK47ItemModel.java @@ -37,7 +37,6 @@ public class AK47ItemModel extends GeoModel { @Override public void setCustomAnimations(AK47Item animatable, long instanceId, AnimationState animationState) { CoreGeoBone gun = getAnimationProcessor().getBone("bone"); - CoreGeoBone shen = getAnimationProcessor().getBone("shen"); CoreGeoBone scope = getAnimationProcessor().getBone("Scope1"); CoreGeoBone scope2 = getAnimationProcessor().getBone("Scope2"); CoreGeoBone scope3 = getAnimationProcessor().getBone("Scope3"); @@ -49,6 +48,7 @@ public class AK47ItemModel extends GeoModel { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return; + float times = 0.6f * (float) Math.min(Minecraft.getInstance().getDeltaFrameTime(), 1.6); double zt = ClientEventHandler.zoomTime; double zp = ClientEventHandler.zoomPos; double zpz = ClientEventHandler.zoomPosZ; @@ -62,12 +62,11 @@ public class AK47ItemModel extends GeoModel { double turnRotX = ClientEventHandler.turnRot[0]; double turnRotY = ClientEventHandler.turnRot[1]; double turnRotZ = ClientEventHandler.turnRot[2]; - double fpz = ClientEventHandler.firePosZ; + double fpz = ClientEventHandler.firePosZ * 13 * times; double fp = ClientEventHandler.firePos; double fr = ClientEventHandler.fireRot; int type = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.SCOPE); - float times = 0.6f * (float) Math.min(Minecraft.getInstance().getDeltaFrameTime(), 1.6); float posYAlt = switch (type) { case 2 -> 0.45f; @@ -111,22 +110,35 @@ public class AK47ItemModel extends GeoModel { stack.getOrCreateTag().putBoolean("HoloHidden", !(gun.getPosX() > 1.8)); - fireRotY = (float) Mth.lerp(0.3f * times, fireRotY, 0.3f * ClientEventHandler.recoilHorizon * fpz); - fireRotZ = (float) Mth.lerp(0.3f * times, fireRotZ, (0.5f + 0.7 * fr) * ClientEventHandler.recoilHorizon); + CoreGeoBone shen; + if (zt < 0.5) { + shen = getAnimationProcessor().getBone("fireRootNormal"); + } else { + shen = switch (type) { + case 0 -> getAnimationProcessor().getBone("fireRoot0"); + case 1 -> getAnimationProcessor().getBone("fireRoot1"); + case 2 -> getAnimationProcessor().getBone("fireRoot2"); + case 3 -> getAnimationProcessor().getBone("fireRoot3"); + default -> getAnimationProcessor().getBone("fireRootNormal"); + }; + } - shen.setPosX((float) (0.95f * ClientEventHandler.recoilHorizon * fpz * fp)); + fireRotY = (float) Mth.lerp(0.5f * times, fireRotY, 0.2f * ClientEventHandler.recoilHorizon * fpz); + fireRotZ = (float) Mth.lerp(0.7f * times, fireRotZ, (0.4f + 0.5 * fr) * ClientEventHandler.recoilHorizon); + + shen.setPosX((float) (-1.65f * ClientEventHandler.recoilHorizon * fpz * fp)); shen.setPosY((float) (0.15f * fp + 0.18f * fr)); shen.setPosZ((float) (0.275 * fp + 0.34f * fr + 0.65 * fpz)); shen.setRotX((float) (0.01f * fp + 0.08f * fr + 0.01f * fpz)); shen.setRotY(fireRotY); shen.setRotZ(fireRotZ); - shen.setPosX((float) (shen.getPosX() * (1 - 0.5 * zt))); + shen.setPosX((float) (shen.getPosX() * (1 - 0.1 * zt))); shen.setPosY((float) (shen.getPosY() * (-1 + 0.8 * zt))); shen.setPosZ((float) (shen.getPosZ() * (1 - 0.6 * zt))); shen.setRotX((float) (shen.getRotX() * (1 - 0.9 * zt))); - shen.setRotY((float) (shen.getRotY() * (1 - 0.8 * zt))); - shen.setRotZ((float) (shen.getRotZ() * (1 - 0.8 * zt))); + shen.setRotY((float) (shen.getRotY() * (1 - 0.75 * zt))); + shen.setRotZ((float) (shen.getRotZ() * (1 - 0.4 * zt))); shuan.setPosZ(2.4f * (float) fp); diff --git a/src/main/java/net/mcreator/superbwarfare/client/model/item/Hk416ItemModel.java b/src/main/java/net/mcreator/superbwarfare/client/model/item/Hk416ItemModel.java index 43f50bc7d..e9b06cb47 100644 --- a/src/main/java/net/mcreator/superbwarfare/client/model/item/Hk416ItemModel.java +++ b/src/main/java/net/mcreator/superbwarfare/client/model/item/Hk416ItemModel.java @@ -39,7 +39,6 @@ public class Hk416ItemModel extends GeoModel { @Override public void setCustomAnimations(Hk416Item animatable, long instanceId, AnimationState animationState) { CoreGeoBone gun = getAnimationProcessor().getBone("bone"); - CoreGeoBone shen = getAnimationProcessor().getBone("shen"); CoreGeoBone scope = getAnimationProcessor().getBone("Scope1"); CoreGeoBone scope2 = getAnimationProcessor().getBone("Scope2"); CoreGeoBone scope3 = getAnimationProcessor().getBone("Scope3"); @@ -52,6 +51,8 @@ public class Hk416ItemModel extends GeoModel { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return; + float times = 0.6f * (float) Math.min(Minecraft.getInstance().getDeltaFrameTime(), 1.6); + double zt = ClientEventHandler.zoomTime; double zp = ClientEventHandler.zoomPos; double zpz = ClientEventHandler.zoomPosZ; @@ -65,12 +66,11 @@ public class Hk416ItemModel extends GeoModel { double turnRotX = ClientEventHandler.turnRot[0]; double turnRotY = ClientEventHandler.turnRot[1]; double turnRotZ = ClientEventHandler.turnRot[2]; - double fpz = ClientEventHandler.firePosZ; + double fpz = ClientEventHandler.firePosZ * 17 * times; double fp = ClientEventHandler.firePos; double fr = ClientEventHandler.fireRot; int type = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.SCOPE); - float times = 0.6f * (float) Math.min(Minecraft.getInstance().getDeltaFrameTime(), 1.6); float posY = switch (type) { case 0 -> 1.04f; @@ -102,22 +102,35 @@ public class Hk416ItemModel extends GeoModel { stack.getOrCreateTag().putBoolean("HoloHidden", !(gun.getPosX() > 3.1)); - fireRotY = (float) Mth.lerp(0.4f * times, fireRotY, 0.2f * ClientEventHandler.recoilHorizon * fpz); - fireRotZ = (float) Mth.lerp(0.4f * times, fireRotZ, (0.3f + 0.4 * fr) * ClientEventHandler.recoilHorizon); + CoreGeoBone shen; + if (zt < 0.5) { + shen = getAnimationProcessor().getBone("fireRootNormal"); + } else { + shen = switch (type) { + case 0 -> getAnimationProcessor().getBone("fireRoot0"); + case 1 -> getAnimationProcessor().getBone("fireRoot1"); + case 2 -> getAnimationProcessor().getBone("fireRoot2"); + case 3 -> getAnimationProcessor().getBone("fireRoot3"); + default -> getAnimationProcessor().getBone("fireRootNormal"); + }; + } - shen.setPosX((float) (0.95f * ClientEventHandler.recoilHorizon * fpz * fp)); + fireRotY = (float) Mth.lerp(0.5f * times, fireRotY, 0.2f * ClientEventHandler.recoilHorizon * fpz); + fireRotZ = (float) Mth.lerp(0.9f * times, fireRotZ, (0.2f + 0.3 * fr) * ClientEventHandler.recoilHorizon); + + shen.setPosX((float) (-3.45f * ClientEventHandler.recoilHorizon * fpz * fp)); shen.setPosY((float) (0.15f * fp + 0.18f * fr)); shen.setPosZ((float) (0.275 * fp + 0.34f * fr + 0.65 * fpz)); shen.setRotX((float) (0.01f * fp + 0.05f * fr + 0.01f * fpz)); shen.setRotY(fireRotY); shen.setRotZ(fireRotZ); - shen.setPosX((float) (shen.getPosX() * (1 - 0.5 * zt))); - shen.setPosY((float) (shen.getPosY() * (-1 + 0.4 * zt))); + shen.setPosX((float) (shen.getPosX() * (1 - 0.1 * zt))); + shen.setPosY((float) (shen.getPosY() * (-1 + 0.8 * zt))); shen.setPosZ((float) (shen.getPosZ() * (1 - 0.6 * zt))); shen.setRotX((float) (shen.getRotX() * (1 - 0.9 * zt))); - shen.setRotY((float) (shen.getRotY() * (1 - 0.9 * zt))); - shen.setRotZ((float) (shen.getRotZ() * (1 - 0.9 * zt))); + shen.setRotY((float) (shen.getRotY() * (1 - 0.75 * zt))); + shen.setRotZ((float) (shen.getRotZ() * (1 - 0.4 * zt))); cross1.setPosY(-0.75f * (float) fpz); cross2.setPosY(-0.7f * (float) fpz); diff --git a/src/main/java/net/mcreator/superbwarfare/client/model/item/M4ItemModel.java b/src/main/java/net/mcreator/superbwarfare/client/model/item/M4ItemModel.java index cb3e04a99..e1d54732a 100644 --- a/src/main/java/net/mcreator/superbwarfare/client/model/item/M4ItemModel.java +++ b/src/main/java/net/mcreator/superbwarfare/client/model/item/M4ItemModel.java @@ -44,7 +44,6 @@ public class M4ItemModel extends GeoModel { @Override public void setCustomAnimations(M4Item animatable, long instanceId, AnimationState animationState) { CoreGeoBone gun = getAnimationProcessor().getBone("bone"); - CoreGeoBone shen = getAnimationProcessor().getBone("shen"); CoreGeoBone scope = getAnimationProcessor().getBone("Scope1"); CoreGeoBone scope2 = getAnimationProcessor().getBone("Scope2"); CoreGeoBone scope3 = getAnimationProcessor().getBone("Scope3"); @@ -61,6 +60,7 @@ public class M4ItemModel extends GeoModel { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return; + float times = 0.6f * (float) Math.min(Minecraft.getInstance().getDeltaFrameTime(), 1.6); double zt = ClientEventHandler.zoomTime; double zp = ClientEventHandler.zoomPos; double zpz = ClientEventHandler.zoomPosZ; @@ -74,12 +74,11 @@ public class M4ItemModel extends GeoModel { double turnRotX = ClientEventHandler.turnRot[0]; double turnRotY = ClientEventHandler.turnRot[1]; double turnRotZ = ClientEventHandler.turnRot[2]; - double fpz = ClientEventHandler.firePosZ; + double fpz = ClientEventHandler.firePosZ * 17 * times; double fp = ClientEventHandler.firePos; double fr = ClientEventHandler.fireRot; int type = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.SCOPE); - float times = 0.6f * (float) Math.min(Minecraft.getInstance().getDeltaFrameTime(), 1.6); posYAlt = Mth.lerp(times, posYAlt, stack.getOrCreateTag().getBoolean("ScopeAlt")? -0.6875f : 0.5625f); scaleZAlt = Mth.lerp(times, scaleZAlt, stack.getOrCreateTag().getBoolean("ScopeAlt")? 0.4f : 0.88f); @@ -125,27 +124,40 @@ public class M4ItemModel extends GeoModel { if (type == 3 && zt > 0.5) { lh.setPosY((float) (-zt * 4)); } + CoreGeoBone shen; + if (zt < 0.5) { + shen = getAnimationProcessor().getBone("fireRootNormal"); + } else { + shen = switch (type) { + case 0 -> getAnimationProcessor().getBone("fireRoot0"); + case 1 -> getAnimationProcessor().getBone("fireRoot1"); + case 2 -> getAnimationProcessor().getBone("fireRoot2"); + case 3 -> getAnimationProcessor().getBone("fireRoot3"); + default -> getAnimationProcessor().getBone("fireRootNormal"); + }; + } - fireRotY = (float) Mth.lerp(0.38f * times, fireRotY, 0.25f * ClientEventHandler.recoilHorizon * fpz); - fireRotZ = (float) Mth.lerp(0.38f * times, fireRotZ, (0.3f + 0.5 * fr) * ClientEventHandler.recoilHorizon); + fireRotY = (float) Mth.lerp(0.5f * times, fireRotY, 0.2f * ClientEventHandler.recoilHorizon * fpz); + fireRotZ = (float) Mth.lerp(0.9f * times, fireRotZ, (0.2f + 0.3 * fr) * ClientEventHandler.recoilHorizon); - shen.setPosX((float) (1.35f * ClientEventHandler.recoilHorizon * fpz * fp)); + shen.setPosX((float) (-3.45f * ClientEventHandler.recoilHorizon * fpz * fp)); shen.setPosY((float) (0.15f * fp + 0.18f * fr)); - shen.setPosZ((float) (0.345 * fp + 0.44f * fr + 0.75 * fpz)); + shen.setPosZ((float) (0.275 * fp + 0.34f * fr + 0.65 * fpz)); shen.setRotX((float) (0.01f * fp + 0.05f * fr + 0.01f * fpz)); shen.setRotY(fireRotY); shen.setRotZ(fireRotZ); - cross1.setPosY(-0.75f * (float) fpz); + + cross1.setPosY(-0.25f * (float) fpz); cross2.setPosY(-0.1f * (float) fpz); crossAlt.setPosY(-0.2f * (float) fpz); cross3.setPosY(-0.2f * (float) fpz); - shen.setPosX((float) (shen.getPosX() * (1 - 0.8 * zt))); + shen.setPosX((float) (shen.getPosX() * (1 - 0.1 * zt))); shen.setPosY((float) (shen.getPosY() * (-1 + 0.8 * zt))); shen.setPosZ((float) (shen.getPosZ() * (1 - 0.6 * zt))); - shen.setRotX((float) (shen.getRotX() * (1 - (type == 3 ? 0.96 : type == 1 ? 0.4 : 0.9) * zt))); - shen.setRotY((float) (shen.getRotY() * (1 - (type == 3 ? 0.98 : 0.9) * zt))); - shen.setRotZ((float) (shen.getRotZ() * (1 - 0.9 * zt))); + shen.setRotX((float) (shen.getRotX() * (1 - (type == 3 ? 0.96 : type == 1 ? 0.8 : 0.9) * zt))); + shen.setRotY((float) (shen.getRotY() * (1 - (type == 3 ? 0.95 : 0.9) * zt))); + shen.setRotZ((float) (shen.getRotZ() * (1 - 0.4 * zt))); shen.setPosX(0.2f * (float) (ClientEventHandler.recoilHorizon * (0.5 + 0.4 * ClientEventHandler.fireSpread))); diff --git a/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java b/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java index 74d9edb7e..159f14106 100644 --- a/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java @@ -509,7 +509,7 @@ public class ClientEventHandler { } private static void handleWeaponFire(ViewportEvent.ComputeCameraAngles event, LivingEntity entity) { - float times = 2f * Math.min(Minecraft.getInstance().getDeltaFrameTime(), 0.8f); + float times = 2f * Math.min(Minecraft.getInstance().getDeltaFrameTime(), 0.48f); float yaw = event.getYaw(); float pitch = event.getPitch(); float roll = event.getRoll(); @@ -520,8 +520,8 @@ public class ClientEventHandler { firePosTimer = 0.001; fireRotTimer = 0.001; fireRecoilTime -= 7 * times; - fireSpread += 0.1; - firePosZ += 0.5 * firePosZ + 0.15; + fireSpread += 0.1 * times; + firePosZ += (0.8 * firePosZ + 0.25) * (4 * Math.random() + 0.85) * times; recoilTime = 0.01; } diff --git a/src/main/resources/assets/superbwarfare/geo/ak.geo.json b/src/main/resources/assets/superbwarfare/geo/ak.geo.json index 3d7814004..f306bb12b 100644 --- a/src/main/resources/assets/superbwarfare/geo/ak.geo.json +++ b/src/main/resources/assets/superbwarfare/geo/ak.geo.json @@ -25,13 +25,33 @@ "pivot": [0, 0, 0] }, { - "name": "shen", + "name": "fireRootNormal", "parent": "bone", - "pivot": [0.5, 3, 2] + "pivot": [0.5, 0, 3] + }, + { + "name": "fireRoot0", + "parent": "fireRootNormal", + "pivot": [0.5, 3.55, 2] + }, + { + "name": "fireRoot1", + "parent": "fireRoot0", + "pivot": [0.5, 4.42656, 2] + }, + { + "name": "fireRoot2", + "parent": "fireRoot1", + "pivot": [0.59609, 4.52187, 2] + }, + { + "name": "fireRoot3", + "parent": "fireRoot2", + "pivot": [0.5, 4.58828, 2] }, { "name": "0", - "parent": "shen", + "parent": "fireRoot3", "pivot": [0, 0, 0] }, { diff --git a/src/main/resources/assets/superbwarfare/geo/ak12.geo.json b/src/main/resources/assets/superbwarfare/geo/ak12.geo.json index 28d99ee9b..189b9a392 100644 --- a/src/main/resources/assets/superbwarfare/geo/ak12.geo.json +++ b/src/main/resources/assets/superbwarfare/geo/ak12.geo.json @@ -25,13 +25,33 @@ "pivot": [0, 0, 0] }, { - "name": "shen", + "name": "fireRootNormal", "parent": "bone", - "pivot": [0.5, 3.5, 3] + "pivot": [0.5, 0, 3] + }, + { + "name": "fireRoot0", + "parent": "fireRootNormal", + "pivot": [0.5, 3.86953, 2] + }, + { + "name": "fireRoot1", + "parent": "fireRoot0", + "pivot": [0.5, 4.20703, 2] + }, + { + "name": "fireRoot2", + "parent": "fireRoot1", + "pivot": [0.5, 4.70625, 2] + }, + { + "name": "fireRoot3", + "parent": "fireRoot2", + "pivot": [0.5, 4.6625, 2] }, { "name": "0", - "parent": "shen", + "parent": "fireRoot3", "pivot": [0, 0, 0] }, { diff --git a/src/main/resources/assets/superbwarfare/geo/hk416.geo.json b/src/main/resources/assets/superbwarfare/geo/hk416.geo.json index d3836c538..9fdd9740f 100644 --- a/src/main/resources/assets/superbwarfare/geo/hk416.geo.json +++ b/src/main/resources/assets/superbwarfare/geo/hk416.geo.json @@ -21,13 +21,33 @@ "pivot": [0, 0, 0] }, { - "name": "shen", + "name": "fireRootNormal", "parent": "bone", - "pivot": [0, 3.4, 3] + "pivot": [0.5, 0, 3] + }, + { + "name": "fireRoot0", + "parent": "fireRootNormal", + "pivot": [0, 4.25, 2] + }, + { + "name": "fireRoot1", + "parent": "fireRoot0", + "pivot": [0, 4.78437, 2] + }, + { + "name": "fireRoot2", + "parent": "fireRoot1", + "pivot": [0, 5.02187, 2] + }, + { + "name": "fireRoot3", + "parent": "fireRoot2", + "pivot": [0, 4.78828, 2] }, { "name": "0", - "parent": "shen", + "parent": "fireRoot3", "pivot": [0, 0, 0] }, { diff --git a/src/main/resources/assets/superbwarfare/geo/m4.geo.json b/src/main/resources/assets/superbwarfare/geo/m4.geo.json index 1891c6941..9edce42df 100644 --- a/src/main/resources/assets/superbwarfare/geo/m4.geo.json +++ b/src/main/resources/assets/superbwarfare/geo/m4.geo.json @@ -25,13 +25,33 @@ "pivot": [0, 0, 0] }, { - "name": "shen", + "name": "fireRootNormal", "parent": "bone", - "pivot": [0, 3, 3.25] + "pivot": [0.5, 0, 3] + }, + { + "name": "fireRoot0", + "parent": "fireRootNormal", + "pivot": [0, 4.64609, 2] + }, + { + "name": "fireRoot1", + "parent": "fireRoot0", + "pivot": [0, 5.07578, 2] + }, + { + "name": "fireRoot2", + "parent": "fireRoot1", + "pivot": [0, 4.92187, 2] + }, + { + "name": "fireRoot3", + "parent": "fireRoot2", + "pivot": [0, 4.63125, 2] }, { "name": "0", - "parent": "shen", + "parent": "fireRoot3", "pivot": [0, 0, 0] }, {