From e23b04aeba7b5ceb4b5b1dfe476067544651b34b Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Sat, 8 Feb 2025 22:32:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=A3=9E=E8=A1=8C=E8=BD=BD?= =?UTF-8?q?=E5=85=B7=E8=87=AA=E7=94=B1=E8=A7=86=E8=A7=92=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/vehicle/Ah6Entity.java | 4 ++ .../entity/vehicle/MobileVehicleEntity.java | 4 -- .../entity/vehicle/Tom6Entity.java | 5 ++ .../entity/vehicle/VehicleEntity.java | 4 ++ .../event/ClientEventHandler.java | 8 ++- .../event/ClientMouseHandler.java | 61 ++++++------------ .../superbwarfare/init/ModKeyMappings.java | 2 + .../mixins/MouseHandlerMixin.java | 5 ++ .../message/VehicleMovementMessage.java | 12 ---- .../assets/superbwarfare/lang/en_us.json | 1 + .../assets/superbwarfare/lang/zh_cn.json | 1 + .../superbwarfare/textures/entity/bmp2.png | Bin 12613 -> 12554 bytes 12 files changed, 49 insertions(+), 58 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Ah6Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Ah6Entity.java index fbde7572b..b61037c28 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Ah6Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Ah6Entity.java @@ -793,4 +793,8 @@ public class Ah6Entity extends ContainerMobileEntity implements GeoEntity, IHeli public ResourceLocation getVehicleIcon() { return ModUtils.loc("textures/vehicle_icon/ah_6_icon.png"); } + @Override + public boolean allowFreeCam() { + return true; + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/MobileVehicleEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/MobileVehicleEntity.java index 24a71782a..ed00df35e 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/MobileVehicleEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/MobileVehicleEntity.java @@ -50,10 +50,6 @@ public class MobileVehicleEntity extends EnergyVehicleEntity { public boolean upInputDown; public boolean downInputDown; public boolean decoyInputDown; - public boolean leftInputDownMouse; - public boolean rightInputDownMouse; - public boolean upInputDownMouse; - public boolean downInputDownMouse; public double lastTickSpeed; public double lastTickVerticalSpeed; public int collisionCoolDown; diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Tom6Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Tom6Entity.java index 44f2463c5..d2b817801 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Tom6Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Tom6Entity.java @@ -372,4 +372,9 @@ public class Tom6Entity extends MobileVehicleEntity implements GeoEntity { public ResourceLocation getVehicleIcon() { return ModUtils.loc("textures/vehicle_icon/tom_6_icon.png"); } + + @Override + public boolean allowFreeCam() { + return true; + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/VehicleEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/VehicleEntity.java index fee815a66..461db706f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/VehicleEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/VehicleEntity.java @@ -457,4 +457,8 @@ public class VehicleEntity extends Entity { public ResourceLocation getVehicleIcon() { return ModUtils.loc("textures/gun_icon/default_icon.png"); } + + public boolean allowFreeCam() { + return false; + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java index 7a2dd1cbb..241339266 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java @@ -154,6 +154,7 @@ public class ClientEventHandler { public static CameraType lastCameraType; + @SubscribeEvent public static void handleWeaponTurn(RenderHandEvent event) { LocalPlayer player = Minecraft.getInstance().player; @@ -178,6 +179,10 @@ public class ClientEventHandler { return !mc.isWindowActive(); } + public static boolean isFreeCam(Player player) { + return player.getVehicle() instanceof VehicleEntity vehicle && vehicle.allowFreeCam() && Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON && ModKeyMappings.FREE_CAMERA.isDown(); + } + private static boolean revolverPre() { Player player = Minecraft.getInstance().player; if (player == null) return false; @@ -846,8 +851,9 @@ public class ClientEventHandler { } } - if (player != null && player.getVehicle() instanceof IArmedVehicleEntity iArmedVehicle && iArmedVehicle.banHand(player)) + if (player != null && player.getVehicle() instanceof IArmedVehicleEntity iArmedVehicle && iArmedVehicle.banHand(player)) { return; + } if (level != null && stack.is(ModTags.Items.GUN)) { handleWeaponSway(living); diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientMouseHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientMouseHandler.java index f0579fb38..eae67c425 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientMouseHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientMouseHandler.java @@ -1,17 +1,17 @@ package com.atsuishio.superbwarfare.event; -import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.client.MouseMovementHandler; -import com.atsuishio.superbwarfare.network.message.VehicleMovementMessage; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.util.Mth; import net.minecraft.world.phys.Vec2; import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.event.TickEvent; +import net.minecraftforge.client.event.ViewportEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; +import static com.atsuishio.superbwarfare.event.ClientEventHandler.isFreeCam; + @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.CLIENT) public class ClientMouseHandler { public static Vec2 posO = new Vec2(0 , 0); @@ -22,6 +22,9 @@ public class ClientMouseHandler { public static double PosY = 0; public static double lerpPosY = 0; + public static double freeCameraPitch = 0; + public static double freeCameraYaw = 0; + private static boolean notInGame() { Minecraft mc = Minecraft.getInstance(); if (mc.player == null) return true; @@ -32,7 +35,7 @@ public class ClientMouseHandler { } @SubscribeEvent - public static void handleClientTick(TickEvent.ClientTickEvent event) { + public static void handleClientTick(ViewportEvent.ComputeCameraAngles event) { LocalPlayer player = Minecraft.getInstance().player; if (player == null) { @@ -53,48 +56,24 @@ public class ClientMouseHandler { } } - lerpPosX = Mth.clamp(Mth.lerp(0.1,lerpPosX,0), -0.11, 0.11); - lerpPosY = Mth.clamp(Mth.lerp(0.1,lerpPosY,0), -0.11, 0.11); + lerpPosX = Mth.clamp(Mth.lerp(event.getPartialTick(),lerpPosX,0), -1, 1); + lerpPosY = Mth.clamp(Mth.lerp(event.getPartialTick(),lerpPosY,0), -1, 1); - int typeX = 0; - if (lerpPosX < -0.05) { - typeX = -1; - } else if (lerpPosX > 0.05) { - typeX = 1; + if (isFreeCam(player)) { + freeCameraYaw = Mth.clamp(freeCameraYaw + 4 * lerpPosX, -100 , 100); + freeCameraPitch = Mth.clamp(freeCameraPitch + 4 * lerpPosY, -90 , 90); } - int typeY = 0; + float yaw = event.getYaw(); + float pitch = event.getPitch(); - if (lerpPosY < -0.05) { - typeY = 1; - } else if (lerpPosY > 0.05) { - typeY = -1; + event.setYaw((float) (yaw + freeCameraYaw)); + event.setPitch((float) (pitch + freeCameraPitch)); + + if (!isFreeCam(player)) { + freeCameraYaw *= 0.8; + freeCameraPitch *= 0.8; } - - if (typeX == -1) { - ModUtils.PACKET_HANDLER.sendToServer(new VehicleMovementMessage(7, true)); - ModUtils.PACKET_HANDLER.sendToServer(new VehicleMovementMessage(8, false)); - } else if (typeX == 1) { - ModUtils.PACKET_HANDLER.sendToServer(new VehicleMovementMessage(7, false)); - ModUtils.PACKET_HANDLER.sendToServer(new VehicleMovementMessage(8, true)); - } else { - ModUtils.PACKET_HANDLER.sendToServer(new VehicleMovementMessage(7, false)); - ModUtils.PACKET_HANDLER.sendToServer(new VehicleMovementMessage(8, false)); - } - - - if (typeY == 1) { - ModUtils.PACKET_HANDLER.sendToServer(new VehicleMovementMessage(9, true)); - ModUtils.PACKET_HANDLER.sendToServer(new VehicleMovementMessage(10, false)); - } else if (typeY == -1) { - ModUtils.PACKET_HANDLER.sendToServer(new VehicleMovementMessage(9, false)); - ModUtils.PACKET_HANDLER.sendToServer(new VehicleMovementMessage(10, true)); - } else { - ModUtils.PACKET_HANDLER.sendToServer(new VehicleMovementMessage(9, false)); - ModUtils.PACKET_HANDLER.sendToServer(new VehicleMovementMessage(10, false)); - } - -// player.displayClientMessage(Component.literal(typeX + " " + typeY), true); } } diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModKeyMappings.java b/src/main/java/com/atsuishio/superbwarfare/init/ModKeyMappings.java index 9bc7ebc70..860eadbef 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModKeyMappings.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModKeyMappings.java @@ -54,6 +54,7 @@ public class ModKeyMappings { public static final KeyMapping HOLD_ZOOM = new KeyMapping("key.superbwarfare.hold_zoom", InputConstants.Type.MOUSE, GLFW.GLFW_MOUSE_BUTTON_RIGHT, "key.categories.superbwarfare"); public static final KeyMapping SWITCH_ZOOM = new KeyMapping("key.superbwarfare.switch_zoom", GLFW.GLFW_KEY_UNKNOWN, "key.categories.superbwarfare"); public static final KeyMapping RELEASE_DECOY = new KeyMapping("key.superbwarfare.release_decoy", GLFW.GLFW_KEY_X, "key.categories.superbwarfare"); + public static final KeyMapping FREE_CAMERA = new KeyMapping("key.superbwarfare.free_camera", GLFW.GLFW_KEY_C, "key.categories.superbwarfare"); public static final KeyMapping MELEE = new KeyMapping("key.superbwarfare.melee", GLFW.GLFW_KEY_V, "key.categories.superbwarfare"); @SubscribeEvent @@ -77,6 +78,7 @@ public class ModKeyMappings { event.register(SWITCH_ZOOM); event.register(RELEASE_DECOY); event.register(MELEE); + event.register(FREE_CAMERA); } @Mod.EventBusSubscriber(value = Dist.CLIENT) diff --git a/src/main/java/com/atsuishio/superbwarfare/mixins/MouseHandlerMixin.java b/src/main/java/com/atsuishio/superbwarfare/mixins/MouseHandlerMixin.java index ac11248b8..71554b959 100644 --- a/src/main/java/com/atsuishio/superbwarfare/mixins/MouseHandlerMixin.java +++ b/src/main/java/com/atsuishio/superbwarfare/mixins/MouseHandlerMixin.java @@ -19,6 +19,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyVariable; import static com.atsuishio.superbwarfare.event.ClientEventHandler.droneFovLerp; +import static com.atsuishio.superbwarfare.event.ClientEventHandler.isFreeCam; /** * Author: MrCrayfish @@ -42,6 +43,10 @@ public class MouseHandlerMixin { ItemStack stack = mc.player.getMainHandItem(); + if (isFreeCam(player)) { + return 0; + } + if (player.getVehicle() instanceof ICannonEntity) { return ClientEventHandler.zoomVehicle ? 0.15 : 0.3; } diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/VehicleMovementMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/VehicleMovementMessage.java index c63701756..e350ba5a7 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/VehicleMovementMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/VehicleMovementMessage.java @@ -60,18 +60,6 @@ public class VehicleMovementMessage { case 6: mobileVehicleEntity.decoyInputDown = message.clicked; break; - case 7: - mobileVehicleEntity.leftInputDownMouse = message.clicked; - break; - case 8: - mobileVehicleEntity.rightInputDownMouse = message.clicked; - break; - case 9: - mobileVehicleEntity.downInputDownMouse = message.clicked; - break; - case 10: - mobileVehicleEntity.upInputDownMouse = message.clicked; - break; } } else if (stack.is(ModItems.MONITOR.get()) && stack.getOrCreateTag().getBoolean("Using") && stack.getOrCreateTag().getBoolean("Linked")) { var drone = EntityFindUtil.findDrone(player.level(), stack.getOrCreateTag().getString("LinkedDrone")); diff --git a/src/main/resources/assets/superbwarfare/lang/en_us.json b/src/main/resources/assets/superbwarfare/lang/en_us.json index bd37040b0..82c8194fb 100644 --- a/src/main/resources/assets/superbwarfare/lang/en_us.json +++ b/src/main/resources/assets/superbwarfare/lang/en_us.json @@ -427,6 +427,7 @@ "key.superbwarfare.edit_grip": "Switch Grip", "key.superbwarfare.release_decoy": "Release Decoy", "key.superbwarfare.melee": "Melee", + "key.superbwarfare.free_camera": "Vehicle Free Camera", "key.superbwarfare.launch": "Launch", "effect.superbwarfare.shock": "Shock", diff --git a/src/main/resources/assets/superbwarfare/lang/zh_cn.json b/src/main/resources/assets/superbwarfare/lang/zh_cn.json index 94ac649f8..4a3e0db0e 100644 --- a/src/main/resources/assets/superbwarfare/lang/zh_cn.json +++ b/src/main/resources/assets/superbwarfare/lang/zh_cn.json @@ -425,6 +425,7 @@ "key.superbwarfare.edit_grip": "切换握把", "key.superbwarfare.release_decoy": "释放诱饵", "key.superbwarfare.melee": "枪械近战", + "key.superbwarfare.free_camera": "载具自由视角", "key.superbwarfare.launch": "发射", "effect.superbwarfare.shock": "电击", diff --git a/src/main/resources/assets/superbwarfare/textures/entity/bmp2.png b/src/main/resources/assets/superbwarfare/textures/entity/bmp2.png index 3a1c8b48ddff3aaf096b2b1b293e8e5e6bd48482..fbcc20649a65da2f38808e35ea4581af756d33d4 100644 GIT binary patch literal 12554 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 Q=LSGoUPG=@*5c#;04?7z*Z=?k literal 12613 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