From b7bb062734e106276743196800bac7ac9e203dee Mon Sep 17 00:00:00 2001 From: Aeltumn Date: Mon, 28 Aug 2023 13:41:09 +0200 Subject: [PATCH] Allow proper checking of empty item stacks This adds a method to check if an item stack is empty or not. This mirrors vanilla's implementation of the same method. --- .../java/org/bukkit/inventory/ItemStack.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/paper-api/src/main/java/org/bukkit/inventory/ItemStack.java b/paper-api/src/main/java/org/bukkit/inventory/ItemStack.java index 6393e5249b..bcead77677 100644 --- a/paper-api/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/paper-api/src/main/java/org/bukkit/inventory/ItemStack.java @@ -1104,5 +1104,24 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat public @NotNull ItemStack damage(int amount, @NotNull org.bukkit.entity.LivingEntity livingEntity) { return livingEntity.damageItemStack(this, amount); } + + /** + * Returns an empty item stack, consists of an air material and a stack size of 0. + * + * Any item stack with a material of air or a stack size of 0 is seen + * as being empty by {@link ItemStack#isEmpty}. + */ + @NotNull + public static ItemStack empty() { + return new ItemStack(); + } + + /** + * Returns whether this item stack is empty and contains no item. This means + * it is either air or the stack has a size of 0. + */ + public boolean isEmpty() { + return type.isAir() || amount <= 0; + } // Paper end }