From 95909f29781958a64525808487e05c32481da262 Mon Sep 17 00:00:00 2001 From: Pim van der Loos Date: Sun, 28 Mar 2021 10:38:34 +0200 Subject: [PATCH] Avoid accidentally deleting items - Fixed not checking return value when trying to give players the result of crafting/upgrading an AE before clearing the items. Thanks, @Tanguygab for the heads-up! --- .../pim16aap2/armoredElytra/handlers/ArmoredElytraHandler.java | 3 +++ .../armoredElytra/handlers/NetheriteUpgradeListener.java | 3 ++- .../armoredElytra/handlers/SmithingTableCraftHandler.java | 3 ++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/nl/pim16aap2/armoredElytra/handlers/ArmoredElytraHandler.java b/src/main/java/nl/pim16aap2/armoredElytra/handlers/ArmoredElytraHandler.java index 0d34d5c..580b89b 100644 --- a/src/main/java/nl/pim16aap2/armoredElytra/handlers/ArmoredElytraHandler.java +++ b/src/main/java/nl/pim16aap2/armoredElytra/handlers/ArmoredElytraHandler.java @@ -6,6 +6,8 @@ import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import javax.annotation.CheckReturnValue; + /** * Base class for the anvil / smithing table handlers. * @@ -57,6 +59,7 @@ abstract class ArmoredElytraHandler * cursor instead. * @return True if the item could be given to the player, otherwise false (e.g. when their inventory is full). */ + @CheckReturnValue protected boolean giveItemToPlayer(final Player player, final ItemStack item, final boolean direct) { if (direct) diff --git a/src/main/java/nl/pim16aap2/armoredElytra/handlers/NetheriteUpgradeListener.java b/src/main/java/nl/pim16aap2/armoredElytra/handlers/NetheriteUpgradeListener.java index 862dc4e..0c011f4 100644 --- a/src/main/java/nl/pim16aap2/armoredElytra/handlers/NetheriteUpgradeListener.java +++ b/src/main/java/nl/pim16aap2/armoredElytra/handlers/NetheriteUpgradeListener.java @@ -52,7 +52,8 @@ public class NetheriteUpgradeListener extends SmithingTableListener SmithingInventory smithingInventory = (SmithingInventory) event.getInventory(); Player player = (Player) event.getWhoClicked(); - giveItemToPlayer(player, smithingInventory.getItem(2), event.isShiftClick()); + if (!giveItemToPlayer(player, smithingInventory.getItem(2), event.isShiftClick())) + return; smithingInventory.clear(); } } diff --git a/src/main/java/nl/pim16aap2/armoredElytra/handlers/SmithingTableCraftHandler.java b/src/main/java/nl/pim16aap2/armoredElytra/handlers/SmithingTableCraftHandler.java index 3770ad3..46153cb 100644 --- a/src/main/java/nl/pim16aap2/armoredElytra/handlers/SmithingTableCraftHandler.java +++ b/src/main/java/nl/pim16aap2/armoredElytra/handlers/SmithingTableCraftHandler.java @@ -46,7 +46,8 @@ public class SmithingTableCraftHandler extends SmithingTableListener final ItemStack result = smithingInventory.getItem(2); // This cast may look unchecked, but it was checked by isSmithingTableEvent already. - giveItemToPlayer((Player) e.getWhoClicked(), result, e.isShiftClick()); + if (!giveItemToPlayer((Player) e.getWhoClicked(), result, e.isShiftClick())) + return; smithingInventory.clear(); } }