From 3ae90697f36e3553994cb0cd840e38e53d30904d Mon Sep 17 00:00:00 2001 From: Phoenix616 Date: Tue, 4 Apr 2023 19:36:37 +0100 Subject: [PATCH] Fix UUID not being updated when changing world of MapView --- .../world/level/saveddata/maps/WorldMap.patch | 2 +- .../java/org/bukkit/craftbukkit/map/CraftMapView.java | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/nms-patches/net/minecraft/world/level/saveddata/maps/WorldMap.patch b/nms-patches/net/minecraft/world/level/saveddata/maps/WorldMap.patch index 9ca358485..7b829d2ef 100644 --- a/nms-patches/net/minecraft/world/level/saveddata/maps/WorldMap.patch +++ b/nms-patches/net/minecraft/world/level/saveddata/maps/WorldMap.patch @@ -24,7 +24,7 @@ + // CraftBukkit start + public final CraftMapView mapView; + private CraftServer server; -+ private UUID uniqueId = null; ++ public UUID uniqueId = null; + public String id; + // CraftBukkit end + diff --git a/src/main/java/org/bukkit/craftbukkit/map/CraftMapView.java b/src/main/java/org/bukkit/craftbukkit/map/CraftMapView.java index 93ae67284..33255728d 100644 --- a/src/main/java/org/bukkit/craftbukkit/map/CraftMapView.java +++ b/src/main/java/org/bukkit/craftbukkit/map/CraftMapView.java @@ -64,12 +64,20 @@ public final class CraftMapView implements MapView { ResourceKey dimension = worldMap.dimension; WorldServer world = MinecraftServer.getServer().getLevel(dimension); - return (world == null) ? null : world.getWorld(); + if (world != null) { + return world.getWorld(); + } + + if (worldMap.uniqueId != null) { + return Bukkit.getServer().getWorld(worldMap.uniqueId); + } + return null; } @Override public void setWorld(World world) { worldMap.dimension = ((CraftWorld) world).getHandle().dimension(); + worldMap.uniqueId = world.getUID(); } @Override