From 5617a2829162e34834a695dc452514bf4e6d7279 Mon Sep 17 00:00:00 2001 From: Aikar <aikar@aikar.co> 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. --- .../ensureServerConversions-API.patch | 63 +++++++++++++++++++ ...mplement-ensureServerConversions-API.patch | 25 ++++++++ 2 files changed, 88 insertions(+) create mode 100644 Spigot-API-Patches/ensureServerConversions-API.patch create mode 100644 Spigot-Server-Patches/Implement-ensureServerConversions-API.patch diff --git a/Spigot-API-Patches/ensureServerConversions-API.patch b/Spigot-API-Patches/ensureServerConversions-API.patch new file mode 100644 index 0000000000..14945849c4 --- /dev/null +++ b/Spigot-API-Patches/ensureServerConversions-API.patch @@ -0,0 +1,63 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Aikar <aikar@aikar.co> +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 +@@ -0,0 +0,0 @@ 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 +@@ -0,0 +0,0 @@ public class ItemStack implements Cloneable, ConfigurationSerializable { + } + } + +- return result; ++ return result.ensureServerConversions(); // Paper + } + + /** +@@ -0,0 +0,0 @@ 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 + } +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Implement-ensureServerConversions-API.patch b/Spigot-Server-Patches/Implement-ensureServerConversions-API.patch new file mode 100644 index 0000000000..9c480cefc7 --- /dev/null +++ b/Spigot-Server-Patches/Implement-ensureServerConversions-API.patch @@ -0,0 +1,25 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Aikar <aikar@aikar.co> +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 +@@ -0,0 +0,0 @@ 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 + } +-- \ No newline at end of file