@@ -1325,7 +1325,7 @@ index 763b315b1d761bc3bd82d9b847ed3f64fd5ce991..841aa55043f354d5058992d43645bf9e
13251325 this.usedAuxIds.put("map", i);
13261326 this.setDirty();
13271327diff --git a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java
1328- index e26f6215ca42885cb0635a3183a8df93a924ba7f..5d01e9c124047ab89be5727ec4ecd044f76c202e 100644
1328+ index e26f6215ca42885cb0635a3183a8df93a924ba7f..6e22cf6b41bebc93db6ce43e1f0d634017b0f591 100644
13291329--- a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java
13301330+++ b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java
13311331@@ -12,6 +12,7 @@ import java.util.List;
@@ -1344,6 +1344,42 @@ index e26f6215ca42885cb0635a3183a8df93a924ba7f..5d01e9c124047ab89be5727ec4ecd044
13441344 public final List<MapItemSavedData.HoldingPlayer> carriedBy = Lists.newArrayList();
13451345 public final Map<Player, MapItemSavedData.HoldingPlayer> carriedByPlayers = Maps.newHashMap();
13461346 private final Map<String, MapBanner> bannerMarkers = Maps.newHashMap();
1347+ @@ -262,7 +264,7 @@ public class MapItemSavedData extends SavedData {
1348+ return nbt;
1349+ }
1350+
1351+ - public MapItemSavedData locked() {
1352+ + public synchronized MapItemSavedData locked() { // ShreddedPaper - thread-safe
1353+ MapItemSavedData worldmap = new MapItemSavedData(this.centerX, this.centerZ, this.scale, this.trackingPosition, this.unlimitedTracking, true, this.dimension);
1354+
1355+ worldmap.bannerMarkers.putAll(this.bannerMarkers);
1356+ @@ -285,7 +287,7 @@ public class MapItemSavedData extends SavedData {
1357+ };
1358+ }
1359+
1360+ - public void tickCarriedBy(Player player, ItemStack stack) {
1361+ + public synchronized void tickCarriedBy(Player player, ItemStack stack) { // ShreddedPaper - thread-safe
1362+ if (!this.carriedByPlayers.containsKey(player)) {
1363+ MapItemSavedData.HoldingPlayer worldmap_worldmaphumantracker = new MapItemSavedData.HoldingPlayer(player);
1364+
1365+ @@ -438,7 +440,7 @@ public class MapItemSavedData extends SavedData {
1366+ }
1367+
1368+ @Nullable
1369+ - public Packet<?> getUpdatePacket(MapId mapId, Player player) {
1370+ + public synchronized Packet<?> getUpdatePacket(MapId mapId, Player player) { // ShreddedPaper - thread-safe
1371+ MapItemSavedData.HoldingPlayer worldmap_worldmaphumantracker = (MapItemSavedData.HoldingPlayer) this.carriedByPlayers.get(player);
1372+
1373+ return worldmap_worldmaphumantracker == null ? null : worldmap_worldmaphumantracker.nextUpdatePacket(mapId);
1374+ @@ -562,7 +564,7 @@ public class MapItemSavedData extends SavedData {
1375+ return true;
1376+ }
1377+
1378+ - public void addClientSideDecorations(List<MapDecoration> decorations) {
1379+ + public synchronized void addClientSideDecorations(List<MapDecoration> decorations) { // ShreddedPaper - thread-safe
1380+ this.decorations.clear();
1381+ this.trackedDecorationCount = 0;
1382+
13471383diff --git a/src/main/java/net/minecraft/world/level/storage/DimensionDataStorage.java b/src/main/java/net/minecraft/world/level/storage/DimensionDataStorage.java
13481384index 6e23e69abd56eeda3b52a22019e1b74ae10682e7..f3d1dfb2cca74ecfc123f1c06a20462a1295d60f 100644
13491385--- a/src/main/java/net/minecraft/world/level/storage/DimensionDataStorage.java
0 commit comments