mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-18 12:48:53 +01:00
da9d110d5b
This patch does not appear to be doing anything useful, and may hide errors. Currently, the save logic does not run through this path either so it did not do anything. Additionally, properly implement support for handling RegionFileSizeException in Moonrise.
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 5770fa7a798c1c019bef27426f945f3cc0387a36..6923624f069c1aeb757386ef91d285769a2923a2 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
@@ -1701,13 +1701,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
|