From ad0a3f6e035db8e791324b99fb223a97a375b817 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Fri, 11 Oct 2024 20:11:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=8A=9B=E5=A3=B3=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/model/item/AK47ItemModel.java | 4 +- .../client/model/item/Aa12ItemModel.java | 6 +- .../client/model/item/M4ItemModel.java | 6 +- .../event/ClientEventHandler.java | 87 ++++--------------- 4 files changed, 26 insertions(+), 77 deletions(-) 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 b62031872..87a5e52fb 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 @@ -84,7 +84,7 @@ public class AK47ItemModel extends GeoModel { CoreGeoBone root = getAnimationProcessor().getBone("root"); - root.setPosX((float) (movePosX + 20 * ClientEventHandler.drawTime + 9.3f * mph)); + root.setPosX((float) (movePosX + 20 * ClientEventHandler.drawTime + 9.3f * mph)); root.setPosY((float) (swayY + movePosY - 40 * ClientEventHandler.drawTime - 2f * vY)); root.setRotX((float) (swayX - Mth.DEG_TO_RAD * 60 * ClientEventHandler.drawTime + Mth.DEG_TO_RAD * turnRotX - 0.15f * vY)); root.setRotY((float) (0.2f * movePosX + Mth.DEG_TO_RAD * 300 * ClientEventHandler.drawTime + Mth.DEG_TO_RAD * turnRotY)); @@ -115,6 +115,6 @@ public class AK47ItemModel extends GeoModel { CoreGeoBone shell4 = getAnimationProcessor().getBone("shell4"); CoreGeoBone shell5 = getAnimationProcessor().getBone("shell5"); - ClientEventHandler.handleShell(shell1, shell2, shell3, shell4, shell5, 1f, 1f); + ClientEventHandler.handleShells(1f, 1f, shell1, shell2, shell3, shell4, shell5); } } diff --git a/src/main/java/net/mcreator/superbwarfare/client/model/item/Aa12ItemModel.java b/src/main/java/net/mcreator/superbwarfare/client/model/item/Aa12ItemModel.java index c9bf2b0d9..3600bbce5 100644 --- a/src/main/java/net/mcreator/superbwarfare/client/model/item/Aa12ItemModel.java +++ b/src/main/java/net/mcreator/superbwarfare/client/model/item/Aa12ItemModel.java @@ -76,7 +76,7 @@ public class Aa12ItemModel extends GeoModel { shen.setPosX(0.2f * (float) (ClientEventHandler.recoilHorizon * (0.5 + 0.4 * ClientEventHandler.fireSpread))); CoreGeoBone root = getAnimationProcessor().getBone("root"); - root.setPosX((float) (movePosX + 20 * ClientEventHandler.drawTime + 9.3f * mph)); + root.setPosX((float) (movePosX + 20 * ClientEventHandler.drawTime + 9.3f * mph)); root.setPosY((float) (swayY + movePosY - 40 * ClientEventHandler.drawTime - 2f * vY)); root.setRotX((float) (swayX - Mth.DEG_TO_RAD * 60 * ClientEventHandler.drawTime + Mth.DEG_TO_RAD * turnRotX - 0.15f * vY)); root.setRotY((float) (0.2f * movePosX + Mth.DEG_TO_RAD * 300 * ClientEventHandler.drawTime + Mth.DEG_TO_RAD * turnRotY)); @@ -98,7 +98,7 @@ public class Aa12ItemModel extends GeoModel { camera.setRotY(numR * camera.getRotY()); camera.setRotZ(numR * camera.getRotZ()); } - ClientEventHandler.shake(Mth.RAD_TO_DEG * camera.getRotX(),Mth.RAD_TO_DEG * camera.getRotY(), Mth.RAD_TO_DEG * camera.getRotZ()); + ClientEventHandler.shake(Mth.RAD_TO_DEG * camera.getRotX(), Mth.RAD_TO_DEG * camera.getRotY(), Mth.RAD_TO_DEG * camera.getRotZ()); CoreGeoBone shell1 = getAnimationProcessor().getBone("shell1"); CoreGeoBone shell2 = getAnimationProcessor().getBone("shell2"); @@ -106,6 +106,6 @@ public class Aa12ItemModel extends GeoModel { CoreGeoBone shell4 = getAnimationProcessor().getBone("shell4"); CoreGeoBone shell5 = getAnimationProcessor().getBone("shell5"); - ClientEventHandler.handleShell(shell1, shell2, shell3, shell4, shell5,1f, 0.6f); + ClientEventHandler.handleShells(1f, 0.6f, shell1, shell2, shell3, shell4, shell5); } } 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 05565e40d..5a662ea7f 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 @@ -80,7 +80,7 @@ public class M4ItemModel extends GeoModel { shen.setPosX(0.2f * (float) (ClientEventHandler.recoilHorizon * (0.5 + 0.4 * ClientEventHandler.fireSpread))); CoreGeoBone root = getAnimationProcessor().getBone("root"); - root.setPosX((float) (movePosX + 20 * ClientEventHandler.drawTime + 9.3f * mph)); + root.setPosX((float) (movePosX + 20 * ClientEventHandler.drawTime + 9.3f * mph)); root.setPosY((float) (swayY + movePosY - 40 * ClientEventHandler.drawTime - 2f * vY)); root.setRotX((float) (swayX - Mth.DEG_TO_RAD * 60 * ClientEventHandler.drawTime + Mth.DEG_TO_RAD * turnRotX - 0.15f * vY)); root.setRotY((float) (0.2f * movePosX + Mth.DEG_TO_RAD * 300 * ClientEventHandler.drawTime + Mth.DEG_TO_RAD * turnRotY)); @@ -103,7 +103,7 @@ public class M4ItemModel extends GeoModel { camera.setRotY(numR * camera.getRotY()); camera.setRotZ(numR * camera.getRotZ()); } - ClientEventHandler.shake(Mth.RAD_TO_DEG * camera.getRotX(),Mth.RAD_TO_DEG * camera.getRotY(), Mth.RAD_TO_DEG * camera.getRotZ()); + ClientEventHandler.shake(Mth.RAD_TO_DEG * camera.getRotX(), Mth.RAD_TO_DEG * camera.getRotY(), Mth.RAD_TO_DEG * camera.getRotZ()); CoreGeoBone shell1 = getAnimationProcessor().getBone("shell1"); CoreGeoBone shell2 = getAnimationProcessor().getBone("shell2"); @@ -111,6 +111,6 @@ public class M4ItemModel extends GeoModel { CoreGeoBone shell4 = getAnimationProcessor().getBone("shell4"); CoreGeoBone shell5 = getAnimationProcessor().getBone("shell5"); - ClientEventHandler.handleShell(shell1, shell2, shell3, shell4, shell5,1f, 1f); + ClientEventHandler.handleShells(1f, 1f, shell1, shell2, shell3, shell4, shell5); } } diff --git a/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java b/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java index 96e6ebe30..d0b92b8da 100644 --- a/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java @@ -77,7 +77,6 @@ public class ClientEventHandler { public static double firePosZ = 0; public static double fireRot = 0; - public static double recoilTime = 0; public static double recoilHorizon = 0; @@ -313,7 +312,7 @@ public class ClientEventHandler { handleWeaponZoom(living); handlePlayerBreath(living); handleWeaponFire(event, living); - handleWeaponShell(living); + handleWeaponShell(); handleGunRecoil(); handleShockCamera(event, living); handleBowPullAnimation(living); @@ -551,7 +550,7 @@ public class ClientEventHandler { if (0 < fireRotTimer && fireRotTimer < 1.732) { fireRot = 1 / 6.3 * (fireRotTimer - 0.5) * Math.sin(6.3 * (fireRotTimer - 0.5)) * (3 - Math.pow(fireRotTimer, 2)); - if (recoilY> 0) { + if (recoilY > 0) { event.setYaw((float) (yaw - 1.3 * amplitude * (1 / 6.3 * (fireRotTimer - 0.5)) * Math.sin(6.3 * (fireRotTimer - 0.5)) * (3 - Math.pow(fireRotTimer, 2)) + 1 * Mth.clamp(0.3 - fireRotTimer, 0, 1) * (2 * Math.random() - 1))); event.setPitch((float) (pitch + 1.3 * amplitude * (1 / 6.3 * (fireRotTimer - 0.5)) * Math.sin(6.3 * (fireRotTimer - 0.5)) * (3 - Math.pow(fireRotTimer, 2)) + 1 * Mth.clamp(0.3 - fireRotTimer, 0, 1) * (2 * Math.random() - 1))); event.setRoll((float) (roll + 4.2 * amplitude * (1 / 6.3 * (fireRotTimer - 0.5)) * Math.sin(6.3 * (fireRotTimer - 0.5)) * (3 - Math.pow(fireRotTimer, 2)) + 3 * Mth.clamp(0.5 - fireRotTimer, 0, 0.5) * (2 * Math.random() - 1))); @@ -571,36 +570,17 @@ public class ClientEventHandler { } } - private static void handleWeaponShell(LivingEntity entity) { + private static void handleWeaponShell() { Player player = Minecraft.getInstance().player; if (player == null) return; float times = Minecraft.getInstance().getDeltaFrameTime(); - if (shellIndex >= 5) { - shellIndex = 0; - shellIndexTime[0] = 0; + shellIndex %= 5; + + for (int i = 0; i < 5; i++) { + shellIndexTime[i] = Math.min(shellIndexTime[i] + 6 * times * ((50 - shellIndexTime[i]) / 50), 50); } - - shellIndexTime[0] = Math.min(shellIndexTime[0] + 6 * times * ((50 - shellIndexTime[0]) / 50), 50); - - shellIndexTime[1] = Math.min(shellIndexTime[1] + 6 * times * ((50 - shellIndexTime[1]) / 50), 50); - - shellIndexTime[2] = Math.min(shellIndexTime[2] + 6 * times * ((50 - shellIndexTime[2]) / 50), 50); - - shellIndexTime[3] = Math.min(shellIndexTime[3] + 6 * times * ((50 - shellIndexTime[3]) / 50), 50); - - shellIndexTime[4] = Math.min(shellIndexTime[4] + 6 * times * ((50 - shellIndexTime[4]) / 50), 50); - -// player.displayClientMessage(Component.literal(new java.text.DecimalFormat("##.##").format(shellIndex) + " " -// + new java.text.DecimalFormat("##").format(shellIndexTime1) + " " -// + new java.text.DecimalFormat("##").format(shellIndexTime2) + " " -// + new java.text.DecimalFormat("##").format(shellIndexTime3) + " " -// + new java.text.DecimalFormat("##").format(shellIndexTime4) + " " -// + new java.text.DecimalFormat("##").format(shellIndexTime5) -// ), true); - - } private static void handleGunRecoil() { @@ -630,12 +610,7 @@ public class ClientEventHandler { } recoilY = 0; -// player.displayClientMessage(Component.literal(new java.text.DecimalFormat("##.##").format(recoilY) + " " + new java.text.DecimalFormat("##.#").format(recoilHorizon)), true); - - /* - 计算后坐力 - */ - + // 计算后坐力 float pose = 1; if (player.isShiftKeyDown() && player.getBbHeight() >= 1 && !isProne(player)) { pose = 0.7f; @@ -675,8 +650,7 @@ public class ClientEventHandler { player.xRotO = player.getXRot(); } - if (recoilTime >= 2.5) recoilTime = 0d; - + if (recoilTime >= 2.5) recoilTime = 0; } private static void handlePlayerBreath(LivingEntity entity) { @@ -840,8 +814,7 @@ public class ClientEventHandler { @SubscribeEvent public static void handleChangeSlot(LivingEquipmentChangeEvent event) { - if (event.getEntity() instanceof Player player && event.getSlot() == EquipmentSlot.MAINHAND) { - + if (event.getEntity() instanceof Player && event.getSlot() == EquipmentSlot.MAINHAND) { ItemStack oldStack = event.getFrom(); ItemStack newStack = event.getTo(); @@ -872,40 +845,16 @@ public class ClientEventHandler { } drawTime = Math.max(drawTime - Math.max(0.2 * speed * times * drawTime, 0.0008), 0); -// Player player = Minecraft.getInstance().player; -// if (player != null) { -// player.displayClientMessage(Component.literal(new java.text.DecimalFormat("##.##").format(drawTime)), true); -// } } - public static void handleShell(CoreGeoBone shell1, CoreGeoBone shell2, CoreGeoBone shell3, CoreGeoBone shell4, CoreGeoBone shell5, float x, float y) { - - shell1.setPosX((float) (-x * shellIndexTime[0])); - shell1.setPosY((float) (randomShell[0] * y * Math.sin(0.15 * shellIndexTime[0]))); - shell1.setRotX((float) (randomShell[1] * shellIndexTime[0])); - shell1.setRotY((float) (randomShell[2] * shellIndexTime[0])); - - shell2.setPosX((float) (-x * shellIndexTime[1])); - shell2.setPosY((float) (randomShell[0] * y * Math.sin(0.15 * shellIndexTime[1]))); - shell2.setRotX((float) (randomShell[1] * shellIndexTime[1])); - shell2.setRotY((float) (randomShell[2] * shellIndexTime[1])); - - shell3.setPosX((float) (-x * shellIndexTime[2])); - shell3.setPosY((float) (randomShell[0] * y* Math.sin(0.15 * shellIndexTime[2]))); - shell2.setRotX((float) (randomShell[1] * shellIndexTime[2])); - shell3.setRotY((float) (randomShell[2] * shellIndexTime[2])); - - shell4.setPosX((float) (-x * shellIndexTime[3])); - shell4.setPosY((float) (randomShell[0] * y * Math.sin(0.15 * shellIndexTime[3]))); - shell2.setRotX((float) (randomShell[1] * shellIndexTime[3])); - shell4.setRotY((float) (randomShell[2] * shellIndexTime[3])); - - shell5.setPosX((float) (-x * shellIndexTime[4])); - shell5.setPosY((float) (randomShell[0] * y * Math.sin(0.15 * shellIndexTime[4]))); - shell2.setRotX((float) (randomShell[1] * shellIndexTime[4])); - shell5.setRotY((float) (randomShell[2] * shellIndexTime[4])); + public static void handleShells(float x, float y, CoreGeoBone... shells) { + for (int i = 0; i < shells.length; i++) { + if (i >= 5) break; + shells[i].setPosX((float) (-x * shellIndexTime[i])); + shells[i].setPosY((float) (randomShell[0] * y * Math.sin(0.15 * shellIndexTime[i]))); + shells[i].setRotX((float) (randomShell[1] * shellIndexTime[i])); + shells[i].setRotY((float) (randomShell[2] * shellIndexTime[i])); + } } } - -