dc684c60d1
The new behavior of disconnect to block the current thread until the disconnect succeeded is better than throwing it off to happen at some point
44 Zeilen
2.2 KiB
Diff
44 Zeilen
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 6e9a3b6a1595a1731ca8187d2610c840337a12ed..8b5eabea1a0926c22b58ef8761caee3a06aa5ee0 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
@@ -1662,13 +1662,24 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
|
@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 net.minecraft.world.level.saveddata.SavedData existing = storage.cache.get(id.key());
|
|
+ if (existing == null && !storage.cache.containsKey(id.key())) {
|
|
+ final MapItemSavedData worldmap = (MapItemSavedData) this.getServer().overworld().getDataStorage().get(MapItemSavedData.factory(), id.key());
|
|
+ storage.cache.put(id.key(), worldmap);
|
|
+ if (worldmap != null) {
|
|
+ worldmap.id = id;
|
|
+ new MapInitializeEvent(worldmap.mapView).callEvent();
|
|
+ return worldmap;
|
|
+ }
|
|
+ } else if (existing instanceof MapItemSavedData mapItemSavedData) {
|
|
+ mapItemSavedData.id = id;
|
|
}
|
|
- return worldmap;
|
|
- // CraftBukkit end
|
|
+
|
|
+ return existing instanceof MapItemSavedData data ? data : null;
|
|
+ // Paper end - Call missing map initialize event and set id
|
|
}
|
|
|
|
@Override
|