Skip to content

Commit

Permalink
Adds raw balance placeholders for island and visited island
Browse files Browse the repository at this point in the history
Note that large values will be expressed in scientific notation, e.g.,
1.23456E8
  • Loading branch information
tastybento committed Dec 22, 2020
1 parent 1248d48 commit 3933329
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 15 deletions.
32 changes: 25 additions & 7 deletions src/main/java/world/bentobox/bank/PhManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,23 @@ public PhManager(Bank addon, BankManager bankManager) {

protected boolean registerPlaceholders(GameModeAddon gm) {
if (plugin.getPlaceholdersManager() == null) return false;
// Island Balance Number
plugin.getPlaceholdersManager().registerPlaceholder(addon,
gm.getDescription().getName().toLowerCase() + "_island_balance_number",
user -> String.valueOf(bankManager.getBalance(user, gm.getOverWorld())));

// Visited Island Balance Number
plugin.getPlaceholdersManager().registerPlaceholder(addon,
gm.getDescription().getName().toLowerCase() + "_visited_island_balance_number", user -> getVisitedIslandBalance(gm, user, false, true));

// Island Balance
plugin.getPlaceholdersManager().registerPlaceholder(addon,
gm.getDescription().getName().toLowerCase() + "_island_balance",
user -> addon.getVault().format(bankManager.getBalance(user, gm.getOverWorld())));

// Visited Island Balance
plugin.getPlaceholdersManager().registerPlaceholder(addon,
gm.getDescription().getName().toLowerCase() + "_visited_island_balance", user -> getVisitedIslandBalance(gm, user, false));
gm.getDescription().getName().toLowerCase() + "_visited_island_balance", user -> getVisitedIslandBalance(gm, user, false, false));

// Formatted Island Balance
plugin.getPlaceholdersManager().registerPlaceholder(addon,
Expand All @@ -69,7 +78,7 @@ protected boolean registerPlaceholders(GameModeAddon gm) {

// Formatted Visited Island Balance
plugin.getPlaceholdersManager().registerPlaceholder(addon,
gm.getDescription().getName().toLowerCase() + "_visited_island_balance_formatted", user -> getVisitedIslandBalance(gm, user, true));
gm.getDescription().getName().toLowerCase() + "_visited_island_balance_formatted", user -> getVisitedIslandBalance(gm, user, true, false));

// Register Ranked Placeholders
for (int i = 1; i <= Objects.requireNonNull(addon.getSettings()).getRanksNumber(); i++) {
Expand All @@ -84,12 +93,21 @@ protected boolean registerPlaceholders(GameModeAddon gm) {
return true;
}

String getVisitedIslandBalance(GameModeAddon gm, User user, boolean formatted) {
/**
* Get the visited island balance
* @param gm - game mode
* @param user - user
* @param formatted - format with k, M, etc.
* @param plain - provides the raw double balance. If true, formatted parameter is ignored
* @return string of balance
*/
String getVisitedIslandBalance(GameModeAddon gm, User user, boolean formatted, boolean plain) {
if (user == null || user.getLocation() == null) return "";
if (!gm.inWorld(user.getWorld())) return addon.getVault().format(0D);
return addon.getIslands().getIslandAt(user.getLocation())
.map(island -> formatted ? format(bankManager.getBalance(island)) : addon.getVault().format(bankManager.getBalance(island)))
.orElse(addon.getVault().format(0D));
double balance = gm.inWorld(user.getWorld()) ? addon.getIslands().getIslandAt(user.getLocation()).map(i -> bankManager.getBalance(i)).orElse(0D) : 0D;
if (plain) {
return String.valueOf(balance);
}
return formatted ? format(balance) : addon.getVault().format(balance);
}

/**
Expand Down
24 changes: 16 additions & 8 deletions src/test/java/world/bentobox/bank/PhManagerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,10 @@ public void testRegisterPlaceholders() {
@Test
public void testGetVisitedIslandBalanceWrongWorld() {
when(gm.inWorld(eq(world))).thenReturn(false);
assertEquals("$0.0", pm.getVisitedIslandBalance(gm, user, false));
assertEquals("$0.0", pm.getVisitedIslandBalance(gm, user, true));
assertEquals("$0.0", pm.getVisitedIslandBalance(gm, user, false, false));
assertEquals("$0.0", pm.getVisitedIslandBalance(gm, user, true, false));
assertEquals("0.0", pm.getVisitedIslandBalance(gm, user, false, true));
assertEquals("0.0", pm.getVisitedIslandBalance(gm, user, true, true));
}

/**
Expand All @@ -145,17 +147,21 @@ public void testGetVisitedIslandBalanceWrongWorld() {
@Test
public void testGetVisitedIslandBalanceNoIsland() {
when(im.getIslandAt(eq(location))).thenReturn(Optional.empty());
assertEquals("$0.0", pm.getVisitedIslandBalance(gm, user, false));
assertEquals("$0.0", pm.getVisitedIslandBalance(gm, user, true));
assertEquals("$0.0", pm.getVisitedIslandBalance(gm, user, false, false));
assertEquals("$0.0", pm.getVisitedIslandBalance(gm, user, true, false));
assertEquals("0.0", pm.getVisitedIslandBalance(gm, user, false, true));
assertEquals("0.0", pm.getVisitedIslandBalance(gm, user, true, true));
}

/**
* Test method for {@link world.bentobox.bank.PhManager#getVisitedIslandBalance(world.bentobox.bentobox.api.addons.GameModeAddon, world.bentobox.bentobox.api.user.User)}.
*/
@Test
public void testGetVisitedIslandBalance() {
assertEquals("$1234.56", pm.getVisitedIslandBalance(gm, user, false));
assertEquals("1.2k", pm.getVisitedIslandBalance(gm, user, true));
assertEquals("$1234.56", pm.getVisitedIslandBalance(gm, user, false, false));
assertEquals("1.2k", pm.getVisitedIslandBalance(gm, user, true, false));
assertEquals("1234.56", pm.getVisitedIslandBalance(gm, user, false, true));
assertEquals("1234.56", pm.getVisitedIslandBalance(gm, user, true, true));
}

/**
Expand All @@ -164,7 +170,8 @@ public void testGetVisitedIslandBalance() {
@Test
public void testGetVisitedIslandBalanceLargest() {
when(bm.getBalance(eq(island))).thenReturn(Double.MAX_VALUE);
assertEquals("9223372T", pm.getVisitedIslandBalance(gm, user, true));
assertEquals("9223372T", pm.getVisitedIslandBalance(gm, user, true, false));
assertEquals("1.7976931348623157E308", pm.getVisitedIslandBalance(gm, user, true, true));
}

/**
Expand All @@ -173,7 +180,8 @@ public void testGetVisitedIslandBalanceLargest() {
@Test
public void testGetVisitedIslandBalanceBig() {
when(bm.getBalance(eq(island))).thenReturn(123456789D);
assertEquals("123.5M", pm.getVisitedIslandBalance(gm, user, true));
assertEquals("123.5M", pm.getVisitedIslandBalance(gm, user, true, false));
assertEquals("1.23456789E8", pm.getVisitedIslandBalance(gm, user, true, true));
}


Expand Down

0 comments on commit 3933329

Please sign in to comment.