添加离开载具二次确认功能

This commit is contained in:
17146 2025-01-01 23:15:57 +08:00
parent aacd22bf93
commit c78f611dcc
2 changed files with 23 additions and 6 deletions

View file

@ -195,7 +195,6 @@ public class ClickHandler {
int key = event.getKey(); int key = event.getKey();
if (event.getAction() == GLFW.GLFW_PRESS) { if (event.getAction() == GLFW.GLFW_PRESS) {
if (player.hasEffect(ModMobEffects.SHOCK.get())) { if (player.hasEffect(ModMobEffects.SHOCK.get())) {
return; return;
} }
@ -216,7 +215,7 @@ public class ClickHandler {
ModUtils.PACKET_HANDLER.sendToServer(new InteractMessage(0)); ModUtils.PACKET_HANDLER.sendToServer(new InteractMessage(0));
} }
if (key == ModKeyMappings.DISMOUNT.getKey().getValue()) { if (key == ModKeyMappings.DISMOUNT.getKey().getValue()) {
ModUtils.PACKET_HANDLER.sendToServer(new PlayerStopRidingMessage(0)); handleDismountPress(player);
} }
if (key == ModKeyMappings.EDIT_MODE.getKey().getValue() && ClientEventHandler.burstFireSize == 0) { if (key == ModKeyMappings.EDIT_MODE.getKey().getValue() && ClientEventHandler.burstFireSize == 0) {
ClientEventHandler.holdFire = false; ClientEventHandler.holdFire = false;
@ -459,4 +458,16 @@ public class ClickHandler {
player.displayClientMessage(Component.translatable("des.superbwarfare.no_cloth_config").withStyle(ChatFormatting.RED), true); player.displayClientMessage(Component.translatable("des.superbwarfare.no_cloth_config").withStyle(ChatFormatting.RED), true);
} }
} }
private static void handleDismountPress(Player player) {
var vehicle = player.getVehicle();
if (!(vehicle instanceof VehicleEntity)) return;
if ((!vehicle.onGround() || vehicle.getDeltaMovement().length() >= 0.1) && ClientEventHandler.dismountCountdown <= 0) {
player.displayClientMessage(Component.translatable("mount.onboard", ModKeyMappings.DISMOUNT.getTranslatedKeyMessage()), true);
ClientEventHandler.dismountCountdown = 20;
return;
}
ModUtils.PACKET_HANDLER.sendToServer(new PlayerStopRidingMessage(0));
}
} }

View file

@ -142,6 +142,8 @@ public class ClientEventHandler {
public static int lungeAttack; public static int lungeAttack;
public static Entity entity; public static Entity entity;
public static int dismountCountdown = 0;
@SubscribeEvent @SubscribeEvent
public static void handleWeaponTurn(RenderHandEvent event) { public static void handleWeaponTurn(RenderHandEvent event) {
LocalPlayer player = Minecraft.getInstance().player; LocalPlayer player = Minecraft.getInstance().player;
@ -204,7 +206,11 @@ public class ClientEventHandler {
} }
if (miniGunRot > 0) { if (miniGunRot > 0) {
miniGunRot --; miniGunRot--;
}
if (dismountCountdown > 0) {
dismountCountdown--;
} }
if (notInGame() && !ClickHandler.switchZoom) { if (notInGame() && !ClickHandler.switchZoom) {
@ -224,7 +230,7 @@ public class ClientEventHandler {
if (stack.is(ModItems.LUNGE_MINE.get()) && lungeAttack >= 1 && lungeAttack <= 2) { if (stack.is(ModItems.LUNGE_MINE.get()) && lungeAttack >= 1 && lungeAttack <= 2) {
boolean lookAtEntity = false; boolean lookAtEntity = false;
Entity lookingEntity = TraceTool.findLookingEntity(player,5); Entity lookingEntity = TraceTool.findLookingEntity(player, 5);
BlockHitResult result = player.level().clip(new ClipContext(player.getEyePosition(), player.getEyePosition().add(player.getLookAngle().scale(5)), BlockHitResult result = player.level().clip(new ClipContext(player.getEyePosition(), player.getEyePosition().add(player.getLookAngle().scale(5)),
ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, player)); ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, player));
@ -246,7 +252,7 @@ public class ClientEventHandler {
} }
if (lungeAttack > 0) { if (lungeAttack > 0) {
lungeAttack --; lungeAttack--;
} }
} }
@ -1284,7 +1290,7 @@ public class ClientEventHandler {
ItemStack stack = mc.player.getMainHandItem(); ItemStack stack = mc.player.getMainHandItem();
if (mc.player.getVehicle() instanceof Ah6Entity && mc.player.getVehicle() instanceof IHelicopterEntity iHelicopterEntity && iHelicopterEntity .isDriver(mc.player)) { if (mc.player.getVehicle() instanceof Ah6Entity && mc.player.getVehicle() instanceof IHelicopterEntity iHelicopterEntity && iHelicopterEntity.isDriver(mc.player)) {
event.setCanceled(true); event.setCanceled(true);
} }