9
0
mirror of https://github.com/Auxilor/EcoSkills.git synced 2026-01-02 05:46:57 +00:00

Improved handlers

This commit is contained in:
Auxilor
2021-08-23 23:59:51 +01:00
parent 47dc86760e
commit 6880babfec
6 changed files with 80 additions and 72 deletions

View File

@@ -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

View File

@@ -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) {

View File

@@ -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!")
}
}
}

View File

@@ -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<OfflinePlayer>()
}
class Runnable : java.lang.Runnable {
override fun run() {
val temp = HashMap<OfflinePlayer, Int>()
val top = ArrayList<OfflinePlayer>()
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)
}
}
}

View File

@@ -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<OfflinePlayer, Int>()
val top = ArrayList<OfflinePlayer>()
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<OfflinePlayer>()
}
}

View File

@@ -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)
}
}
}