From bb502af25e44e1ff46a4028c5e4676be7cca0e15 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Fri, 25 Apr 2025 02:43:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=88=86=E7=82=B8=E5=B1=8F?= =?UTF-8?q?=E5=B9=95=E6=8A=96=E5=8A=A8=E5=BC=BA=E5=BA=A6=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/DisplayClothConfig.java | 16 +++++++++++++++ .../config/client/DisplayConfig.java | 8 ++++++++ .../entity/vehicle/AnnihilatorEntity.java | 20 ++++++------------- .../event/ClientEventHandler.java | 11 ++++++---- .../assets/superbwarfare/lang/en_us.json | 4 ++++ .../assets/superbwarfare/lang/zh_cn.json | 4 ++++ 6 files changed, 45 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/compat/clothconfig/client/DisplayClothConfig.java b/src/main/java/com/atsuishio/superbwarfare/compat/clothconfig/client/DisplayClothConfig.java index 7ab83abb2..389716b6d 100644 --- a/src/main/java/com/atsuishio/superbwarfare/compat/clothconfig/client/DisplayClothConfig.java +++ b/src/main/java/com/atsuishio/superbwarfare/compat/clothconfig/client/DisplayClothConfig.java @@ -58,5 +58,21 @@ public class DisplayClothConfig { .setTooltip(Component.translatable("config.superbwarfare.client.display.stamina_hud.des")) .build() ); + + category.addEntry(entryBuilder + .startIntSlider(Component.translatable("config.superbwarfare.client.display.weapon_screen_shake"), DisplayConfig.WEAPON_SCREEN_SHAKE.get(), + 0, 100) + .setDefaultValue(100) + .setSaveConsumer(DisplayConfig.WEAPON_SCREEN_SHAKE::set) + .setTooltip(Component.translatable("config.superbwarfare.client.display.weapon_screen_shake.des")) + .build()); + + category.addEntry(entryBuilder + .startIntSlider(Component.translatable("config.superbwarfare.client.display.explosion_screen_shake"), DisplayConfig.EXPLOSION_SCREEN_SHAKE.get(), + 0, 100) + .setDefaultValue(100) + .setSaveConsumer(DisplayConfig.EXPLOSION_SCREEN_SHAKE::set) + .setTooltip(Component.translatable("config.superbwarfare.client.display.explosion_screen_shake.des")) + .build()); } } diff --git a/src/main/java/com/atsuishio/superbwarfare/config/client/DisplayConfig.java b/src/main/java/com/atsuishio/superbwarfare/config/client/DisplayConfig.java index ab0c6bdfc..5223a0e8d 100644 --- a/src/main/java/com/atsuishio/superbwarfare/config/client/DisplayConfig.java +++ b/src/main/java/com/atsuishio/superbwarfare/config/client/DisplayConfig.java @@ -10,6 +10,8 @@ public class DisplayConfig { public static ModConfigSpec.BooleanValue CAMERA_ROTATE; public static ModConfigSpec.BooleanValue ARMOR_PLATE_HUD; public static ModConfigSpec.BooleanValue STAMINA_HUD; + public static ModConfigSpec.IntValue WEAPON_SCREEN_SHAKE; + public static ModConfigSpec.IntValue EXPLOSION_SCREEN_SHAKE; public static void init(ModConfigSpec.Builder builder) { builder.push("display"); @@ -32,6 +34,12 @@ public class DisplayConfig { builder.comment("Set true to enable stamina hud"); STAMINA_HUD = builder.define("stamina_hud", true); + builder.comment("The strength of screen shaking while firing with a weapon"); + WEAPON_SCREEN_SHAKE = builder.defineInRange("weapon_screen_shake", 100, 0, 100); + + builder.comment("The strength of screen shaking while exploding"); + EXPLOSION_SCREEN_SHAKE = builder.defineInRange("explosion_screen_shake", 100, 0, 100); + builder.pop(); } } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/AnnihilatorEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/AnnihilatorEntity.java index af93576d5..a9511a906 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/AnnihilatorEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/AnnihilatorEntity.java @@ -216,20 +216,12 @@ public class AnnihilatorEntity extends EnergyVehicleEntity implements GeoEntity, .multiply(0.3f, ModDamageTypes.CANNON_FIRE) .multiply(0.04f, ModTags.DamageTypes.PROJECTILE_ABSOLUTE) .custom((source, damage) -> getSourceAngle(source, 3) * damage) - .custom((source, damage) -> { - if (source.getDirectEntity() instanceof C4Entity) { - return 10f * damage; - } - if (source.getDirectEntity() instanceof MelonBombEntity) { - return 8f * damage; - } - if (source.getDirectEntity() instanceof GunGrenadeEntity) { - return 3f * damage; - } - if (source.getDirectEntity() instanceof CannonShellEntity) { - return 3f * damage; - } - return damage; + .custom((source, damage) -> switch (source.getDirectEntity()) { + case C4Entity ignored -> 10f * damage; + case MelonBombEntity ignored -> 8f * damage; + case GunGrenadeEntity ignored -> 3f * damage; + case CannonShellEntity ignored -> 3f * damage; + case null, default -> damage; }) .reduce(12); } diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java index 69c1c7697..4d5f7f622 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java @@ -735,12 +735,15 @@ 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; + double shakeStrength = DisplayConfig.EXPLOSION_SCREEN_SHAKE.get() / 100.0; + if (shakeStrength <= 0.0) return; + shakeTime = time; shakeRadius = radius; - shakeAmplitude = amplitude * Mth.DEG_TO_RAD; - shakePos[0] = x; - shakePos[1] = y; - shakePos[2] = z; + shakeAmplitude = amplitude * Mth.DEG_TO_RAD * shakeStrength; + shakePos[0] = x * shakeStrength; + shakePos[1] = y * shakeStrength; + shakePos[2] = z * shakeStrength; shakeType = 2 * (Math.random() - 0.5); } diff --git a/src/main/resources/assets/superbwarfare/lang/en_us.json b/src/main/resources/assets/superbwarfare/lang/en_us.json index f507973d9..74bb16fb3 100644 --- a/src/main/resources/assets/superbwarfare/lang/en_us.json +++ b/src/main/resources/assets/superbwarfare/lang/en_us.json @@ -543,6 +543,10 @@ "config.superbwarfare.client.display.armor_plate_hud.des": "Display the durability of the bulletproof insert currently equipped on the chest armor in the lower left corner when turned on", "config.superbwarfare.client.display.stamina_hud": "Stamina HUD", "config.superbwarfare.client.display.stamina_hud.des": "Display Stamina HUD when tactical sprinting or holding breath", + "config.superbwarfare.client.display.weapon_screen_shake": "Weapon Screen Shake Strength", + "config.superbwarfare.client.display.weapon_screen_shake.des": "The strength of the screen shake caused by weapons", + "config.superbwarfare.client.display.explosion_screen_shake": "Explosion Screen Shake Strength", + "config.superbwarfare.client.display.explosion_screen_shake.des": "The strength of the screen shake caused by explosions", "config.superbwarfare.client.vehicle": "Control Vehicle", "config.superbwarfare.client.vehicle.invert_aircraft_control": "Invert Aircraft Control", "config.superbwarfare.client.vehicle.left_click_reload.des": "Set TRUE to invert aircraft control", diff --git a/src/main/resources/assets/superbwarfare/lang/zh_cn.json b/src/main/resources/assets/superbwarfare/lang/zh_cn.json index 66a6eed89..59e959a02 100644 --- a/src/main/resources/assets/superbwarfare/lang/zh_cn.json +++ b/src/main/resources/assets/superbwarfare/lang/zh_cn.json @@ -544,6 +544,10 @@ "config.superbwarfare.client.display.armor_plate_hud.des": "开启时,在左下角显示当前装备在胸甲上的防弹插板的耐久度", "config.superbwarfare.client.display.stamina_hud": "耐力信息", "config.superbwarfare.client.display.stamina_hud.des": "在战术冲刺或屏息时,显示耐力条", + "config.superbwarfare.client.display.weapon_screen_shake": "武器屏幕抖动", + "config.superbwarfare.client.display.weapon_screen_shake.des": "武器开火时,屏幕抖动的强度", + "config.superbwarfare.client.display.explosion_screen_shake": "爆炸屏幕抖动", + "config.superbwarfare.client.display.explosion_screen_shake.des": "爆炸时,屏幕抖动的强度", "config.superbwarfare.client.vehicle": "载具控制", "config.superbwarfare.client.vehicle.invert_aircraft_control": "飞行器鼠标反转", "config.superbwarfare.client.vehicle.left_click_reload.des": "开启飞行器鼠标反转",