[SPIGOT-7231] Eye of ender broken in worlds upgraded to 1.19.3 Created: 12/Jan/23 Updated: 25/Dec/24 |
|
Status: | Open |
Project: | Spigot |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | takatalvi | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 1 |
Labels: | None | ||
Environment: |
Acknowledged vanilla issue affecting all other server builds, including Spigot. Both singleplayer and multiplayer. |
Attachments: |
![]() ![]() ![]() ![]() ![]() |
Version: | 1.19.3 |
Guidelines Read: | Yes |
Description |
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:
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! |
Comments |
Comment by Tau [ 12/Feb/23 ] |
Having this issue currently. One way to fix this would probably be to check the world's created version and if it's below 1.19.3 to use the old code, otherwise the new code. I also wouldn't call this a minor priority issue, it effectively makes it impossible to "play the game" in in this environment. |