diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/EcoSkillsPlugin.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/EcoSkillsPlugin.java index 6a0f62d..16953af 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/EcoSkillsPlugin.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/EcoSkillsPlugin.java @@ -5,11 +5,11 @@ import com.willfp.eco.core.command.impl.PluginCommand; import com.willfp.eco.core.integrations.IntegrationLoader; import com.willfp.ecoskills.commands.CommandEcoskills; import com.willfp.ecoskills.commands.CommandSkills; -import com.willfp.ecoskills.data.DataRunnable; +import com.willfp.ecoskills.data.SaveHandler; import com.willfp.ecoskills.data.DataListener; import com.willfp.ecoskills.config.DataYml; import com.willfp.ecoskills.config.EffectsYml; -import com.willfp.ecoskills.data.LeaderboardRunnable; +import com.willfp.ecoskills.data.LeaderboardHandler; import com.willfp.ecoskills.effects.Effect; import com.willfp.ecoskills.effects.Effects; import com.willfp.ecoskills.skills.Skill; @@ -66,9 +66,10 @@ public class EcoSkillsPlugin extends EcoPlugin { this.getEventManager().unregisterListener(skill); this.getEventManager().registerListener(skill); } + SaveHandler.Companion.save(this); - this.getScheduler().runTimer(new DataRunnable(this), 20000, 20000); - this.getScheduler().runTimer(new LeaderboardRunnable(this), 50, 2400); + this.getScheduler().runTimer(new SaveHandler.Runnable(this), 20000, 20000); + this.getScheduler().runTimer(new LeaderboardHandler.Runnable(), 50, 2400); } @Override 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 6c7a3e5..bb2e027 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 @@ -4,17 +4,12 @@ import com.willfp.eco.core.EcoPlugin import com.willfp.eco.core.command.CommandHandler import com.willfp.eco.core.command.impl.Subcommand import com.willfp.eco.util.StringUtils -import com.willfp.ecoskills.EcoSkillsPlugin -import com.willfp.ecoskills.data.LeaderboardRunnable +import com.willfp.ecoskills.data.LeaderboardHandler import com.willfp.ecoskills.getTotalSkillLevel -import org.bukkit.Bukkit import org.bukkit.OfflinePlayer import org.bukkit.command.CommandSender import org.bukkit.entity.Player -import java.util.* import kotlin.collections.ArrayList -import kotlin.collections.HashMap -import kotlin.collections.set import kotlin.math.ceil @@ -33,7 +28,7 @@ class CommandTop(plugin: EcoPlugin) : page = args[0].toIntOrNull() ?: 1 } - val top = LeaderboardRunnable.sortedLeaderboard + val top = LeaderboardHandler.sortedLeaderboard val maxPage = ceil(top.size / 10.0).toInt() if (maxPage < page) { diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/DataRunnable.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/DataRunnable.kt deleted file mode 100644 index bfc79a6..0000000 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/DataRunnable.kt +++ /dev/null @@ -1,24 +0,0 @@ -package com.willfp.ecoskills.data - -import com.willfp.eco.core.EcoPlugin -import com.willfp.ecoskills.EcoSkillsPlugin -import com.willfp.ecoskills.PlayerHelper -import org.bukkit.Bukkit - -class DataRunnable ( - private val plugin: EcoSkillsPlugin -) : Runnable { - override fun run() { - if (Bukkit.getOnlinePlayers().isEmpty()) { - return - } - if (plugin.configYml.getBool("log-autosaves")) { - plugin.logger.info("Auto-Saving player data!") - } - plugin.dataYml.save() - PlayerHelper.expMultiplierCache.clear() - if (plugin.configYml.getBool("log-autosaves")) { - plugin.logger.info("Saved data!") - } - } -} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/LeaderboardHandler.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/LeaderboardHandler.kt new file mode 100644 index 0000000..3d7d892 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/LeaderboardHandler.kt @@ -0,0 +1,39 @@ +package com.willfp.ecoskills.data + +import com.willfp.eco.core.EcoPlugin +import com.willfp.ecoskills.EcoSkillsPlugin +import com.willfp.ecoskills.PlayerHelper +import com.willfp.ecoskills.getTotalSkillLevel +import org.bukkit.Bukkit +import org.bukkit.OfflinePlayer +import java.util.* +import kotlin.collections.ArrayList +import kotlin.collections.HashMap + +class LeaderboardHandler ( + private val plugin: EcoSkillsPlugin +) { + companion object { + val sortedLeaderboard = ArrayList() + } + + class Runnable : java.lang.Runnable { + override fun run() { + val temp = HashMap() + val top = ArrayList() + + for (player in Bukkit.getOfflinePlayers()) { + temp[player] = 10000 - player.getTotalSkillLevel() + } + + val temp2 = temp.toList().sortedBy { (_, value) -> value }.toMap() + + for (entry in temp2) { + top.add(entry.key) + } + + sortedLeaderboard.clear() + sortedLeaderboard.addAll(top) + } + } +} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/LeaderboardRunnable.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/LeaderboardRunnable.kt deleted file mode 100644 index 7c218d7..0000000 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/LeaderboardRunnable.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.willfp.ecoskills.data - -import com.willfp.eco.core.EcoPlugin -import com.willfp.ecoskills.EcoSkillsPlugin -import com.willfp.ecoskills.PlayerHelper -import com.willfp.ecoskills.getTotalSkillLevel -import org.bukkit.Bukkit -import org.bukkit.OfflinePlayer -import java.util.* -import kotlin.collections.ArrayList -import kotlin.collections.HashMap - -class LeaderboardRunnable ( - private val plugin: EcoSkillsPlugin -) : Runnable { - override fun run() { - val temp = HashMap() - val top = ArrayList() - - for (player in Bukkit.getOfflinePlayers()) { - temp[player] = 10000 - player.getTotalSkillLevel() - } - - val temp2 = temp.toList().sortedBy { (_, value) -> value }.toMap() - - for (entry in temp2) { - top.add(entry.key) - } - - sortedLeaderboard.clear() - sortedLeaderboard.addAll(top) - } - - companion object { - val sortedLeaderboard = ArrayList() - } -} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/SaveHandler.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/SaveHandler.kt new file mode 100644 index 0000000..d328645 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/SaveHandler.kt @@ -0,0 +1,34 @@ +package com.willfp.ecoskills.data + +import com.willfp.eco.core.EcoPlugin +import com.willfp.ecoskills.EcoSkillsPlugin +import com.willfp.ecoskills.PlayerHelper +import com.willfp.ecoskills.getTotalSkillLevel +import org.bukkit.Bukkit +import org.bukkit.OfflinePlayer + +class SaveHandler { + companion object { + fun save(plugin: EcoSkillsPlugin) { + if (Bukkit.getOnlinePlayers().isEmpty()) { + return + } + if (plugin.configYml.getBool("log-autosaves")) { + plugin.logger.info("Auto-Saving player data!") + } + plugin.dataYml.save() + PlayerHelper.expMultiplierCache.clear() + if (plugin.configYml.getBool("log-autosaves")) { + plugin.logger.info("Saved data!") + } + } + } + + class Runnable( + private val plugin: EcoSkillsPlugin + ) : java.lang.Runnable { + override fun run() { + save(plugin) + } + } +} \ No newline at end of file