From f2c9789f8504c9af1581bd136c2c6cd80acac2c1 Mon Sep 17 00:00:00 2001 From: Atila Pandzhar <8682398+atilapan@users.noreply.github.com> Date: Mon, 30 Mar 2026 05:45:59 +0300 Subject: [PATCH 1/2] fix: remove correct amount of required items for bank upgrade --- src/main/java/me/pulsi_/bankplus/bankSystem/BankUtils.java | 2 +- .../me/pulsi_/bankplus/commands/list/GiveRequiredItemsCmd.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/me/pulsi_/bankplus/bankSystem/BankUtils.java b/src/main/java/me/pulsi_/bankplus/bankSystem/BankUtils.java index 5ffe693..8b9ece9 100644 --- a/src/main/java/me/pulsi_/bankplus/bankSystem/BankUtils.java +++ b/src/main/java/me/pulsi_/bankplus/bankSystem/BankUtils.java @@ -515,7 +515,7 @@ public static void upgradeBank(Bank bank, Player p) { } if (isRemovingRequiredItems(bank, nextLevel) && canRemoveSafely) - for (Bank.RequiredItem requiredItem : requiredItems) p.getInventory().removeItem(requiredItem.item); + for (Bank.RequiredItem requiredItem : requiredItems) p.getInventory().removeItem(new ItemStack(requiredItem.item.getType(), requiredItem.amount)); 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..1613eb3 100644 --- a/src/main/java/me/pulsi_/bankplus/commands/list/GiveRequiredItemsCmd.java +++ b/src/main/java/me/pulsi_/bankplus/commands/list/GiveRequiredItemsCmd.java @@ -110,7 +110,7 @@ public BPCmdExecution onExecution(CommandSender s, String[] args) { return new BPCmdExecution() { @Override public void execute() { - for (Bank.RequiredItem requiredItem : givenItems) target.getInventory().addItem(requiredItem.item); + for (Bank.RequiredItem requiredItem : givenItems) target.getInventory().addItem(new ItemStack(requiredItem.item.getType(), requiredItem.amount)); } }; } From a09103629847e6b7a704083cbec47e16db8bb2d4 Mon Sep 17 00:00:00 2001 From: Atila Pandzhar <8682398+atilapan@users.noreply.github.com> Date: Sat, 18 Apr 2026 00:04:53 +0300 Subject: [PATCH 2/2] fix: optimize and add custom items compatability --- .../pulsi_/bankplus/bankSystem/BankUtils.java | 13 +++++++++++-- .../commands/list/GiveRequiredItemsCmd.java | 17 ++++++++++++++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/main/java/me/pulsi_/bankplus/bankSystem/BankUtils.java b/src/main/java/me/pulsi_/bankplus/bankSystem/BankUtils.java index 8b9ece9..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(new ItemStack(requiredItem.item.getType(), requiredItem.amount)); + 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 1613eb3..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(new ItemStack(requiredItem.item.getType(), requiredItem.amount)); + 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) + ); + } + } } }; }