diff --git a/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java b/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java index 3abbab180..8acace576 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java @@ -195,7 +195,6 @@ public class ClickHandler { int key = event.getKey(); if (event.getAction() == GLFW.GLFW_PRESS) { - if (player.hasEffect(ModMobEffects.SHOCK.get())) { return; } @@ -216,7 +215,7 @@ public class ClickHandler { ModUtils.PACKET_HANDLER.sendToServer(new InteractMessage(0)); } 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) { ClientEventHandler.holdFire = false; @@ -459,4 +458,16 @@ public class ClickHandler { 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)); + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java index 607b7b42a..f8610707e 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java @@ -142,6 +142,8 @@ public class ClientEventHandler { public static int lungeAttack; public static Entity entity; + public static int dismountCountdown = 0; + @SubscribeEvent public static void handleWeaponTurn(RenderHandEvent event) { LocalPlayer player = Minecraft.getInstance().player; @@ -204,7 +206,11 @@ public class ClientEventHandler { } if (miniGunRot > 0) { - miniGunRot --; + miniGunRot--; + } + + if (dismountCountdown > 0) { + dismountCountdown--; } if (notInGame() && !ClickHandler.switchZoom) { @@ -224,7 +230,7 @@ public class ClientEventHandler { if (stack.is(ModItems.LUNGE_MINE.get()) && lungeAttack >= 1 && lungeAttack <= 2) { 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)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, player)); @@ -246,7 +252,7 @@ public class ClientEventHandler { } if (lungeAttack > 0) { - lungeAttack --; + lungeAttack--; } } @@ -1284,7 +1290,7 @@ public class ClientEventHandler { 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); }