diff --git a/paper-server/patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch b/paper-server/patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch index 5374847788..ed367bbc43 100644 --- a/paper-server/patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch +++ b/paper-server/patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch @@ -43,12 +43,31 @@ } public static MapItemSavedData createFresh(double centerX, double centerZ, byte scale, boolean showDecorations, boolean unlimitedTracking, ResourceKey dimension) { -@@ -101,12 +123,30 @@ +@@ -101,12 +123,49 @@ } public static MapItemSavedData load(CompoundTag nbt, HolderLookup.Provider registries) { - DataResult dataresult = DimensionType.parseLegacy(new Dynamic(NbtOps.INSTANCE, nbt.get("dimension"))); -+ DataResult> dataresult = DimensionType.parseLegacy(new Dynamic(NbtOps.INSTANCE, nbt.get("dimension"))); // CraftBukkit - decompile error ++ // Paper start - fix "Not a string" spam ++ Tag dimension = nbt.get("dimension"); ++ if (dimension instanceof final net.minecraft.nbt.NumericTag numericTag && numericTag.getAsInt() >= CraftWorld.CUSTOM_DIMENSION_OFFSET) { ++ long least = nbt.getLong("UUIDLeast"); ++ long most = nbt.getLong("UUIDMost"); ++ ++ if (least != 0L && most != 0L) { ++ UUID uuid = new UUID(most, least); ++ CraftWorld world = (CraftWorld) Bukkit.getWorld(uuid); ++ if (world != null) { ++ dimension = net.minecraft.nbt.StringTag.valueOf("minecraft:" + world.getName().toLowerCase(java.util.Locale.ENGLISH)); ++ } else { ++ dimension = net.minecraft.nbt.StringTag.valueOf("bukkit:_invalidworld_"); ++ } ++ } else { ++ dimension = net.minecraft.nbt.StringTag.valueOf("bukkit:_invalidworld_"); ++ } ++ } ++ DataResult> dataresult = DimensionType.parseLegacy(new Dynamic(NbtOps.INSTANCE, dimension)); // CraftBukkit - decompile error ++ // Paper end - fix "Not a string" spam Logger logger = MapItemSavedData.LOGGER; Objects.requireNonNull(logger); @@ -77,7 +96,7 @@ }); int i = nbt.getInt("xCenter"); int j = nbt.getInt("zCenter"); -@@ -131,7 +171,8 @@ +@@ -131,7 +190,8 @@ MapBanner mapiconbanner = (MapBanner) iterator.next(); worldmap.bannerMarkers.put(mapiconbanner.getId(), mapiconbanner); @@ -87,7 +106,7 @@ } ListTag nbttaglist = nbt.getList("frames", 10); -@@ -150,13 +191,32 @@ +@@ -150,13 +210,32 @@ @Override public CompoundTag save(CompoundTag nbt, HolderLookup.Provider registries) { @@ -121,7 +140,7 @@ nbt.putInt("xCenter", this.centerX); nbt.putInt("zCenter", this.centerZ); nbt.putByte("scale", this.scale); -@@ -443,7 +503,7 @@ +@@ -443,7 +522,7 @@ if (!this.isTrackedCountOverLimit(256)) { this.bannerMarkers.put(mapiconbanner.getId(), mapiconbanner); @@ -130,7 +149,7 @@ return true; } } -@@ -554,7 +614,7 @@ +@@ -554,7 +633,7 @@ this.player = entityhuman; } @@ -139,7 +158,7 @@ int i = this.minDirtyX; int j = this.minDirtyY; int k = this.maxDirtyX + 1 - this.minDirtyX; -@@ -563,7 +623,7 @@ +@@ -563,7 +642,7 @@ for (int i1 = 0; i1 < k; ++i1) { for (int j1 = 0; j1 < l; ++j1) { @@ -148,7 +167,7 @@ } } -@@ -573,19 +633,29 @@ +@@ -573,19 +652,29 @@ @Nullable Packet nextUpdatePacket(MapId mapId) { MapItemSavedData.MapPatch worldmap_c;