diff --git a/src/main/java/me/pulsi_/bankplus/bankSystem/BankUtils.java b/src/main/java/me/pulsi_/bankplus/bankSystem/BankUtils.java index 5ffe693..abd2936 100644 --- a/src/main/java/me/pulsi_/bankplus/bankSystem/BankUtils.java +++ b/src/main/java/me/pulsi_/bankplus/bankSystem/BankUtils.java @@ -18,6 +18,7 @@ import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.PlayerInventory; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataType; @@ -514,8 +515,16 @@ public static void upgradeBank(Bank bank, Player p) { vaultEconomy.withdrawPlayer(p, cost.doubleValue()); } - if (isRemovingRequiredItems(bank, nextLevel) && canRemoveSafely) - for (Bank.RequiredItem requiredItem : requiredItems) p.getInventory().removeItem(requiredItem.item); + if (isRemovingRequiredItems(bank, nextLevel) && canRemoveSafely) { + PlayerInventory inventory = p.getInventory(); + + for (Bank.RequiredItem requiredItem : requiredItems) { + ItemStack item = requiredItem.item.clone(); + item.setAmount(requiredItem.amount); + + inventory.removeItem(item); + } + } setLevel(bank, p, nextLevel); BPMessages.sendIdentifier(p, "Bank-Upgraded"); diff --git a/src/main/java/me/pulsi_/bankplus/commands/list/GiveRequiredItemsCmd.java b/src/main/java/me/pulsi_/bankplus/commands/list/GiveRequiredItemsCmd.java index 5bfd131..28ccdd9 100644 --- a/src/main/java/me/pulsi_/bankplus/commands/list/GiveRequiredItemsCmd.java +++ b/src/main/java/me/pulsi_/bankplus/commands/list/GiveRequiredItemsCmd.java @@ -13,6 +13,8 @@ import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.PlayerInventory; +import org.jetbrains.annotations.NotNull; import java.util.*; @@ -110,7 +112,20 @@ public BPCmdExecution onExecution(CommandSender s, String[] args) { return new BPCmdExecution() { @Override public void execute() { - for (Bank.RequiredItem requiredItem : givenItems) target.getInventory().addItem(requiredItem.item); + PlayerInventory inventory = target.getInventory(); + + for (Bank.RequiredItem requiredItem : givenItems) { + ItemStack item = requiredItem.item.clone(); + item.setAmount(requiredItem.amount); + + HashMap leftover = inventory.addItem(item); + + if (!leftover.isEmpty()) { + leftover.values().forEach(stack -> + target.getWorld().dropItemNaturally(target.getLocation(), stack) + ); + } + } } }; }