aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0113-ItemStack-API-additions-for-quantity-flags-lore.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/api/0113-ItemStack-API-additions-for-quantity-flags-lore.patch')
-rw-r--r--patches/api/0113-ItemStack-API-additions-for-quantity-flags-lore.patch196
1 files changed, 196 insertions, 0 deletions
diff --git a/patches/api/0113-ItemStack-API-additions-for-quantity-flags-lore.patch b/patches/api/0113-ItemStack-API-additions-for-quantity-flags-lore.patch
new file mode 100644
index 0000000000..0bfbef94ea
--- /dev/null
+++ b/patches/api/0113-ItemStack-API-additions-for-quantity-flags-lore.patch
@@ -0,0 +1,196 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Aikar <[email protected]>
+Date: Fri, 22 Jun 2018 22:59:18 -0400
+Subject: [PATCH] ItemStack API additions for quantity/flags/lore
+
+
+diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
+index f908c11ece7b3d1a52e21540999f36796237d590..d125d29759167996a90b7b69d92d944e80af22ab 100644
+--- a/src/main/java/org/bukkit/inventory/ItemStack.java
++++ b/src/main/java/org/bukkit/inventory/ItemStack.java
+@@ -686,5 +686,185 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
+ // Requires access to NMS
+ return ensureServerConversions().getMaxItemUseDuration(entity);
+ }
++
++ /**
++ * Clones the itemstack and returns it a single quantity.
++ * @return The new itemstack with 1 quantity
++ */
++ @NotNull
++ public ItemStack asOne() {
++ return asQuantity(1);
++ }
++
++ /**
++ * Clones the itemstack and returns it as the specified quantity
++ * @param qty The quantity of the cloned item
++ * @return The new itemstack with specified quantity
++ */
++ @NotNull
++ public ItemStack asQuantity(int qty) {
++ ItemStack clone = clone();
++ clone.setAmount(qty);
++ return clone;
++ }
++
++ /**
++ * Adds 1 to this itemstack. Will not go over the items max stack size.
++ * @return The same item (not a clone)
++ */
++ @NotNull
++ public ItemStack add() {
++ return add(1);
++ }
++
++ /**
++ * Adds quantity to this itemstack. Will not go over the items max stack size.
++ *
++ * @param qty The amount to add
++ * @return The same item (not a clone)
++ */
++ @NotNull
++ public ItemStack add(int qty) {
++ setAmount(Math.min(getMaxStackSize(), getAmount() + qty));
++ return this;
++ }
++
++ /**
++ * Subtracts 1 to this itemstack. Going to 0 or less will invalidate the item.
++ * @return The same item (not a clone)
++ */
++ @NotNull
++ public ItemStack subtract() {
++ return subtract(1);
++ }
++
++ /**
++ * Subtracts quantity to this itemstack. Going to 0 or less will invalidate the item.
++ *
++ * @param qty The amount to add
++ * @return The same item (not a clone)
++ */
++ @NotNull
++ public ItemStack subtract(int qty) {
++ setAmount(Math.max(0, getAmount() - qty));
++ return this;
++ }
++
++ /**
++ * If the item has lore, returns it, else it will return null
++ * @return The lore, or null
++ * @deprecated in favor of {@link #lore()}
++ */
++ @Deprecated
++ public @Nullable java.util.List<String> getLore() {
++ if (!hasItemMeta()) {
++ return null;
++ }
++ ItemMeta itemMeta = getItemMeta();
++ if (!itemMeta.hasLore()) {
++ return null;
++ }
++ return itemMeta.getLore();
++ }
++
++ /**
++ * If the item has lore, returns it, else it will return null
++ * @return The lore, or null
++ */
++ public @Nullable java.util.List<net.kyori.adventure.text.Component> lore() {
++ if (!this.hasItemMeta()) {
++ return null;
++ }
++ final ItemMeta itemMeta = getItemMeta();
++ if (!itemMeta.hasLore()) {
++ return null;
++ }
++ return itemMeta.lore();
++ }
++
++ /**
++ * Sets the lore for this item.
++ * Removes lore when given null.
++ *
++ * @param lore the lore that will be set
++ * @deprecated in favour of {@link #lore(java.util.List)}
++ */
++ @Deprecated
++ public void setLore(@Nullable java.util.List<String> lore) {
++ ItemMeta itemMeta = getItemMeta();
++ if (itemMeta == null) {
++ throw new IllegalStateException("Cannot set lore on " + getType());
++ }
++ itemMeta.setLore(lore);
++ setItemMeta(itemMeta);
++ }
++
++ /**
++ * Sets the lore for this item.
++ * Removes lore when given null.
++ *
++ * @param lore the lore that will be set
++ */
++ public void lore(@Nullable java.util.List<? extends net.kyori.adventure.text.Component> lore) {
++ ItemMeta itemMeta = getItemMeta();
++ if (itemMeta == null) {
++ throw new IllegalStateException("Cannot set lore on " + getType());
++ }
++ itemMeta.lore(lore);
++ this.setItemMeta(itemMeta);
++ }
++
++ /**
++ * Set itemflags which should be ignored when rendering a ItemStack in the Client. This Method does silently ignore double set itemFlags.
++ *
++ * @param itemFlags The hideflags which shouldn't be rendered
++ */
++ public void addItemFlags(@NotNull ItemFlag... itemFlags) {
++ ItemMeta itemMeta = getItemMeta();
++ if (itemMeta == null) {
++ throw new IllegalStateException("Cannot add flags on " + getType());
++ }
++ itemMeta.addItemFlags(itemFlags);
++ setItemMeta(itemMeta);
++ }
++
++ /**
++ * Remove specific set of itemFlags. This tells the Client it should render it again. This Method does silently ignore double removed itemFlags.
++ *
++ * @param itemFlags Hideflags which should be removed
++ */
++ public void removeItemFlags(@NotNull ItemFlag... itemFlags) {
++ ItemMeta itemMeta = getItemMeta();
++ if (itemMeta == null) {
++ throw new IllegalStateException("Cannot remove flags on " + getType());
++ }
++ itemMeta.removeItemFlags(itemFlags);
++ setItemMeta(itemMeta);
++ }
++
++ /**
++ * Get current set itemFlags. The collection returned is unmodifiable.
++ *
++ * @return A set of all itemFlags set
++ */
++ @NotNull
++ public java.util.Set<ItemFlag> getItemFlags() {
++ ItemMeta itemMeta = getItemMeta();
++ if (itemMeta == null) {
++ return java.util.Collections.emptySet();
++ }
++ return itemMeta.getItemFlags();
++ }
++
++ /**
++ * Check if the specified flag is present on this item.
++ *
++ * @param flag the flag to check
++ * @return if it is present
++ */
++ public boolean hasItemFlag(@NotNull ItemFlag flag) {
++ ItemMeta itemMeta = getItemMeta();
++ return itemMeta != null && itemMeta.hasItemFlag(flag);
++ }
+ // Paper end
+ }