From 6cc31024291a826bf11153eb39f05c4246c6c454 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> Date: Tue, 28 Aug 2018 23:04:06 -0400 Subject: [PATCH] Inventory#removeItemAnySlot --- .../java/org/bukkit/inventory/Inventory.java | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/paper-api/src/main/java/org/bukkit/inventory/Inventory.java b/paper-api/src/main/java/org/bukkit/inventory/Inventory.java index 5576a6a8df..f1a48eab1a 100644 --- a/paper-api/src/main/java/org/bukkit/inventory/Inventory.java +++ b/paper-api/src/main/java/org/bukkit/inventory/Inventory.java @@ -104,7 +104,37 @@ public interface Inventory extends Iterable { public HashMap addItem(@NotNull ItemStack... items) throws IllegalArgumentException; /** - * Removes the given ItemStacks from the inventory. + * Removes the given ItemStacks from the storage contents of the inventory. + * For removing ItemStacks from the inventories that have other content groups, + * like Player inventories, see {@link #removeItemAnySlot(ItemStack...)}. + *

+ * It will try to remove 'as much as possible' from the types and amounts + * you give as arguments. + *

+ * The returned HashMap contains what it couldn't remove, where the key is + * the index of the parameter, and the value is the ItemStack at that + * index of the varargs parameter. If all the given ItemStacks are + * removed, it will return an empty HashMap. + *

+ * It is known that in some implementations this method will also set the + * inputted argument amount to the number of that item not removed from + * slots. + * + * @param items The ItemStacks to remove + * @return A HashMap containing items that couldn't be removed. + * @throws IllegalArgumentException if items is null + * @see #removeItemAnySlot(ItemStack...) + */ + @NotNull + public HashMap removeItem(@NotNull ItemStack... items) throws IllegalArgumentException; + + // Paper start + /** + * Searches all possible inventory slots in order to remove the given ItemStacks. + *

+ * Similar to {@link Inventory#removeItem(ItemStack...)} in behavior, except this + * method will check all possible slots in the inventory, rather than just the main + * storage contents. *

* It will try to remove 'as much as possible' from the types and amounts * you give as arguments. @@ -123,7 +153,8 @@ public interface Inventory extends Iterable { * @throws IllegalArgumentException if items is null */ @NotNull - public HashMap removeItem(@NotNull ItemStack... items) throws IllegalArgumentException; + public HashMap removeItemAnySlot(@NotNull ItemStack... items) throws IllegalArgumentException; + // Paper end /** * Returns all ItemStacks from the inventory