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 e39c9167bd66c528c09b256f15cc6c58666f0ca0..773780811a24aa1c1591257a993e30f2d99da436 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/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 }