From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Aeltumn <daniel@goossens.ch>
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 6195ac25e7a46542659a263c85f7adac745c2ce4..7cecb04de7d55dcdec1fa3dd255c844e92b1abdb 100644
--- a/src/main/java/org/bukkit/inventory/ItemStack.java
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java
@@ -1001,5 +1001,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
 }
