From 556389a64c4555bb2297b2bf6a2bbd083993aa4e Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sun, 22 Aug 2021 22:07:15 +0100 Subject: [PATCH] Fixed /skills top and improved APi --- .../willfp/ecoskills/api/EcoSkillsAPI.java | 8 ++--- .../willfp/ecoskills/api/EcoSkillsAPIImpl.kt | 8 ++--- .../willfp/ecoskills/commands/CommandTop.kt | 33 ++++++++++++------- 3 files changed, 30 insertions(+), 19 deletions(-) diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/api/EcoSkillsAPI.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/api/EcoSkillsAPI.java index ccc081d..4b8acaf 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/api/EcoSkillsAPI.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/api/EcoSkillsAPI.java @@ -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); /** diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/api/EcoSkillsAPIImpl.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/api/EcoSkillsAPIImpl.kt index bc3bbac..23468dd 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/api/EcoSkillsAPIImpl.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/api/EcoSkillsAPIImpl.kt @@ -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() } } \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/commands/CommandTop.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/commands/CommandTop.kt index 55299f9..ede9db4 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/commands/CommandTop.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/commands/CommandTop.kt @@ -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() + val temp = LinkedHashMap() for (uuid in uuids) { val player = Bukkit.getOfflinePlayer(uuid) - top[player] = player.getTotalSkillLevel() + temp[player] = player.getTotalSkillLevel() + } + + val top = LinkedHashMap() + 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() 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() - 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())