mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-24 08:06:41 +01:00
ItemStack API additions for quantity/flags/lore
This commit is contained in:
parent
f0cb089a24
commit
ff572760c4
1 changed files with 166 additions and 0 deletions
|
@ -0,0 +1,166 @@
|
||||||
|
From 79f36b1b98d9b888c633ef39dc73b532c89691b9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Aikar <aikar@aikar.co>
|
||||||
|
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 82240129..bfd6307f 100644
|
||||||
|
--- a/src/main/java/org/bukkit/inventory/ItemStack.java
|
||||||
|
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java
|
||||||
|
@@ -2,7 +2,9 @@ package org.bukkit.inventory;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
+import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
+import java.util.Set;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.Validate;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
@@ -13,6 +15,8 @@ import org.bukkit.enchantments.Enchantment;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
import org.bukkit.material.MaterialData;
|
||||||
|
|
||||||
|
+import javax.annotation.Nullable;
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Represents a stack of items
|
||||||
|
*/
|
||||||
|
@@ -641,5 +645,133 @@ public class ItemStack implements Cloneable, ConfigurationSerializable {
|
||||||
|
// Requires access to NMS
|
||||||
|
return ensureServerConversions().getMaxItemUseDuration();
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Clones the itemstack and returns it a single quantity.
|
||||||
|
+ * @return The new itemstack with 1 quantity
|
||||||
|
+ */
|
||||||
|
+ 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
|
||||||
|
+ */
|
||||||
|
+ 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)
|
||||||
|
+ */
|
||||||
|
+ 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)
|
||||||
|
+ */
|
||||||
|
+ 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)
|
||||||
|
+ */
|
||||||
|
+ 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)
|
||||||
|
+ */
|
||||||
|
+ 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
|
||||||
|
+ */
|
||||||
|
+ @Nullable
|
||||||
|
+ public List<String> getLore() {
|
||||||
|
+ if (!hasItemMeta()) {
|
||||||
|
+ return null;
|
||||||
|
+ }
|
||||||
|
+ ItemMeta itemMeta = getItemMeta();
|
||||||
|
+ if (!itemMeta.hasLore()) {
|
||||||
|
+ return null;
|
||||||
|
+ }
|
||||||
|
+ return itemMeta.getLore();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Sets the lore for this item.
|
||||||
|
+ * Removes lore when given null.
|
||||||
|
+ *
|
||||||
|
+ * @param lore the lore that will be set
|
||||||
|
+ */
|
||||||
|
+ public void setLore(List<String> lore) {
|
||||||
|
+ ItemMeta itemMeta = getItemMeta();
|
||||||
|
+ itemMeta.setLore(lore);
|
||||||
|
+ 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(ItemFlag... itemFlags) {
|
||||||
|
+ ItemMeta itemMeta = getItemMeta();
|
||||||
|
+ 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(ItemFlag... itemFlags) {
|
||||||
|
+ ItemMeta itemMeta = getItemMeta();
|
||||||
|
+ itemMeta.removeItemFlags(itemFlags);
|
||||||
|
+ setItemMeta(itemMeta);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Get current set itemFlags. The collection returned is unmodifiable.
|
||||||
|
+ *
|
||||||
|
+ * @return A set of all itemFlags set
|
||||||
|
+ */
|
||||||
|
+ public Set<ItemFlag> getItemFlags() {
|
||||||
|
+ ItemMeta itemMeta = getItemMeta();
|
||||||
|
+ 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(ItemFlag flag) {
|
||||||
|
+ ItemMeta itemMeta = getItemMeta();
|
||||||
|
+ return itemMeta.hasItemFlag(flag);
|
||||||
|
+ }
|
||||||
|
// Paper end
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
Loading…
Reference in a new issue