mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-18 12:48:53 +01:00
747cac4f91
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing CraftBukkit Changes: c294e05d7 SPIGOT-7975: Fix issue with Pale Sapling growing c9f5a8fdf SPIGOT-7974: Fix Crash for Creaking Heart Block particle
48 lines
2.4 KiB
Diff
48 lines
2.4 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 9b4e3144b062007b936b3b444320646061cc0133..2a56e7846b3def7d1e9a2d5e473a6806a1acec28 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
@@ -1711,13 +1711,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
|