aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0436-Allow-proper-checking-of-empty-item-stacks.patch
blob: 716a6140d93e5d906bed6871f835f9782fafeb9a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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 845037909658884167136955a02b99af0040fa9c..c3872213acc75d913580002cf70c2abb4ec69ca0 100644
--- a/src/main/java/org/bukkit/inventory/ItemStack.java
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java
@@ -996,5 +996,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
 }