From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Warrior <50800980+Warriorrrr@users.noreply.github.com> Date: Sun, 24 Sep 2023 18:35:28 +0200 Subject: [PATCH] Fix missing map initialize event call == AT == public net.minecraft.world.level.storage.DimensionDataStorage readSavedData(Ljava/util/function/Function;Lnet/minecraft/util/datafix/DataFixTypes;Ljava/lang/String;)Lnet/minecraft/world/level/saveddata/SavedData; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java index 48b93220fb7429cc4ce498cf9b862b8e6bee70d4..1197788c4e0cc8740e69cfcc36d731bf6bc9fcb1 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1707,13 +1707,29 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @Nullable @Override public MapItemSavedData getMapData(MapId id) { - // CraftBukkit start - MapItemSavedData worldmap = (MapItemSavedData) this.getServer().overworld().getDataStorage().get(MapItemSavedData.factory(), id.key()); - if (worldmap != null) { - worldmap.id = id; + // Paper start - Call missing map initialize event and set id + final DimensionDataStorage storage = this.getServer().overworld().getDataStorage(); + + final Optional<net.minecraft.world.level.saveddata.SavedData> cacheEntry = storage.cache.get(id.key()); + if (cacheEntry == null) { // Cache did not contain, try to load and may init + final MapItemSavedData worldmap = storage.get(MapItemSavedData.factory(), id.key()); // get populates the cache + if (worldmap != null) { // map was read, init it and return + worldmap.id = id; + new MapInitializeEvent(worldmap.mapView).callEvent(); + return worldmap; + } + + return null; // Map does not exist, reading failed. } - return worldmap; - // CraftBukkit end + + // Cache entry exists, update it with the id ref and return. + if (cacheEntry.orElse(null) instanceof final MapItemSavedData mapItemSavedData) { + mapItemSavedData.id = id; + return mapItemSavedData; + } + + return null; + // Paper end - Call missing map initialize event and set id } @Override