GeyserMC / Geyser

A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition.
https://geysermc.org
MIT License
4.75k stars 687 forks source link

Add basic support for the 1.21.2 minecart experiment #5134

Open eclipseisoffline opened 2 weeks ago

eclipseisoffline commented 2 weeks ago

This PR adds a simple packet translator for the ClientboundMoveMinecartPacket. This packet, introduced in Minecraft 1.21.2, is used to move minecarts around when the new minecart experiment is enabled. Without this PR, minecarts using the new minecart behaviour don't move at all on Bedrock.

Since Bedrock doesn't have a similar minecart experiment and doesn't support entity interpolation steps in the way they are described in this packet, the translator simply takes the last interpolation step and sends its data to the Bedrock client. This isn't a perfect solution, and especially in turns minecarts don't move perfectly along the rails, but it seems this is the best it gets for now.

Note: I've also tried interpolating between the steps on Geyser, which didn't work much better since I was unable to interpolate between ticks, and I tried sending the step with the biggest weight instead of the last interpolation step, which also didn't work much better.