From b35d17b97b8799994173d3b07734e79dae4abf6a Mon Sep 17 00:00:00 2001 From: zimzaza4 <3625282098@qq.com> Date: Wed, 17 Dec 2025 16:38:09 +0800 Subject: [PATCH] Disable Mount Fix (Fixed by Geyser official?) --- .../geyserutils/geyser/GeyserUtils.java | 2 +- .../zimzaza4/geyserutils/geyser/MountFix.java | 29 +++++++++++-------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/GeyserUtils.java b/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/GeyserUtils.java index f8b2fd1..7e47b23 100644 --- a/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/GeyserUtils.java +++ b/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/GeyserUtils.java @@ -339,7 +339,7 @@ public class GeyserUtils implements Extension { replaceTranslator(); GEYSER_LOADED = true; logger().info("Defined " + LOADED_ENTITY_DEFINITIONS.size() + " entities"); - MountFix.start(); + // MountFix.start(); } diff --git a/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/MountFix.java b/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/MountFix.java index 7d1cfd0..c237ca7 100644 --- a/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/MountFix.java +++ b/geyser/src/main/java/me/zimzaza4/geyserutils/geyser/MountFix.java @@ -18,21 +18,26 @@ public class MountFix { // if the vehicle is too fast, the problem appear Executors.newSingleThreadScheduledExecutor() .scheduleAtFixedRate(() -> { - for (GeyserSession session : GeyserImpl.getInstance().onlineConnections()) { - Entity v = session.getPlayerEntity().getVehicle(); - if (v != null && v.getDefinition() == EntityDefinitions.ARMOR_STAND) { - long vehicleBedrockId = v.getGeyserId(); - if (session.getPlayerEntity().getVehicle().getGeyserId() == vehicleBedrockId) { - // The Bedrock client, as of 1.19.51, dismounts on its end. The server may not agree with this. - // If the server doesn't agree with our dismount (sends a packet saying we dismounted), - // then remount the player. - SetEntityLinkPacket linkPacket = new SetEntityLinkPacket(); - linkPacket.setEntityLink(new EntityLinkData(vehicleBedrockId, session.getPlayerEntity().getGeyserId(), EntityLinkData.Type.RIDER, true, false)); - session.sendUpstreamPacket(linkPacket); + try { + for (GeyserSession session : GeyserImpl.getInstance().onlineConnections()) { + Entity v = session.getPlayerEntity().getVehicle(); + if (v != null && v.getDefinition() == EntityDefinitions.ARMOR_STAND) { + session.setShouldSendSneak(true); + long vehicleBedrockId = v.getGeyserId(); + if (session.getPlayerEntity().getVehicle().getGeyserId() == vehicleBedrockId) { + // The Bedrock client, as of 1.19.51, dismounts on its end. The server may not agree with this. + // If the server doesn't agree with our dismount (sends a packet saying we dismounted), + // then remount the player. + SetEntityLinkPacket linkPacket = new SetEntityLinkPacket(); + linkPacket.setEntityLink(new EntityLinkData(vehicleBedrockId, session.getPlayerEntity().getGeyserId(), EntityLinkData.Type.PASSENGER, true, false, 0f)); + session.sendUpstreamPacket(linkPacket); + } } } + } catch (Throwable t) { + t.printStackTrace(); } - }, 2000, 80, TimeUnit.MILLISECONDS); + }, 200, 50, TimeUnit.MILLISECONDS); }