添加电击屏幕抖动强度设置

This commit is contained in:
17146 2025-04-25 03:01:35 +08:00 committed by Light_Quanta
parent 20cfbb5389
commit 2f663490fc
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
5 changed files with 24 additions and 7 deletions

View file

@ -74,5 +74,13 @@ public class DisplayClothConfig {
.setSaveConsumer(DisplayConfig.EXPLOSION_SCREEN_SHAKE::set) .setSaveConsumer(DisplayConfig.EXPLOSION_SCREEN_SHAKE::set)
.setTooltip(Component.translatable("config.superbwarfare.client.display.explosion_screen_shake.des")) .setTooltip(Component.translatable("config.superbwarfare.client.display.explosion_screen_shake.des"))
.build()); .build());
category.addEntry(entryBuilder
.startIntSlider(Component.translatable("config.superbwarfare.client.display.shock_screen_shake"), DisplayConfig.SHOCK_SCREEN_SHAKE.get(),
0, 100)
.setDefaultValue(100)
.setSaveConsumer(DisplayConfig.SHOCK_SCREEN_SHAKE::set)
.setTooltip(Component.translatable("config.superbwarfare.client.display.shock_screen_shake.des"))
.build());
} }
} }

View file

@ -12,6 +12,7 @@ public class DisplayConfig {
public static ModConfigSpec.BooleanValue STAMINA_HUD; public static ModConfigSpec.BooleanValue STAMINA_HUD;
public static ModConfigSpec.IntValue WEAPON_SCREEN_SHAKE; public static ModConfigSpec.IntValue WEAPON_SCREEN_SHAKE;
public static ModConfigSpec.IntValue EXPLOSION_SCREEN_SHAKE; public static ModConfigSpec.IntValue EXPLOSION_SCREEN_SHAKE;
public static ModConfigSpec.IntValue SHOCK_SCREEN_SHAKE;
public static void init(ModConfigSpec.Builder builder) { public static void init(ModConfigSpec.Builder builder) {
builder.push("display"); builder.push("display");
@ -40,6 +41,9 @@ public class DisplayConfig {
builder.comment("The strength of screen shaking while exploding"); builder.comment("The strength of screen shaking while exploding");
EXPLOSION_SCREEN_SHAKE = builder.defineInRange("explosion_screen_shake", 100, 0, 100); EXPLOSION_SCREEN_SHAKE = builder.defineInRange("explosion_screen_shake", 100, 0, 100);
builder.comment("The strength of screen shaking when shocked");
SHOCK_SCREEN_SHAKE = builder.defineInRange("shock_screen_shake", 100, 0, 100);
builder.pop(); builder.pop();
} }
} }

View file

@ -1121,7 +1121,6 @@ public class ClientEventHandler {
moveFadeTime = Mth.lerp(0.1 * times, moveFadeTime, 0); moveFadeTime = Mth.lerp(0.1 * times, moveFadeTime, 0);
} }
movePosX = 0.2 * Math.sin(1 * Math.PI * moveXTime) * (1 - 0.95 * zoomTime) * moveFadeTime; movePosX = 0.2 * Math.sin(1 * Math.PI * moveXTime) * (1 - 0.95 * zoomTime) * moveFadeTime;
movePosY = -0.135 * Math.sin(2 * Math.PI * (moveYTime - 0.25)) * (1 - 0.95 * zoomTime) * moveFadeTime; movePosY = -0.135 * Math.sin(2 * Math.PI * (moveYTime - 0.25)) * (1 - 0.95 * zoomTime) * moveFadeTime;
@ -1141,7 +1140,6 @@ public class ClientEventHandler {
pos = 0; pos = 0;
} }
movePosHorizon = Mth.lerp(0.1f * times, movePosHorizon, pos * (1 - 1 * zoomTime)); movePosHorizon = Mth.lerp(0.1f * times, movePosHorizon, pos * (1 - 1 * zoomTime));
double velocity = entity.getDeltaMovement().y() + 0.078; double velocity = entity.getDeltaMovement().y() + 0.078;
@ -1179,7 +1177,6 @@ public class ClientEventHandler {
if (cantFireTime <= 10) { if (cantFireTime <= 10) {
zoomTime = Mth.clamp(zoomTime + 0.03 * speed * times, 0, 1); zoomTime = Mth.clamp(zoomTime + 0.03 * speed * times, 0, 1);
} }
} else { } else {
zoomTime = Mth.clamp(zoomTime - 0.04 * speed * times, 0, 1); zoomTime = Mth.clamp(zoomTime - 0.04 * speed * times, 0, 1);
} }
@ -1222,7 +1219,6 @@ public class ClientEventHandler {
if (0.454 <= firePosTimer && firePosTimer < 1) { if (0.454 <= firePosTimer && firePosTimer < 1) {
firePos = 4.34 * Math.pow(firePosTimer, 2) - 6.5 * firePosTimer + 2.167; firePos = 4.34 * Math.pow(firePosTimer, 2) - 6.5 * firePosTimer + 2.167;
} }
if (0 < fireRotTimer && fireRotTimer < 1.732) { if (0 < fireRotTimer && fireRotTimer < 1.732) {
fireRotTimer += 0.18 * (1.9 - fireRotTimer) * times; fireRotTimer += 0.18 * (1.9 - fireRotTimer) * times;
} }
@ -1377,9 +1373,14 @@ public class ClientEventHandler {
private static void handleShockCamera(ViewportEvent.ComputeCameraAngles event, LivingEntity entity) { private static void handleShockCamera(ViewportEvent.ComputeCameraAngles event, LivingEntity entity) {
if (entity.hasEffect(ModMobEffects.SHOCK) && Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON) { if (entity.hasEffect(ModMobEffects.SHOCK) && Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON) {
event.setYaw(Minecraft.getInstance().gameRenderer.getMainCamera().getYRot() + (float) Mth.nextDouble(RandomSource.create(), -3, 3)); float shakeStrength = (float) (DisplayConfig.SHOCK_SCREEN_SHAKE.get() / 100.0);
event.setPitch(Minecraft.getInstance().gameRenderer.getMainCamera().getXRot() + (float) Mth.nextDouble(RandomSource.create(), -3, 3)); if (shakeStrength <= 0.0f) return;
event.setRoll((float) Mth.nextDouble(RandomSource.create(), 8, 12));
event.setYaw(Minecraft.getInstance().gameRenderer.getMainCamera().getYRot() +
(float) Mth.nextDouble(RandomSource.create(), -3, 3) * shakeStrength);
event.setPitch(Minecraft.getInstance().gameRenderer.getMainCamera().getXRot() +
(float) Mth.nextDouble(RandomSource.create(), -3, 3) * shakeStrength);
event.setRoll((float) Mth.nextDouble(RandomSource.create(), 8, 12) * shakeStrength);
} }
} }

View file

@ -547,6 +547,8 @@
"config.superbwarfare.client.display.weapon_screen_shake.des": "The strength of the screen shake caused by weapons", "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": "Explosion Screen Shake Strength",
"config.superbwarfare.client.display.explosion_screen_shake.des": "The strength of the screen shake caused by explosions", "config.superbwarfare.client.display.explosion_screen_shake.des": "The strength of the screen shake caused by explosions",
"config.superbwarfare.client.display.shock_screen_shake": "Shock Screen Shake Strength",
"config.superbwarfare.client.display.shock_screen_shake.des": "The strength of the screen shake caused by shock effect",
"config.superbwarfare.client.vehicle": "Control Vehicle", "config.superbwarfare.client.vehicle": "Control Vehicle",
"config.superbwarfare.client.vehicle.invert_aircraft_control": "Invert Aircraft Control", "config.superbwarfare.client.vehicle.invert_aircraft_control": "Invert Aircraft Control",
"config.superbwarfare.client.vehicle.left_click_reload.des": "Set TRUE to invert aircraft control", "config.superbwarfare.client.vehicle.left_click_reload.des": "Set TRUE to invert aircraft control",

View file

@ -548,6 +548,8 @@
"config.superbwarfare.client.display.weapon_screen_shake.des": "武器开火时,屏幕抖动的强度", "config.superbwarfare.client.display.weapon_screen_shake.des": "武器开火时,屏幕抖动的强度",
"config.superbwarfare.client.display.explosion_screen_shake": "爆炸屏幕抖动", "config.superbwarfare.client.display.explosion_screen_shake": "爆炸屏幕抖动",
"config.superbwarfare.client.display.explosion_screen_shake.des": "爆炸时,屏幕抖动的强度", "config.superbwarfare.client.display.explosion_screen_shake.des": "爆炸时,屏幕抖动的强度",
"config.superbwarfare.client.display.shock_screen_shake": "电击屏幕抖动",
"config.superbwarfare.client.display.shock_screen_shake.des": "受到电击效果时,屏幕抖动的强度",
"config.superbwarfare.client.vehicle": "载具控制", "config.superbwarfare.client.vehicle": "载具控制",
"config.superbwarfare.client.vehicle.invert_aircraft_control": "飞行器鼠标反转", "config.superbwarfare.client.vehicle.invert_aircraft_control": "飞行器鼠标反转",
"config.superbwarfare.client.vehicle.left_click_reload.des": "开启飞行器鼠标反转", "config.superbwarfare.client.vehicle.left_click_reload.des": "开启飞行器鼠标反转",