mirror of
https://github.com/Auxilor/EcoSkills.git
synced 2026-01-02 13:56:38 +00:00
Fixed /skills top and improved APi
This commit is contained in:
@@ -72,7 +72,7 @@ public interface EcoSkillsAPI {
|
||||
* @param player The player.
|
||||
* @return The average skill level.
|
||||
*/
|
||||
double getAverageSkillLevel(@NotNull Player player);
|
||||
double getAverageSkillLevel(@NotNull OfflinePlayer player);
|
||||
|
||||
/**
|
||||
* Get the total skill level.
|
||||
@@ -80,7 +80,7 @@ public interface EcoSkillsAPI {
|
||||
* @param player The player.
|
||||
* @return The total skill level.
|
||||
*/
|
||||
int getTotalSkillLevel(@NotNull Player player);
|
||||
int getTotalSkillLevel(@NotNull OfflinePlayer player);
|
||||
|
||||
/**
|
||||
* Get the effect level for player.
|
||||
@@ -89,7 +89,7 @@ public interface EcoSkillsAPI {
|
||||
* @param effect The effect.
|
||||
* @return The level.
|
||||
*/
|
||||
int getEffectLevel(@NotNull Player player,
|
||||
int getEffectLevel(@NotNull OfflinePlayer player,
|
||||
@NotNull Effect effect);
|
||||
|
||||
/**
|
||||
@@ -99,7 +99,7 @@ public interface EcoSkillsAPI {
|
||||
* @param stat The stat.
|
||||
* @return The stat level.
|
||||
*/
|
||||
int getStatLevel(@NotNull Player player,
|
||||
int getStatLevel(@NotNull OfflinePlayer player,
|
||||
@NotNull Stat stat);
|
||||
|
||||
/**
|
||||
|
||||
@@ -32,11 +32,11 @@ object EcoSkillsAPIImpl: EcoSkillsAPI {
|
||||
return player.getSkillProgress(skill)
|
||||
}
|
||||
|
||||
override fun getEffectLevel(player: Player, effect: Effect): Int {
|
||||
override fun getEffectLevel(player: OfflinePlayer, effect: Effect): Int {
|
||||
return player.getEffectLevel(effect)
|
||||
}
|
||||
|
||||
override fun getStatLevel(player: Player, stat: Stat): Int {
|
||||
override fun getStatLevel(player: OfflinePlayer, stat: Stat): Int {
|
||||
return player.getStatLevel(stat)
|
||||
}
|
||||
|
||||
@@ -76,11 +76,11 @@ object EcoSkillsAPIImpl: EcoSkillsAPI {
|
||||
return player.getStatModifier(key)
|
||||
}
|
||||
|
||||
override fun getAverageSkillLevel(player: Player): Double {
|
||||
override fun getAverageSkillLevel(player: OfflinePlayer): Double {
|
||||
return player.getAverageSkillLevel()
|
||||
}
|
||||
|
||||
override fun getTotalSkillLevel(player: Player): Int {
|
||||
override fun getTotalSkillLevel(player: OfflinePlayer): Int {
|
||||
return player.getTotalSkillLevel()
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,6 @@ package com.willfp.ecoskills.commands
|
||||
|
||||
import com.willfp.eco.core.EcoPlugin
|
||||
import com.willfp.eco.core.command.CommandHandler
|
||||
import com.willfp.eco.core.command.TabCompleteHandler
|
||||
import com.willfp.eco.core.command.impl.Subcommand
|
||||
import com.willfp.eco.util.StringUtils
|
||||
import com.willfp.ecoskills.EcoSkillsPlugin
|
||||
@@ -10,12 +9,12 @@ import com.willfp.ecoskills.getTotalSkillLevel
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.OfflinePlayer
|
||||
import org.bukkit.command.CommandSender
|
||||
import org.bukkit.util.StringUtil
|
||||
import java.util.*
|
||||
import kotlin.collections.ArrayList
|
||||
import kotlin.collections.HashMap
|
||||
import java.util.stream.Collectors
|
||||
import kotlin.collections.set
|
||||
import kotlin.math.ceil
|
||||
|
||||
|
||||
class CommandTop(plugin: EcoPlugin) :
|
||||
Subcommand(
|
||||
plugin,
|
||||
@@ -32,14 +31,19 @@ class CommandTop(plugin: EcoPlugin) :
|
||||
}
|
||||
|
||||
val plugin = plugin as EcoSkillsPlugin
|
||||
val uuidStrings = plugin.dataYml.getSubsectionOrNull("stats")?.getKeys(false) ?: ArrayList()
|
||||
val uuidStrings = plugin.dataYml.getSubsectionOrNull("player")?.getKeys(false) ?: ArrayList()
|
||||
val uuids = uuidStrings.stream().map { s -> UUID.fromString(s) }.toList()
|
||||
|
||||
val top = TreeMap<OfflinePlayer, Int>()
|
||||
val temp = LinkedHashMap<OfflinePlayer, Int>()
|
||||
|
||||
for (uuid in uuids) {
|
||||
val player = Bukkit.getOfflinePlayer(uuid)
|
||||
top[player] = player.getTotalSkillLevel()
|
||||
temp[player] = player.getTotalSkillLevel()
|
||||
}
|
||||
|
||||
val top = LinkedHashMap<OfflinePlayer, Int>()
|
||||
for (entry in temp.toList().sortedByDescending { (_, value) -> value }.toMap()) {
|
||||
top[entry.key] = entry.value
|
||||
}
|
||||
|
||||
val maxPage = ceil(top.size / 10.0).toInt()
|
||||
@@ -47,22 +51,29 @@ class CommandTop(plugin: EcoPlugin) :
|
||||
page = maxPage
|
||||
}
|
||||
|
||||
if (page <= 0) {
|
||||
page = 1
|
||||
}
|
||||
|
||||
val pagePlayers = HashMap<OfflinePlayer, Int>()
|
||||
|
||||
val start = (page - 1) * 10
|
||||
val end = start + 10
|
||||
|
||||
val players = top.descendingKeySet().toTypedArray()
|
||||
val players = top.keys.toTypedArray()
|
||||
for (i in start..end) {
|
||||
val player = players[i] ?: continue
|
||||
pagePlayers[player] = top[player]!!
|
||||
if (i > players.size - 1) {
|
||||
break
|
||||
}
|
||||
val player = players[i]
|
||||
pagePlayers[player] = temp[player]!!
|
||||
}
|
||||
|
||||
val messages = plugin.langYml.getStrings("top", false)
|
||||
val lines = ArrayList<String>()
|
||||
|
||||
|
||||
var rank = start
|
||||
var rank = start + 1
|
||||
for (entry in pagePlayers.entries) {
|
||||
val line = plugin.langYml.getString("top-line-format", false)
|
||||
.replace("%rank%", rank.toString())
|
||||
|
||||
Reference in New Issue
Block a user