Skip to content

Commit

Permalink
Setup notifications for withdraw and deposit
Browse files Browse the repository at this point in the history
  • Loading branch information
DevSolaris committed Jan 20, 2023
1 parent 6b06fbb commit 3644360
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 20 deletions.
17 changes: 17 additions & 0 deletions src/main/java/world/bentobox/bank/Settings.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,11 @@ public class Settings implements ConfigObject {
@ConfigComment("Interest calculations are done when the server starts or when the player logs in.")
private float compoundPeriod = 1;

@ConfigEntry(path = "bank.sendAlert")
@ConfigComment("Should other members of the island get a message when someone deposits/withdraws")
@ConfigComment("from the bank?")
private boolean sendBankAlert = false;

/**
* @return the gameModes
*/
Expand Down Expand Up @@ -150,5 +155,17 @@ public long getCompoundPeriodInMs() {
return (long) (compoundPeriod * 24 * 60 * 60 * 1000);
}

/**
* @return the sendBankAlert
*/
public boolean isSendBankAlert() {
return sendBankAlert;
}

/**
* @param sendBankAlert the sendBankAlert to set
*/
public void setSendBankAlert(boolean sendBankAlert) {
this.sendBankAlert = sendBankAlert;
}
}
42 changes: 25 additions & 17 deletions src/main/java/world/bentobox/bank/commands/user/DepositCommand.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
package world.bentobox.bank.commands.user;

import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.*;

import net.milkbowl.vault.economy.EconomyResponse;
import net.milkbowl.vault.economy.EconomyResponse.ResponseType;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import world.bentobox.bank.commands.AbstractBankCommand;
import world.bentobox.bank.data.Money;
import world.bentobox.bentobox.api.commands.CompositeCommand;
import world.bentobox.bentobox.api.localization.TextVariables;
import world.bentobox.bentobox.api.user.User;
import world.bentobox.bentobox.database.objects.Island;
import world.bentobox.bentobox.hooks.VaultHook;
import world.bentobox.bentobox.managers.RanksManager;

/**
* @author tastybento
Expand Down Expand Up @@ -50,21 +52,27 @@ public boolean execute(User user, String label, List<String> args) {
if (response.type == ResponseType.SUCCESS) {
addon.getBankManager().deposit(user, value, getWorld()).thenAccept(result -> {
switch (result) {
case FAILURE_LOAD_ERROR:
user.sendMessage("bank.errors.bank-error");
break;
case FAILURE_LOW_BALANCE:
user.sendMessage("bank.errors.low-balance");
break;
case FAILURE_NO_ISLAND:
user.sendMessage("general.errors.no-island");
break;
case SUCCESS:
user.sendMessage("bank.deposit.success", TextVariables.NUMBER, vault.format(addon.getBankManager().getBalance(island).getValue()));
break;
default:
break;
case FAILURE_LOAD_ERROR -> user.sendMessage("bank.errors.bank-error");
case FAILURE_LOW_BALANCE -> user.sendMessage("bank.errors.low-balance");
case FAILURE_NO_ISLAND -> user.sendMessage("general.errors.no-island");
case SUCCESS -> {
user.sendMessage("bank.deposit.success", TextVariables.NUMBER, vault.format(addon.getBankManager().getBalance(island).getValue()));

if(!addon.getSettings().isSendBankAlert()) return;

Island island = addon.getIslands().getIsland(getWorld(), user);

final Set<UUID> members = island.getMemberSet(RanksManager.MEMBER_RANK);
for (UUID member : members) {
final Player player = Bukkit.getPlayer(member);

if (player == null || user.getUniqueId().equals(member)) continue;

User otherUser = User.getInstance(player);

otherUser.sendMessage("bank.deposit.alert", "[name]", user.getName(), "[number]", String.valueOf(value.getValue()));
}
}
}
});
return true;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
package world.bentobox.bank.commands.user;

import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.*;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import world.bentobox.bank.commands.AbstractBankCommand;
import world.bentobox.bank.data.Money;
import world.bentobox.bentobox.api.commands.CompositeCommand;
import world.bentobox.bentobox.api.localization.TextVariables;
import world.bentobox.bentobox.api.user.User;
import world.bentobox.bentobox.database.objects.Island;
import world.bentobox.bentobox.managers.RanksManager;

/**
* @author tastybento
Expand Down Expand Up @@ -55,6 +57,18 @@ public boolean execute(User user, String label, List<String> args) {
default -> {
addon.getVault().deposit(user, value.getValue(), getWorld());
user.sendMessage("bank.withdraw.success", TextVariables.NUMBER, addon.getVault().format(addon.getBankManager().getBalance(island).getValue()));

if(!addon.getSettings().isSendBankAlert()) return;
Island island = getPlugin().getIslands().getIsland(getWorld(), user);

final Set<UUID> members = island.getMemberSet(RanksManager.MEMBER_RANK);
for(UUID member : members) {
final Player player = Bukkit.getPlayer(member);

if(player == null || user.getUniqueId().equals(member)) continue;

User.getInstance(member).sendMessage("bank.withdraw.alert", "[name]", user.getName(), "[number]", String.valueOf(value.getValue()));
}
}
}
});
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/locales/en-US.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ bank:
description: "deposit amount into your island account"
parameters: <amount>
success: "&a Success! Your new island bank balance is [number]."
alert: '&a [name] deposited [number] into the island bank.'
errors:
bank-error: "&c Error loading bank account info - please try again later"
low-balance: "&c Your island bank balance is not high enough!"
Expand Down Expand Up @@ -68,6 +69,7 @@ bank:
description: "withdraw amount from your island account"
parameters: <amount>
success: "&a Success! Your new island bank balance is [number]."
alert: '&a [name] withdrew [number] from the island bank.'
protection:
flags:
BANK_ACCESS:
Expand Down

0 comments on commit 3644360

Please sign in to comment.