From 8e78124e4676ed50f1ca694b2d05fcbe2c7b25e8 Mon Sep 17 00:00:00 2001 From: Aikar Date: Wed, 26 Jul 2017 23:40:49 -0400 Subject: [PATCH] Implement ensureServerConversions API This will take a Bukkit ItemStack and run it through any conversions a server process would perform on it, to ensure it meets latest minecraft expectations. --- .../0063-ensureServerConversions-API.patch | 65 +++++++++++++++++++ ...mplement-ensureServerConversions-API.patch | 27 ++++++++ 2 files changed, 92 insertions(+) create mode 100644 Spigot-API-Patches/0063-ensureServerConversions-API.patch create mode 100644 Spigot-Server-Patches/0226-Implement-ensureServerConversions-API.patch diff --git a/Spigot-API-Patches/0063-ensureServerConversions-API.patch b/Spigot-API-Patches/0063-ensureServerConversions-API.patch new file mode 100644 index 000000000..c030f1d2a --- /dev/null +++ b/Spigot-API-Patches/0063-ensureServerConversions-API.patch @@ -0,0 +1,65 @@ +From 4b1f37248bc27055112cfa172fa773dca45fbb47 Mon Sep 17 00:00:00 2001 +From: Aikar +Date: Wed, 4 May 2016 23:55:48 -0400 +Subject: [PATCH] ensureServerConversions API + +This will take a Bukkit ItemStack and run it through any conversions a server process would perform on it, +to ensure it meets latest minecraft expectations. + +diff --git a/src/main/java/org/bukkit/inventory/ItemFactory.java b/src/main/java/org/bukkit/inventory/ItemFactory.java +index 52a8d4d8..99b90629 100644 +--- a/src/main/java/org/bukkit/inventory/ItemFactory.java ++++ b/src/main/java/org/bukkit/inventory/ItemFactory.java +@@ -121,4 +121,17 @@ public interface ItemFactory { + * @return the default color for leather armor + */ + Color getDefaultLeatherColor(); ++ ++ // Paper start ++ /** ++ * Minecart updates are converting simple item stacks into more complex NBT oriented Item Stacks. ++ * ++ * Use this method to to ensure any desired data conversions are processed. ++ * The input itemstack will not be the same as the returned itemstack. ++ * ++ * @param item The item to process conversions on ++ * @return A potentially Data Converted ItemStack ++ */ ++ ItemStack ensureServerConversions(ItemStack item); ++ // Paper end + } +diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java +index 188ae6d7..6bb19b9d 100644 +--- a/src/main/java/org/bukkit/inventory/ItemStack.java ++++ b/src/main/java/org/bukkit/inventory/ItemStack.java +@@ -556,7 +556,7 @@ public class ItemStack implements Cloneable, ConfigurationSerializable { + } + } + +- return result; ++ return result.ensureServerConversions(); // Paper + } + + /** +@@ -608,4 +608,18 @@ public class ItemStack implements Cloneable, ConfigurationSerializable { + + return true; + } ++ ++ // Paper start ++ /** ++ * Minecart updates are converting simple item stacks into more complex NBT oriented Item Stacks. ++ * ++ * Use this method to to ensure any desired data conversions are processed. ++ * The input itemstack will not be the same as the returned itemstack. ++ * ++ * @return A potentially Data Converted ItemStack ++ */ ++ public ItemStack ensureServerConversions() { ++ return Bukkit.getServer().getItemFactory().ensureServerConversions(this); ++ } ++ // Paper end + } +-- +2.13.0 + diff --git a/Spigot-Server-Patches/0226-Implement-ensureServerConversions-API.patch b/Spigot-Server-Patches/0226-Implement-ensureServerConversions-API.patch new file mode 100644 index 000000000..3f2089e7b --- /dev/null +++ b/Spigot-Server-Patches/0226-Implement-ensureServerConversions-API.patch @@ -0,0 +1,27 @@ +From ef7d3ffd857e70a79c59225f4629cd35b04ef9fb Mon Sep 17 00:00:00 2001 +From: Aikar +Date: Wed, 4 May 2016 22:43:12 -0400 +Subject: [PATCH] Implement ensureServerConversions API + +This will take a Bukkit ItemStack and run it through any conversions a server process would perform on it, +to ensure it meets latest minecraft expectations. + +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java +index 49ebad22e..eb6987338 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java +@@ -194,4 +194,11 @@ public final class CraftItemFactory implements ItemFactory { + public Color getDefaultLeatherColor() { + return DEFAULT_LEATHER_COLOR; + } ++ ++ // Paper start ++ @Override ++ public ItemStack ensureServerConversions(ItemStack item) { ++ return CraftItemStack.asCraftMirror(CraftItemStack.asNMSCopy(item)); ++ } ++ // Paper end + } +-- +2.13.0 +