feat: 修复数据保存增加异步

This commit is contained in:
yhy
2026-06-02 16:34:16 +08:00
parent 916754a720
commit 3dd0e0a27d
11 changed files with 1221 additions and 91 deletions

View File

@@ -47,18 +47,16 @@ public class AuOnlineReward extends JavaPlugin {
}
public void startOnlineTimeTask() {
Bukkit.getScheduler().runTaskTimerAsynchronously(this, () -> {
Bukkit.getScheduler().runTaskTimer(this, () -> {
RefreshData refreshData = DataRefreshUtil.getSetting("OnlineDaily");
if(refreshData != null && !refreshData.isSameDayAsRecord()){
refreshData.setRecordTime(System.currentTimeMillis());
DataRefreshUtil.SaveRefreshDataRecord(refreshData);
// 每日数据刷新处理
getPlayerManager().clearAllPlayerData();
getPlayerManager().refreshLocalPlayerData(TimeType.DAILY);
return;
}
if(TimeCheckUtil.isMonthlySettleAccounts()){
getPlayerManager().clearAllPlayerData();
getPlayerManager().refreshLocalPlayerData(TimeType.MONTHLY);
return;
}
@@ -73,12 +71,16 @@ public class AuOnlineReward extends JavaPlugin {
@Override
public void onDisable() {
getPlayerManager().saveAllPlayerData();
getPlayerManager().clearAllPlayerData();
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(args.length == 1 && args[0].equalsIgnoreCase("open")){
if(!(sender instanceof Player)){
sender.sendMessage("§c该命令只能由玩家执行.");
return true;
}
OnlineGui.OpenGui((Player) sender);
return true;
}
@@ -135,15 +137,28 @@ public class AuOnlineReward extends JavaPlugin {
if("top".equalsIgnoreCase(args[0]) || "topDay".equalsIgnoreCase(args[0])){
HashMap<String,Integer> hashMap = new HashMap<>();
for (PlayerData playerData : getPlayerManager().getPlayerDataMap().values()) {
hashMap.put(playerData.getPlayerName(),playerData.todayOnline);
if ("topDay".equalsIgnoreCase(args[0])) {
hashMap.put(playerData.getPlayerName(), playerData.todayOnline / 60);
} else {
hashMap.put(playerData.getPlayerName(), playerData.totalOnline / 60);
}
}
Ranking ranking = new Ranking(hashMap);
sender.sendMessage(" ");
sender.sendMessage("§e§l★ §a"+DemonAPI.getTime("yyyy-MM-dd")+"在线排行榜 §7(不定时更新数据)");
for (int rank = 1; rank < 15; rank++) {
String rankingPlayer = ranking.getRankingPlayer(rank, "name");
String onlineTime = ranking.getRankingPlayer(rank, "value");
sender.sendMessage("§a§l★ §7第 §e" + rank + " §7名: §e" + rankingPlayer + "§7累积在线: §e"+onlineTime+"分钟");
String valueString = ranking.getRankingPlayer(rank, "value");
if(valueString.contains("§")){
sender.sendMessage("§a§l★ §7第 §e" + rank + " §7名: §e" + rankingPlayer + "§7累积在线: §e" + valueString);
continue;
}
if ("topDay".equalsIgnoreCase(args[0])) {
sender.sendMessage("§a§l★ §7第 §e" + rank + " §7名: §e" + rankingPlayer + "§7累积在线: §e" + valueString + "分钟");
} else {
int onlineTime = Integer.parseInt(valueString);
sender.sendMessage("§a§l★ §7第 §e" + rank + " §7名: §e" + rankingPlayer + "§7累积在线: §e" + (onlineTime/60) + "小时");
}
}
sender.sendMessage(" ");
return true;