Attempt to fix baltop again and bump ver to 0.9.3
This commit is contained in:
parent
0edc3e5ffe
commit
55e58d0ac3
|
@ -6,10 +6,10 @@
|
|||
<parent>
|
||||
<groupId>org.appledash</groupId>
|
||||
<artifactId>SaneEconomy</artifactId>
|
||||
<version>0.9.2-SNAPSHOT</version>
|
||||
<version>0.9.3-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>SaneEconomyCore</artifactId>
|
||||
<version>0.9.2-SNAPSHOT</version>
|
||||
<version>0.9.3-SNAPSHOT</version>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
|
|
@ -39,28 +39,30 @@ public class BalanceTopCommand extends SaneEconomyCommand {
|
|||
throw new TooManyArgumentsException();
|
||||
}
|
||||
|
||||
int offset = 0;
|
||||
int nPerPage = 10;
|
||||
int page = 1;
|
||||
|
||||
if (args.length == 1) {
|
||||
try {
|
||||
int page = Math.abs(Integer.parseInt(args[0]));
|
||||
offset = 10 * (page - 1);
|
||||
page = Math.abs(Integer.parseInt(args[0]));
|
||||
} catch (NumberFormatException e) {
|
||||
MessageUtils.sendMessage(sender, "%s is not a valid number.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Map<OfflinePlayer, Double> topBalances = saneEconomy.getEconomyManager().getTopPlayerBalances(10, offset);
|
||||
int offset = (page - 1) * nPerPage;
|
||||
|
||||
Map<OfflinePlayer, Double> topBalances = saneEconomy.getEconomyManager().getTopPlayerBalances(nPerPage, offset);
|
||||
|
||||
if (topBalances.isEmpty()) {
|
||||
MessageUtils.sendMessage(sender, "There aren't enough players to display that page.");
|
||||
return;
|
||||
}
|
||||
|
||||
AtomicInteger index = new AtomicInteger(1); /* I know it's stupid, but you can't do some_int++ from within the lambda. */
|
||||
AtomicInteger index = new AtomicInteger(offset + 1); /* I know it's stupid, but you can't do some_int++ from within the lambda. */
|
||||
|
||||
MessageUtils.sendMessage(sender, "Top %d players (page %s):", topBalances.size(), (args.length == 1) ? args[0] : "1");
|
||||
MessageUtils.sendMessage(sender, "Top %d players on page %d:", topBalances.size(), page);
|
||||
topBalances.forEach((player, balance) -> MessageUtils.sendMessage(sender, "[%02d] %s - %s", index.getAndIncrement(), player.getName(), SaneEconomy.getInstance().getEconomyManager().getCurrency().formatAmount(balance)));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package org.appledash.saneeconomy.economy.backend;
|
|||
|
||||
import org.appledash.saneeconomy.economy.economable.Economable;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
|
@ -38,7 +39,7 @@ public interface EconomyStorageBackend {
|
|||
* @param amount Maximum number to get.
|
||||
* @return Map of player UUIDs to amounts.
|
||||
*/
|
||||
Map<UUID, Double> getTopPlayerBalances(int amount, int offset);
|
||||
LinkedHashMap<UUID, Double> getTopPlayerBalances(int amount, int offset);
|
||||
|
||||
/**
|
||||
* Reload this backend's database from disk.
|
||||
|
|
|
@ -16,7 +16,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public abstract class EconomyStorageBackendCaching implements EconomyStorageBackend {
|
||||
protected HashMap<String, Double> balances = new HashMap<>();
|
||||
private Map<UUID, Double> topPlayerBalances = new LinkedHashMap<>();
|
||||
private LinkedHashMap<UUID, Double> topPlayerBalances = new LinkedHashMap<>();
|
||||
|
||||
@Override
|
||||
public boolean accountExists(Economable economable) {
|
||||
|
@ -33,8 +33,8 @@ public abstract class EconomyStorageBackendCaching implements EconomyStorageBack
|
|||
}
|
||||
|
||||
@Override
|
||||
public Map<UUID, Double> getTopPlayerBalances(int amount, int offset) {
|
||||
return MapUtil.takeFromMap(topPlayerBalances, amount, offset);
|
||||
public LinkedHashMap<UUID, Double> getTopPlayerBalances(int amount, int offset) {
|
||||
return MapUtil.skipAndTake(topPlayerBalances, offset, amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -8,40 +8,68 @@ import java.util.*;
|
|||
*/
|
||||
public class MapUtil {
|
||||
/* Originally found on StackOverflow: http://stackoverflow.com/a/2581754/1849152 */
|
||||
public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map) {
|
||||
public static <K, V extends Comparable<? super V>> LinkedHashMap<K, V> sortByValue(Map<K, V> map) {
|
||||
List<Map.Entry<K, V>> list =
|
||||
new LinkedList<>(map.entrySet());
|
||||
Collections.sort(list, (o1, o2) -> -((o1.getValue()).compareTo(o2.getValue())));
|
||||
|
||||
Map<K, V> result = new LinkedHashMap<>();
|
||||
list.sort((o1, o2) -> -((o1.getValue()).compareTo(o2.getValue())));
|
||||
|
||||
LinkedHashMap<K, V> result = new LinkedHashMap<>();
|
||||
for (Map.Entry<K, V> entry : list) {
|
||||
result.put(entry.getKey(), entry.getValue());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static <K, V> Map<K, V> takeFromMap(Map<K, V> map, int amount, int offset) {
|
||||
Map<K, V> newMap = new LinkedHashMap<>();
|
||||
/**
|
||||
* "Skip" the given number of items in a LinkedHashMap and return a new LinkedHashMap with the remaining items.
|
||||
* @param map Map
|
||||
* @param nSkip Number of items to skip
|
||||
* @return New LinkedHashMap, may be empty.
|
||||
*/
|
||||
public static <K, V> LinkedHashMap<K, V> skip(LinkedHashMap<K, V> map, int nSkip) {
|
||||
LinkedHashMap<K, V> newMap = new LinkedHashMap<>();
|
||||
|
||||
if (offset > map.size()) {
|
||||
if (map.size() <= nSkip) {
|
||||
return newMap;
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
|
||||
for (Map.Entry<K, V> entry : map.entrySet()) {
|
||||
if (i < offset) {
|
||||
continue;
|
||||
if (i >= nSkip) {
|
||||
newMap.put(entry.getKey(), entry.getValue());
|
||||
}
|
||||
|
||||
if (newMap.size() >= amount) {
|
||||
break;
|
||||
}
|
||||
|
||||
newMap.put(entry.getKey(), entry.getValue());
|
||||
i++;
|
||||
}
|
||||
|
||||
return newMap;
|
||||
}
|
||||
|
||||
public static <K, V> LinkedHashMap<K, V> take(LinkedHashMap<K, V> map, int nTake) {
|
||||
LinkedHashMap<K, V> newMap = new LinkedHashMap<>();
|
||||
|
||||
if (map.size() <= nTake) {
|
||||
return map;
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
|
||||
for (Map.Entry<K, V> entry : map.entrySet()) {
|
||||
if (i >= nTake) {
|
||||
break;
|
||||
}
|
||||
|
||||
newMap.put(entry.getKey(), entry.getValue());
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
return newMap;
|
||||
}
|
||||
|
||||
public static <K, V> LinkedHashMap<K, V> skipAndTake(LinkedHashMap<K, V> map, int nSkip, int nTake) {
|
||||
return take(skip(map, nSkip), nTake);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
name: SaneEconomy
|
||||
author: AppleDash
|
||||
main: org.appledash.saneeconomy.SaneEconomy
|
||||
version: 0.9.2
|
||||
version: 0.9.3
|
||||
loadbefore: [Vault]
|
||||
commands:
|
||||
balance:
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<parent>
|
||||
<artifactId>SaneEconomy</artifactId>
|
||||
<groupId>org.appledash</groupId>
|
||||
<version>0.9.2-SNAPSHOT</version>
|
||||
<version>0.9.3-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
|||
<dependency>
|
||||
<groupId>org.appledash</groupId>
|
||||
<artifactId>SaneEconomyCore</artifactId>
|
||||
<version>0.9.2-SNAPSHOT</version>
|
||||
<version>0.9.3-SNAPSHOT</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
|
Loading…
Reference in New Issue