2015-08-20 5 views
-2

Vault является плагином для Bukkit, который также является Экономический API. Он может использоваться для публикации обновлений денег игроков и использования в качестве валюты на сервере.Как получить верхнюю учетную запись в Сейфе таким образом, чтобы она не отставала?

VaultAPI также open-sourced at Github

Я пытаюсь получить счета, которые имеют самую большую сумму денег, но это не прямо вперед в API хранилища.

Итак, что я пытался сделать, это:

  1. Перебор всех OfflinePlayers и сравнивая деньги ЗНАЧЕНИЯ
  2. Восстановление наибольшее значение

Код:

double highest = 0; 
OfflinePlayer topPlayer; 
OfflinePlayer[] players = Bukkit.getOfflinePlayers(); 

for (OfflinePlayer p : players) { 
    double playerAmount = econ.getBalance(p); //Econ is Economy instance from Vault. 
    if (playerAmount > highest){ 
     highest = playerAmount; 
     topPlayer = p; 
    } 
} 

Я пробовал итерировать все счета, чтобы найти наибольшую сумму, , но он много ходит, когда у вас слишком много игроков.

Есть ли способ узнать, какие игроки имеют самую большую сумму денег?

ответ

2

Есть несколько способов добиться этого.

Прежде всего, вы можете использовать Essentials 'UserBalanceUpdateEvent и определить, превышает ли баланс более высокий балл в конфигурации (в этом случае вы обновляете сохраненное значение с новым значением и UUID, которому оно принадлежит).

Во-вторых, вы можете выполнять итерацию через OfflinePlayers, но используя асинхронную задачу.