From 6404bada5316860e928be69769288bef8f06d569 Mon Sep 17 00:00:00 2001 From: Light_Quanta Date: Sun, 4 May 2025 19:50:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=81=E8=A7=82=E8=80=85=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E4=B8=8D=E5=86=8D=E6=99=83=E5=8A=A8=E5=B1=8F=E5=B9=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/ClientEventHandler.java | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java index 0a9373b23..06d74fc39 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java @@ -735,7 +735,8 @@ public class ClientEventHandler { public static void handleShakeClient(double time, double radius, double amplitude, double x, double y, double z) { Player player = Minecraft.getInstance().player; - if (player == null) return; + if (player == null || player.isSpectator()) return; + float shakeStrength = (float) DisplayConfig.EXPLOSION_SCREEN_SHAKE.get() / 100.0f; if (shakeStrength <= 0.0f) return; @@ -1190,6 +1191,17 @@ public class ClientEventHandler { shake[1] = (float) (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)) * (float) (DisplayConfig.WEAPON_SCREEN_SHAKE.get() / 100.0); + + if (firePosTimer >= 1) { + firePosTimer = 0; + } + if (fireRotTimer >= 1.732) { + fireRotTimer = 0; + fireRot = 0; + } + + if (entity instanceof Player player && player.isSpectator()) return; + 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) { @@ -1202,14 +1214,6 @@ public class ClientEventHandler { event.setRoll((float) (roll - shake[1] * rpm)); } } - - if (firePosTimer >= 1) { - firePosTimer = 0; - } - if (fireRotTimer >= 1.732) { - fireRotTimer = 0; - fireRot = 0; - } } private static void handleWeaponShell() { @@ -1341,15 +1345,14 @@ public class ClientEventHandler { public static void handleReloadShake(double boneRotX, double boneRotY, double boneRotZ) { LocalPlayer player = Minecraft.getInstance().player; + if (player == null || player.isSpectator()) return; float shakeStrength = (float) DisplayConfig.WEAPON_SCREEN_SHAKE.get() / 100.0f; if (shakeStrength <= 0.0f) return; - if (player != null) { - cameraRot[0] = -boneRotX * shakeStrength; - cameraRot[1] = -boneRotY * shakeStrength; - cameraRot[2] = -boneRotZ * shakeStrength; - } + cameraRot[0] = -boneRotX * shakeStrength; + cameraRot[1] = -boneRotY * shakeStrength; + cameraRot[2] = -boneRotZ * shakeStrength; } private static void handlePlayerCamera(ViewportEvent.ComputeCameraAngles event) {