From 0000000000000000000000000000000000000000 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. diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java index 5f8b7eb48561e9e81e03be3b09c47becc585513a..d84f1fa4c9240f579eb02f9e7a76dbcb080ea81a 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java @@ -1077,5 +1077,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 }