From c9eeed905bb87168308d9d618008b330465b1dbd Mon Sep 17 00:00:00 2001 From: Camotoy <20743703+Camotoy@users.noreply.github.com> Date: Sat, 26 Oct 2024 13:24:15 -0400 Subject: [PATCH] Fix horse movement --- .../player/BedrockPlayerAuthInputTranslator.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java index a0c874743a..9f9d061e11 100644 --- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java +++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java @@ -153,11 +153,13 @@ public void translate(GeyserSession session, PlayerAuthInputPacket packet) { case STOP_GLIDING -> sendPlayerGlideToggle(session, entity); } } - boolean up = inputData.contains(PlayerAuthInputData.UP); - // Yes. These are flipped. It's always been an issue with Geyser. That's what it's like working with this codebase. - // Hi random stranger. I am six days into updating for 1.21.3. How's it going? - session.setSteeringLeft(up || inputData.contains(PlayerAuthInputData.PADDLE_RIGHT)); - session.setSteeringRight(up || inputData.contains(PlayerAuthInputData.PADDLE_LEFT)); + if (entity.getVehicle() instanceof BoatEntity) { + boolean up = inputData.contains(PlayerAuthInputData.UP); + // Yes. These are flipped. It's always been an issue with Geyser. That's what it's like working with this codebase. + // Hi random stranger. I am six days into updating for 1.21.3. How's it going? + session.setSteeringLeft(up || inputData.contains(PlayerAuthInputData.PADDLE_RIGHT)); + session.setSteeringRight(up || inputData.contains(PlayerAuthInputData.PADDLE_LEFT)); + } } private static void sendPlayerGlideToggle(GeyserSession session, Entity entity) { @@ -228,7 +230,7 @@ private static void processVehicleInput(GeyserSession session, PlayerAuthInputPa boolean sendMovement = false; if (vehicle instanceof AbstractHorseEntity && !(vehicle instanceof LlamaEntity)) { - sendMovement = vehicle.isOnGround(); + sendMovement = true; } else if (vehicle instanceof BoatEntity) { if (vehicle.getPassengers().size() == 1) { // The player is the only rider @@ -299,6 +301,7 @@ private static void processVehicleInput(GeyserSession session, PlayerAuthInputPa vehiclePosition = vehiclePosition.down(vehicle.getDefinition().offset()); } + vehicle.setPosition(vehiclePosition); ServerboundMoveVehiclePacket moveVehiclePacket = new ServerboundMoveVehiclePacket( vehiclePosition.getX(), vehiclePosition.getY(), vehiclePosition.getZ(), vehicleRotation.getY() - 90, vehiclePosition.getX() // TODO I wonder if this is related to the horse spinning bugs...