aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0287-ItemStack-editMeta.patch
diff options
context:
space:
mode:
authorJake Potrebic <[email protected]>2023-06-12 16:51:45 -0700
committerGitHub <[email protected]>2023-06-12 16:51:45 -0700
commitc287e921a96438964f32f3c4e394d6809e0d06fa (patch)
treefcc826670454d8a8f5547838414583ce5f1df02d /patches/api/0287-ItemStack-editMeta.patch
parentb48e2e352e21c56d6a9e90bb8d9e548d3658a691 (diff)
downloadPaper-c287e921a96438964f32f3c4e394d6809e0d06fa.tar.gz
Paper-c287e921a96438964f32f3c4e394d6809e0d06fa.zip
Updated Upstream (Bukkit/CraftBukkit/Spigot) (#9301)1.20
Diffstat (limited to 'patches/api/0287-ItemStack-editMeta.patch')
-rw-r--r--patches/api/0287-ItemStack-editMeta.patch61
1 files changed, 61 insertions, 0 deletions
diff --git a/patches/api/0287-ItemStack-editMeta.patch b/patches/api/0287-ItemStack-editMeta.patch
new file mode 100644
index 0000000000..7893a035c9
--- /dev/null
+++ b/patches/api/0287-ItemStack-editMeta.patch
@@ -0,0 +1,61 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Riley Park <[email protected]>
+Date: Sun, 23 May 2021 05:04:28 -0700
+Subject: [PATCH] ItemStack#editMeta
+
+
+diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
+index 2d945516ec65ffe103479aea218b3002cc572dc1..f9faef1b73b5027a3d22e76a0b33b7c952f3ae08 100644
+--- a/src/main/java/org/bukkit/inventory/ItemStack.java
++++ b/src/main/java/org/bukkit/inventory/ItemStack.java
+@@ -547,6 +547,50 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
+ return result.ensureServerConversions(); // Paper
+ }
+
++ // Paper start
++ /**
++ * Edits the {@link ItemMeta} of this stack.
++ * <p>
++ * The {@link java.util.function.Consumer} must only interact
++ * with this stack's {@link ItemMeta} through the provided {@link ItemMeta} instance.
++ * Calling this method or any other meta-related method of the {@link ItemStack} class
++ * (such as {@link #getItemMeta()}, {@link #addItemFlags(ItemFlag...)}, {@link #lore()}, etc.)
++ * from inside the consumer is disallowed and will produce undefined results or exceptions.
++ * </p>
++ *
++ * @param consumer the meta consumer
++ * @return {@code true} if the edit was successful, {@code false} otherwise
++ */
++ public boolean editMeta(final @NotNull java.util.function.Consumer<? super ItemMeta> consumer) {
++ return editMeta(ItemMeta.class, consumer);
++ }
++
++ /**
++ * Edits the {@link ItemMeta} of this stack if the meta is of the specified type.
++ * <p>
++ * The {@link java.util.function.Consumer} must only interact
++ * with this stack's {@link ItemMeta} through the provided {@link ItemMeta} instance.
++ * Calling this method or any other meta-related method of the {@link ItemStack} class
++ * (such as {@link #getItemMeta()}, {@link #addItemFlags(ItemFlag...)}, {@link #lore()}, etc.)
++ * from inside the consumer is disallowed and will produce undefined results or exceptions.
++ * </p>
++ *
++ * @param metaClass the type of meta to edit
++ * @param consumer the meta consumer
++ * @param <M> the meta type
++ * @return {@code true} if the edit was successful, {@code false} otherwise
++ */
++ public <M extends ItemMeta> boolean editMeta(final @NotNull Class<M> metaClass, final @NotNull java.util.function.Consumer<@NotNull ? super M> consumer) {
++ final @Nullable ItemMeta meta = this.getItemMeta();
++ if (metaClass.isInstance(meta)) {
++ consumer.accept((M) meta);
++ this.setItemMeta(meta);
++ return true;
++ }
++ return false;
++ }
++ // Paper end
++
+ /**
+ * Get a copy of this ItemStack's {@link ItemMeta}.
+ *