Eye of ender broken in worlds upgraded to 1.19.3

    • Type: Bug
    • Resolution: Unresolved
    • Priority: Minor
    • None
    • Affects Version/s: None
    • None
    • Environment:

      Acknowledged vanilla issue affecting all other server builds, including Spigot. Both singleplayer and multiplayer.

    • 1.19.3
    • Yes

      Hello, I would like to suggest a vanilla bug, which has been reported for well over 4 years (https://bugs.mojang.com/browse/MC-135996). I understand that vanilla issues are supposed to be handled by Mojang but Spigot has a history of fixing old vanilla bugs before Mojang, so I'd like to give this a try, since it could be a kind of a game breaker for many players.

       

      Summary:

      Stronghold location has changed between 1.19.2 and 1.19.3. This creates an issue when you want to find a stronghold in an upgraded world on 1.19.3. Eye of ender points to different coordinates in case the target area hasn't been generated yet. If it has been generated already, you're out of luck - the eye will not even launch. This issue is even more pressing on servers with pre-generated worlds, as eye of ender doesn't work at all.{}

       

      Reproducing:

      1. Create a world (any build, singleplayer or server) on version 1.19.2.
      2. Locate a stronghold (either using eye of ender or by /locate).
      3. Save the world and open it again on 1.19.3.
      4. Try to find a stronghold from the same position again.
      5. The coordinates will be different.
      6. Bonus:
        1. Open the world again on 1.19.2.
        2. Try to find the stronghold again.
        3. The coordinates are the same as the first time, when the world was originally created.

      Theory:

      Upon checking the respective .mca region files, no change in the node "structures" can be found. This suggests that upgrading a world does not re-write the original stronghold locations. It also suggests that Minecraft doesn't look for strongholds in existing files in any way, but rather runs the world seed through its generator to produce coordinates. As this has changed since 1.19.2, you get different results in the two versions.

      If there was a way to override the vanilla behavior, this issue could be fixed. Minecraft worlds on (much) older versions used to have a file with stronghold locations. If Spigot could create such a file based on the correct locations (on the original version where the world was generated) and then use it when an eye of ender or /locate are used, this could ensure that the player will be directed to actual existing strongholds.

       

      Example:

      Random seed stronghold projection on chunkbase.com:

       

      Bonus:

      I overlayed both projections and apparently, the difference in stronghold coordinates gets greater depending on the distance from 0, 0.

      (Red - 1.19.2, Orange - 1.19.3)

       

      World generated on 1.19.2 from the same seed 7022621917601888991

      Running /locate structure minecraft:stronghold

       

      Same world upgraded to 1.19.3, same coordinates

      Running /locate structure minecraft:stronghold

       

      PLEASE NOTE: the relatively small difference in these coordinates is due to the proximity to map center (this was a brand new world, close to spawn).

      Thank you for reading!

            Assignee:
            Unassigned
            Reporter:
            takatalvi
            Votes:
            1 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated: