diff --git a/src/main/java/com/iridium/iridiumskyblock/bank/CrystalsBankItem.java b/src/main/java/com/iridium/iridiumskyblock/bank/CrystalsBankItem.java index 020442157..9c81f573e 100644 --- a/src/main/java/com/iridium/iridiumskyblock/bank/CrystalsBankItem.java +++ b/src/main/java/com/iridium/iridiumskyblock/bank/CrystalsBankItem.java @@ -9,6 +9,7 @@ import com.iridium.iridiumskyblock.gui.IslandBankGUI; import lombok.NoArgsConstructor; import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; import java.util.Optional; @@ -75,7 +76,53 @@ public double withdraw(Player player, Number amount) { */ @Override public double deposit(Player player, Number amount) { - return 0; + Optional islandOptional = IridiumSkyblock.getInstance().getUserManager().getUser(player).getIsland(); + if (!islandOptional.isPresent()) { + player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().noIsland.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix))); + return 0; + } + + int remainingItemAmount = amount.intValue(); + int depositAmount = 0; + + ItemStack[] contents = player.getInventory().getContents(); + for (int i = 0; i < contents.length && remainingItemAmount > 0; i++) { + ItemStack itemStack = contents[i]; + + int crystalsPerItem = IridiumSkyblock.getInstance().getIslandManager().getIslandCrystals(itemStack); + if (crystalsPerItem == 0) continue; + + int itemStackAmount = itemStack.getAmount(); + if (itemStackAmount <= remainingItemAmount) { + player.getInventory().setItem(i, null); + + depositAmount += itemStackAmount * crystalsPerItem; + remainingItemAmount -= itemStackAmount; + } else { + itemStack.setAmount(itemStack.getAmount() - remainingItemAmount); + player.getInventory().setItem(i, itemStack); + + depositAmount += remainingItemAmount * crystalsPerItem; + remainingItemAmount = 0; + } + } + + if (depositAmount == 0) { + player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().insufficientFundsToDeposit + .replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)) + .replace("%type%", getDisplayName()) + ); + return 0; + } + + IslandBank islandBank = IridiumSkyblock.getInstance().getIslandManager().getIslandBank(islandOptional.get(), this); + islandBank.setNumber(islandBank.getNumber() + depositAmount); + player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().bankDeposited + .replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)) + .replace("%amount%", String.valueOf(depositAmount)) + .replace("%type%", getDisplayName()) + ); + return depositAmount; } /** diff --git a/src/main/java/com/iridium/iridiumskyblock/bank/ExperienceBankItem.java b/src/main/java/com/iridium/iridiumskyblock/bank/ExperienceBankItem.java index a27065c2c..ffcb23c84 100644 --- a/src/main/java/com/iridium/iridiumskyblock/bank/ExperienceBankItem.java +++ b/src/main/java/com/iridium/iridiumskyblock/bank/ExperienceBankItem.java @@ -53,7 +53,7 @@ public double withdraw(Player player, Number amount) { .replace("%amount%", String.valueOf(experience)) .replace("%type%", getDisplayName()) ); - }else{ + } else { player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().insufficientFundsToWithdrew .replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)) .replace("%type%", getDisplayName()) @@ -88,7 +88,7 @@ public double deposit(Player player, Number amount) { .replace("%amount%", String.valueOf(experience)) .replace("%type%", getDisplayName()) ); - }else{ + } else { player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().insufficientFundsToDeposit .replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)) .replace("%type%", getDisplayName()) diff --git a/src/main/java/com/iridium/iridiumskyblock/bank/MoneyBankItem.java b/src/main/java/com/iridium/iridiumskyblock/bank/MoneyBankItem.java index c9594b011..206910c57 100644 --- a/src/main/java/com/iridium/iridiumskyblock/bank/MoneyBankItem.java +++ b/src/main/java/com/iridium/iridiumskyblock/bank/MoneyBankItem.java @@ -86,7 +86,7 @@ public double deposit(Player player, Number amount) { .replace("%amount%", String.valueOf(money)) .replace("%type%", getDisplayName()) ); - }else{ + } else { player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().insufficientFundsToDeposit .replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)) .replace("%type%", getDisplayName()) diff --git a/src/main/java/com/iridium/iridiumskyblock/configs/Messages.java b/src/main/java/com/iridium/iridiumskyblock/configs/Messages.java index a36b054fe..ba88e2ef9 100644 --- a/src/main/java/com/iridium/iridiumskyblock/configs/Messages.java +++ b/src/main/java/com/iridium/iridiumskyblock/configs/Messages.java @@ -146,7 +146,7 @@ public class Messages { public String flightEnabled = "%prefix% &7Island flight enabled."; public String flightDisabled = "%prefix% &7Island flight disabled."; public String bankWithdrew = "%prefix% &7You successfully withdrew %amount% %type% from your Island bank."; - public String bankDeposited = "%prefix% &7You successfully deposited %amount% %type% from your Island bank."; + public String bankDeposited = "%prefix% &7You successfully deposited %amount% %type% to your Island bank."; public String insufficientFundsToWithdrew = "%prefix% &7You do not have enough %type% to withdraw from your Island bank."; public String insufficientFundsToDeposit = "%prefix% &7You do not have enough %type% to deposit into your Island bank."; public String blockLimitReached = "%prefix% &7The maximum block limit for %block% (%limit%) has been reached!";