From 6855505490ca1b107d74412f0706950a0fc6c934 Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Sun, 1 Aug 2021 16:55:25 +0100 Subject: [PATCH] Fix some inconsistency issues with empty map items (#6304) --- ...item-frames-performance-and-bug-fixe.patch | 13 -------- ...ncy-issue-with-empty-map-items-in-CB.patch | 31 +++++++++++++++++++ 2 files changed, 31 insertions(+), 13 deletions(-) create mode 100644 patches/server/0732-Fix-incosistency-issue-with-empty-map-items-in-CB.patch diff --git a/patches/server/0090-Improve-Maps-in-item-frames-performance-and-bug-fixe.patch b/patches/server/0090-Improve-Maps-in-item-frames-performance-and-bug-fixe.patch index 1999c74831..f876617b3d 100644 --- a/patches/server/0090-Improve-Maps-in-item-frames-performance-and-bug-fixe.patch +++ b/patches/server/0090-Improve-Maps-in-item-frames-performance-and-bug-fixe.patch @@ -59,19 +59,6 @@ index 484b1bf43b897c5ffe47baa340957e3293c7bf92..928595ff46287e92759bbf0ef3d64d4a return entityitem; } -diff --git a/src/main/java/net/minecraft/world/item/MapItem.java b/src/main/java/net/minecraft/world/item/MapItem.java -index 2ac84599cd9c71c1a32d70e447b014dc6711cda7..7d7acad622a3c04163308434b8a3cfd877039ad1 100644 ---- a/src/main/java/net/minecraft/world/item/MapItem.java -+++ b/src/main/java/net/minecraft/world/item/MapItem.java -@@ -58,7 +58,7 @@ public class MapItem extends ComplexItem { - - @Nullable - public static MapItemSavedData getSavedData(@Nullable Integer id, Level world) { -- return id == null ? null : world.getMapData(MapItem.makeKey(id)); -+ return id == null || id < 0 ? null : world.getMapData(MapItem.makeKey(id)); // Paper - map ids under 0 are invalid - } - - @Nullable diff --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 index 6859fafa42527d45366018f737c19e6c3777d152..15c6f9d1c43fbedac70526a84a010be83b4cae86 100644 --- a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java diff --git a/patches/server/0732-Fix-incosistency-issue-with-empty-map-items-in-CB.patch b/patches/server/0732-Fix-incosistency-issue-with-empty-map-items-in-CB.patch new file mode 100644 index 0000000000..70e9fed431 --- /dev/null +++ b/patches/server/0732-Fix-incosistency-issue-with-empty-map-items-in-CB.patch @@ -0,0 +1,31 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Shane Freeder +Date: Sun, 1 Aug 2021 09:49:06 +0100 +Subject: [PATCH] Fix incosistency issue with empty map items in CB + + +diff --git a/src/main/java/net/minecraft/world/item/MapItem.java b/src/main/java/net/minecraft/world/item/MapItem.java +index 24700c7e6a32cc30c97dccc21c5f3e3e6b6438e5..4365d8bd4b5c63c1d112b3cd68b6c7163aa56600 100644 +--- a/src/main/java/net/minecraft/world/item/MapItem.java ++++ b/src/main/java/net/minecraft/world/item/MapItem.java +@@ -72,7 +72,7 @@ public class MapItem extends ComplexItem { + public static Integer getMapId(ItemStack stack) { + CompoundTag nbttagcompound = stack.getTag(); + +- return nbttagcompound != null && nbttagcompound.contains("map", 99) ? nbttagcompound.getInt("map") : -1; // CraftBukkit - make new maps for no tag ++ return nbttagcompound != null && nbttagcompound.contains("map", 99) ? nbttagcompound.getInt("map") : null; // CraftBukkit - make new maps for no tag // Paper - don't return invalid ID + } + + public static int createNewSavedData(Level world, int x, int z, int scale, boolean showIcons, boolean unlimitedTracking, ResourceKey dimension) { +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java +index 96ab7d53f4e089c7666872f9fd0f09283259a726..8e634ccb91b58000412c572903e57d30ddb2caba 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java +@@ -144,6 +144,7 @@ class CraftMetaMap extends CraftMetaItem implements MapMeta { + + @Override + public int getMapId() { ++ Preconditions.checkState(this.hasMapView(), "Item does not have map associated - check hasMapView() first!"); // Paper - more friendly message + return this.mapId; + } +