Skip to content

Commit

Permalink
Implement Bank addon usage.
Browse files Browse the repository at this point in the history
Admins now can enable that all money will be taken from the bank account.
  • Loading branch information
BONNe committed Jan 23, 2022
1 parent 8eea1c1 commit af1cbaf
Show file tree
Hide file tree
Showing 7 changed files with 343 additions and 100 deletions.
7 changes: 7 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
<!-- More visible way how to change dependency versions -->
<spigot.version>1.18-R0.1-SNAPSHOT</spigot.version>
<bentobox.version>1.20.0-SNAPSHOT</bentobox.version>
<bank.version>1.4.0</bank.version>
<level.version>2.5.0</level.version>
<greenhouses.version>1.4.0-SNAPSHOT</greenhouses.version>
<vault.version>1.7</vault.version>
Expand Down Expand Up @@ -165,6 +166,12 @@
<version>${bentobox.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>world.bentobox</groupId>
<artifactId>bank</artifactId>
<version>${bank.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>world.bentobox</groupId>
<artifactId>level</artifactId>
Expand Down
43 changes: 43 additions & 0 deletions src/main/java/world/bentobox/biomes/BiomesAddon.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import org.bukkit.Bukkit;
import org.bukkit.Material;

import world.bentobox.bank.Bank;
import world.bentobox.bentobox.api.addons.Addon;
import world.bentobox.bentobox.api.configuration.Config;
import world.bentobox.bentobox.api.flags.Flag;
Expand Down Expand Up @@ -147,6 +148,17 @@ public void allLoaded()
{
super.allLoaded();

// Try to find Level addon and if it does not exist, display a warning
this.getAddonByName("Bank").ifPresentOrElse(addon ->
{
this.bankAddon = (Bank) addon;
this.bankProvided = true;
this.log("Biomes Addon hooked into Bank addon.");
}, () ->
{
this.levelAddon = null;
});

// Try to find Level addon and if it does not exist, display a warning
this.getAddonByName("Level").ifPresentOrElse(addon ->
{
Expand Down Expand Up @@ -392,6 +404,28 @@ public UpdateQueue getUpdateQueue()
}


/**
* Is bank provided boolean.
*
* @return the boolean
*/
public boolean isBankProvided()
{
return this.bankProvided;
}


/**
* Gets bank addon.
*
* @return the bank addon
*/
public Bank getBankAddon()
{
return this.bankAddon;
}


// ---------------------------------------------------------------------
// Section: Variables
// ---------------------------------------------------------------------
Expand Down Expand Up @@ -447,6 +481,15 @@ public UpdateQueue getUpdateQueue()
*/
private boolean greenhousesProvided;

/**
* Bank addon.
*/
private Bank bankAddon;

/**
* This indicates if Bank addon exists.
*/
private boolean bankProvided;

/**
* The Biome update queue.
Expand Down
28 changes: 28 additions & 0 deletions src/main/java/world/bentobox/biomes/config/Settings.java
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,28 @@ public void setChangeTimeout(long changeTimeout)
}


/**
* Is use bank account boolean.
*
* @return the boolean
*/
public boolean isUseBankAccount()
{
return useBankAccount;
}


/**
* Sets use bank account.
*
* @param useBankAccount the use bank account
*/
public void setUseBankAccount(boolean useBankAccount)
{
this.useBankAccount = useBankAccount;
}


// ---------------------------------------------------------------------
// Section: Enums used for Settings.
// ---------------------------------------------------------------------
Expand Down Expand Up @@ -431,6 +453,12 @@ public static UpdateMode getMode(String parameter)
@SuppressWarnings("javadoc")
private boolean useProtectionRange = false;

@ConfigComment("")
@ConfigComment("This indicates if all monetary payments should be done via Bank Addon Account.")
@ConfigEntry(path = "use-bank-account")
@SuppressWarnings("javadoc")
private boolean useBankAccount = false;

@ConfigComment("")
@ConfigComment("This indicates that players will be notified about new unlocked biomes.")
@ConfigEntry(path = "notify-on-unlock")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import world.bentobox.bank.BankManager;
import world.bentobox.bank.BankResponse;
import world.bentobox.bank.data.Money;
import world.bentobox.bank.data.TxType;
import world.bentobox.bentobox.api.addons.GameModeAddon;
import world.bentobox.bentobox.api.localization.TextVariables;
import world.bentobox.bentobox.api.user.User;
Expand Down Expand Up @@ -857,10 +861,28 @@ else if (!biomesObject.getUnlockPermissions().isEmpty() &&
{
if (this.addon.isEconomyProvided() && biomesObject.getUnlockCost() > 0)
{
// Return true only if user has enough money and its removal was successful.
if (this.addon.getVaultHook().has(user, biomesObject.getUnlockCost()) &&
if (this.addon.getSettings().isUseBankAccount() && this.addon.isBankProvided())
{
BankManager manager = this.addon.getBankAddon().getBankManager();

if (manager.getBalance(island).getValue() > biomesObject.getUnlockCost() &&
manager.withdraw(user, island, new Money(biomesObject.getUnlockCost()), TxType.WITHDRAW).join() == BankResponse.SUCCESS)
{
return true;
}
else
{
Utils.sendMessage(user,
user.getTranslation(Constants.MESSAGES + "no-credits-buy-bank",
TextVariables.NUMBER, String.valueOf(biomesObject.getUnlockCost())));
return false;
}
}
else if (this.addon.getVaultHook().has(user, biomesObject.getUnlockCost()) &&
this.addon.getVaultHook().withdraw(user, biomesObject.getUnlockCost()).transactionSuccess())
{
// Return true only if user has enough money and its removal was successful.

return true;
}
else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ public void build()
panelBuilder.item(16, this.createButton(Action.RESET));

panelBuilder.item(23, this.createButton(Action.UNLOCK_NOTIFY));

panelBuilder.item(24, this.createButton(Action.USE_BANK));

panelBuilder.item(44, this.returnButton);

Expand Down Expand Up @@ -354,6 +354,35 @@ else if (this.settings.getDefaultMode().equals(Settings.UpdateMode.CHUNK))
description.add("");
description.add(this.user.getTranslation(Constants.TIPS + "click-to-change"));
}
case USE_BANK -> {
description.add(this.user.getTranslation(reference +
(this.settings.isUseBankAccount() ? "enabled" : "disabled")));

if (this.addon.isBankProvided())
{
icon = new ItemStack(Material.DIAMOND);
}
else
{
icon = new ItemStack(Material.BARRIER);
description.add(this.user.getTranslation(reference + "missing"));
}

clickHandler = (panel, user, clickType, i) ->
{
this.settings.setUseBankAccount(!this.settings.isUseBankAccount());
this.addon.saveSettings();
// Update button in panel
this.build();

return true;
};

glow = this.settings.isUseBankAccount();

description.add("");
description.add(this.user.getTranslation(Constants.TIPS + "click-to-toggle"));
}
default -> {
icon = new ItemStack(Material.PAPER);
clickHandler = (panel, user1, clickType, slot) -> true;
Expand Down Expand Up @@ -443,7 +472,11 @@ private enum Action
/**
* Parallel biome updates action.
*/
PARALLEL_UPDATES
PARALLEL_UPDATES,
/**
* Use bank action.
*/
USE_BANK
}


Expand Down

0 comments on commit af1cbaf

Please sign in to comment.