From b3f290d8779705c2125fcf624f663acc08d29f0c 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) --- ...ncy-issue-with-empty-map-items-in-CB.patch | 31 +++++++++++++++++++ ...item-frames-performance-and-bug-fixe.patch | 13 -------- 2 files changed, 31 insertions(+), 13 deletions(-) create mode 100644 patches/server/Fix-incosistency-issue-with-empty-map-items-in-CB.patch diff --git a/patches/server/Fix-incosistency-issue-with-empty-map-items-in-CB.patch b/patches/server/Fix-incosistency-issue-with-empty-map-items-in-CB.patch new file mode 100644 index 0000000000..ac05702e63 --- /dev/null +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/net/minecraft/world/item/MapItem.java ++++ b/src/main/java/net/minecraft/world/item/MapItem.java +@@ -0,0 +0,0 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java +@@ -0,0 +0,0 @@ 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; + } + diff --git a/patches/server/Improve-Maps-in-item-frames-performance-and-bug-fixe.patch b/patches/server/Improve-Maps-in-item-frames-performance-and-bug-fixe.patch index 5179a1f4f2..c45a19bd95 100644 --- a/patches/server/Improve-Maps-in-item-frames-performance-and-bug-fixe.patch +++ b/patches/server/Improve-Maps-in-item-frames-performance-and-bug-fixe.patch @@ -59,19 +59,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/src/main/java/net/minecraft/world/item/MapItem.java -+++ b/src/main/java/net/minecraft/world/item/MapItem.java -@@ -0,0 +0,0 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java