mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-01 08:20:51 +01:00
3e90a19183
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 304e83eb PR-1002: Improve documentation and implementation of getMaxStackSize e8215ea2 SPIGOT-7638: Library loader does not seem to resolve every dependency 79c595c0 SPIGOT-7637: Bad logic in checking nullability of AttributeModifier slots CraftBukkit Changes: 91b1fc3f1 SPIGOT-7644: Fix ItemMeta#getAsString 4e77a81e1 SPIGOT-7615: PlayerLeashEntityEvent cancelled eats lead 996f660f3 Do not remove leash knot if leasing to an existing leash knot gets cancelled f70367d42 SPIGOT-7643: Fix inverted leash event cancelled usage and remove leash knot if no entity gets leashed 7ddb48294 SPIGOT-7640: Abnormal jumping height of wind charge 080c8711e SPIGOT-7639: Incoming plugin channels not working ad549847e Open a direct connection instead of pinging mojang server to check if it is reachable 38e2926c5 SPIGOT-7365: DamageCause blocked by shield should trigger invulnerableTime
62 lines
2.8 KiB
Diff
62 lines
2.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Riley Park <rileysebastianpark@gmail.com>
|
|
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 04ff6579282708c48edee419381c698707fe0a3b..351f5c0feec38377fccf09bfc1cef2df88fc2dcd 100644
|
|
--- a/src/main/java/org/bukkit/inventory/ItemStack.java
|
|
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java
|
|
@@ -561,6 +561,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}.
|
|
*
|