Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-11-15 04:20:04 +01:00
5730a94208
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: 2b4582fb SPIGOT-5916: getLastColors does not work with the rgb colors CraftBukkit Changes: f7707086d SPIGOT-7299: Fix indirect/anvil damage events and minor improvements
62 Zeilen
2.8 KiB
Diff
62 Zeilen
2.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Riley Park <riley.park@meino.net>
|
|
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 b731ac4f6cd82d8476e4040a2204f58b0f63a0d3..84ea952cdee1eaec5572641e09fdd85930ddeb47 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}.
|
|
*
|