GeyserMC / Geyser

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

High and low coordinates break the game #3804

Open LordKnish opened 1 year ago

LordKnish commented 1 year ago

Describe the bug

If a server uses a datapack that expands the Minecraft world size past the bounds of the world (319 <-> -64) then Bedrock cannot load those chunks correctly.

Idea for fix: spoof the bedrock players coordinates or try to force fit them within bedrock bounds.

Its possible for me to fork and try this out but I am not sure where to start to be honest.

To Reproduce

  1. Download a world expansion datapack like https://www.planetminecraft.com/data-pack/increase-world-height-to-1024-blocks-1-18-1/
  2. Start a server with the datapack and install Geyser
  3. Connect via Bedrock

Expected behaviour

Normal world loading with visible chunks and blocks.

Screenshots / Videos

No response

Server Version and Plugins

No response

Geyser Dump

No response

Geyser Version

Build #157

Minecraft: Bedrock Edition Device/Version

No response

Additional Context

No response

Camotoy commented 1 year ago

There is likely an avenue to allow higher block limits in the overworld. To our knowledge, without workarounds this can't work in the Nether and End.

Trying to work around this by shifting coordinates is something we have no desire to maintain. We'd have to cover every single place where coordinates are used - chunks, NBT, block updates, particles, entities...

LordKnish commented 1 year ago

With that in mind, would a fix be possible in the near future?

Overworld would be the only thing that needs to be supported in my mind since Nether and End world height expansion isn't stable itself anyway

Kas-tle commented 1 year ago

We generally do not give deadlines with regards to any particular feature.

If this is something you're personally interested in, it would generally involve looking into this and seeing what we'd need to send in the start game packet to work with it https://learn.microsoft.com/en-us/minecraft/creator/documents/datadrivenoverworldheight. You'd likely want to follow the instructions in the creator docs to setup an appropriate behavior pack, then load it into Bedrock Dedicated Server (the vanilla server for Bedrock) and use ProxyPass to see what specific packets are sent to enable this.

I'm also not sure if this is possible without the subchunk system.