mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-30 04:02:50 +01:00
1281f4f552
This has been done to ensure that the shifts are not used until the world object is being constructed, which is before the global configuration is initialised. There also isn't any reason for these shifts to be global anyways.
44 lines
2.2 KiB
Diff
44 lines
2.2 KiB
Diff
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 1d44387ea8665f7bbf3da04a1dd882f586ff37ac..676087c3addd712939c865b39ddb5d9f0bc7ce25 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
@@ -2134,13 +2134,25 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
|
@Nullable
|
|
@Override
|
|
public MapItemSavedData getMapData(String id) {
|
|
- // CraftBukkit start
|
|
- MapItemSavedData worldmap = (MapItemSavedData) this.getServer().overworld().getDataStorage().get(MapItemSavedData.factory(), id);
|
|
- if (worldmap != null) {
|
|
- worldmap.id = id;
|
|
+ // Paper start - Call missing map initialize event & set id
|
|
+ final DimensionDataStorage storage = this.getServer().overworld().getDataStorage();
|
|
+
|
|
+ final net.minecraft.world.level.saveddata.SavedData existing = storage.cache.get(id);
|
|
+ if (existing == null && !storage.cache.containsKey(id)) {
|
|
+ final net.minecraft.world.level.saveddata.SavedData.Factory<MapItemSavedData> factory = MapItemSavedData.factory();
|
|
+ final MapItemSavedData map = storage.readSavedData(factory.deserializer(), factory.type(), id);
|
|
+ storage.cache.put(id, map);
|
|
+ if (map != null) {
|
|
+ map.id = id;
|
|
+ new MapInitializeEvent(map.mapView).callEvent();
|
|
+ return map;
|
|
+ }
|
|
+ } else if (existing instanceof MapItemSavedData mapItemSavedData) {
|
|
+ mapItemSavedData.id = id;
|
|
}
|
|
- return worldmap;
|
|
- // CraftBukkit end
|
|
+
|
|
+ return existing instanceof MapItemSavedData data ? data : null;
|
|
+ // Paper end
|
|
}
|
|
|
|
@Override
|