From 72ca233504001d88682acfa7900bf55c9f2724d0 Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Sun, 29 Sep 2024 14:45:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=B6=8A=E8=82=A9=E8=A7=86?= =?UTF-8?q?=E8=A7=92=E8=B0=83=E6=95=B4=E4=BD=8D=E7=BD=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/ClientEventHandler.java | 20 +++++++++++++------ .../superbwarfare/mixins/CameraMixin.java | 2 +- .../assets/superbwarfare/lang/zh_cn.json | 2 +- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java b/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java index 58e6fc4f2..5ac70de88 100644 --- a/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java @@ -85,6 +85,7 @@ public class ClientEventHandler { public static double fireSpread = 0; public static double cantFireTime = 0; public static double lookDistance = 0; + public static double cameraLocation = 0.6; public static MillisTimer clientTimer = new MillisTimer(); @@ -178,7 +179,6 @@ public class ClientEventHandler { cantFireTime = Mth.clamp(cantFireTime - 6 * times, 0, 30); } -// player.displayClientMessage(Component.literal(new java.text.DecimalFormat("##").format(cantFireTime)), true); if (GLFW.glfwGetMouseButton(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_MOUSE_BUTTON_LEFT) == GLFW.GLFW_PRESS && (player.getMainHandItem().is(ModTags.Items.NORMAL_GUN) @@ -227,7 +227,7 @@ public class ClientEventHandler { public static void computeCameraAngles(ViewportEvent.ComputeCameraAngles event) { ClientLevel level = Minecraft.getInstance().level; Entity entity = event.getCamera().getEntity(); - handlePlayerCameraShake(event); + handlePlayerCamera(event); if (level != null && entity instanceof LivingEntity living && living.getMainHandItem().is(ModItems.MONITOR.get()) && living.getMainHandItem().getOrCreateTag().getBoolean("Using") @@ -506,12 +506,20 @@ public class ClientEventHandler { } } - private static void handlePlayerCameraShake(ViewportEvent.ComputeCameraAngles event) { + private static void handlePlayerCamera(ViewportEvent.ComputeCameraAngles event) { double yaw = event.getYaw(); double pitch = event.getPitch(); double roll = event.getRoll(); LocalPlayer player = Minecraft.getInstance().player; + if (GLFW.glfwGetKey(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_KEY_RIGHT) == GLFW.GLFW_PRESS) { + cameraLocation = Mth.clamp(cameraLocation - 0.05 * Minecraft.getInstance().getDeltaFrameTime(), -0.6, 0.6); + } + + if (GLFW.glfwGetKey(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_KEY_LEFT) == GLFW.GLFW_PRESS) { + cameraLocation = Mth.clamp(cameraLocation + 0.05 * Minecraft.getInstance().getDeltaFrameTime(), -0.6, 0.6); + } + if (player == null) return; double range; @@ -533,14 +541,14 @@ public class ClientEventHandler { double angle = 0; - if (lookDistance != 0) { - angle = Math.atan(0.6 / (lookDistance + 2.9)) * Mth.RAD_TO_DEG; + if (lookDistance != 0 && cameraLocation != 0) { + angle = Math.atan(Mth.abs((float) cameraLocation) / (lookDistance + 2.9)) * Mth.RAD_TO_DEG; } if (player.getMainHandItem().is(ModTags.Items.GUN) || (player.getVehicle() != null && (player.getVehicle() instanceof ICannonEntity))) { event.setPitch((float) (pitch + cameraRot[0] + (DisplayConfig.CAMERA_ROTATE.get() ? 0.2 : 0) * turnRot[0] + 3 * velocityY)); if (Minecraft.getInstance().options.getCameraType() == CameraType.THIRD_PERSON_BACK) { - event.setYaw((float) (yaw + cameraRot[1] + (DisplayConfig.CAMERA_ROTATE.get() ? 0.8 : 0) * turnRot[1] - angle * zoomPos)); + event.setYaw((float) (yaw + cameraRot[1] + (DisplayConfig.CAMERA_ROTATE.get() ? 0.8 : 0) * turnRot[1] - (cameraLocation > 0 ? 1 : -1) * angle * zoomPos)); } else { event.setYaw((float) (yaw + cameraRot[1] + (DisplayConfig.CAMERA_ROTATE.get() ? 0.8 : 0) * turnRot[1])); } diff --git a/src/main/java/net/mcreator/superbwarfare/mixins/CameraMixin.java b/src/main/java/net/mcreator/superbwarfare/mixins/CameraMixin.java index a074a6e73..dd0794906 100644 --- a/src/main/java/net/mcreator/superbwarfare/mixins/CameraMixin.java +++ b/src/main/java/net/mcreator/superbwarfare/mixins/CameraMixin.java @@ -73,7 +73,7 @@ public abstract class CameraMixin { return; } if (Minecraft.getInstance().options.getCameraType() == CameraType.THIRD_PERSON_BACK && entity instanceof Player player && player.getMainHandItem().is(ModTags.Items.GUN)) { - move(-getMaxZoom(-2.9 * Math.max(ClientEventHandler.pullPos, ClientEventHandler.zoomPos)), 0, -0.6 * Math.max(ClientEventHandler.pullPos, ClientEventHandler.zoomPos)); + move(-getMaxZoom(-2.9 * Math.max(ClientEventHandler.pullPos, ClientEventHandler.zoomPos)), 0, -ClientEventHandler.cameraLocation * Math.max(ClientEventHandler.pullPos, ClientEventHandler.zoomPos)); } } diff --git a/src/main/resources/assets/superbwarfare/lang/zh_cn.json b/src/main/resources/assets/superbwarfare/lang/zh_cn.json index 3bab172b2..ad454efbb 100644 --- a/src/main/resources/assets/superbwarfare/lang/zh_cn.json +++ b/src/main/resources/assets/superbwarfare/lang/zh_cn.json @@ -345,7 +345,7 @@ "config.superbwarfare.title": "卓越前线", "config.superbwarfare.client.reload": "换弹配置", - "config.superbwarfare.client.reload.left_click_reload": "开火换弹", + "config.superbwarfare.client.reload.left_click_reload": "快捷换弹", "config.superbwarfare.client.reload.left_click_reload.des": "在当前弹匣为空时,点击开火键以进行换弹", "config.superbwarfare.client.kill_message": "击杀信息配置", "config.superbwarfare.client.kill_message.show_kill_message": "显示击杀信息",