From a29f0473af9fbef1f568c25616e5352d3ecf1a25 Mon Sep 17 00:00:00 2001 From: Kyoukawa Meishin Date: Fri, 17 Oct 2025 15:33:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8EPlayerExpSystem=E9=9B=86=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StatusSystem/PlayerJoinListener.java | 4 +- ...{Foundation.java => StatusFoundation.java} | 49 ++++++++++++++++--- 2 files changed, 44 insertions(+), 9 deletions(-) rename src/main/java/com/mmlsystem/StatusSystem/{Foundation.java => StatusFoundation.java} (65%) diff --git a/src/main/java/com/mmlsystem/StatusSystem/PlayerJoinListener.java b/src/main/java/com/mmlsystem/StatusSystem/PlayerJoinListener.java index bc66a27..5ff2a04 100644 --- a/src/main/java/com/mmlsystem/StatusSystem/PlayerJoinListener.java +++ b/src/main/java/com/mmlsystem/StatusSystem/PlayerJoinListener.java @@ -5,9 +5,9 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; public class PlayerJoinListener implements Listener { - private final Foundation plugin; + private final StatusFoundation plugin; - public PlayerJoinListener(Foundation plugin) { + public PlayerJoinListener(StatusFoundation plugin) { this.plugin = plugin; } diff --git a/src/main/java/com/mmlsystem/StatusSystem/Foundation.java b/src/main/java/com/mmlsystem/StatusSystem/StatusFoundation.java similarity index 65% rename from src/main/java/com/mmlsystem/StatusSystem/Foundation.java rename to src/main/java/com/mmlsystem/StatusSystem/StatusFoundation.java index 0236007..79dbf52 100644 --- a/src/main/java/com/mmlsystem/StatusSystem/Foundation.java +++ b/src/main/java/com/mmlsystem/StatusSystem/StatusFoundation.java @@ -8,9 +8,16 @@ import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scoreboard.*; +import com.mmlsystem.PlayerExpSystem.Foundation; +import com.mmlsystem.PlayerExpSystem.ExpAPI; -public class Foundation extends JavaPlugin { +import java.time.Duration; +import java.util.Objects; + +public class StatusFoundation extends JavaPlugin { public static Economy econ; + public static ExpAPI api; + public int totalTime; @Override public void onEnable() { @@ -23,6 +30,8 @@ public class Foundation extends JavaPlugin { return; } getServer().getPluginManager().registerEvents(new PlayerJoinListener(this), this); + Foundation foundation = (Foundation) Objects.requireNonNull(Bukkit.getPluginManager().getPlugin("PlayerExpSystem")); + api = new ExpAPI(foundation); getLogger().info("插件启用成功。"); } @@ -50,11 +59,15 @@ public class Foundation extends JavaPlugin { Objective objective = board.registerNewObjective("info", "dummy", ChatColor.GOLD + "✦ 统计数据 ✦"); objective.setDisplaySlot(DisplaySlot.SIDEBAR); - objective.getScore(ChatColor.AQUA + "金币").setScore(7); - objective.getScore(ChatColor.RED + " " + econ.getBalance(player) ).setScore(6); + objective.getScore(ChatColor.AQUA + "金币").setScore(10); + objective.getScore(ChatColor.RED + " " + econ.getBalance(player) ).setScore(9); + objective.getScore(" ").setScore(8); + objective.getScore(ChatColor.AQUA + "当前在线人数").setScore(7); + objective.getScore(ChatColor.GREEN + " " + Bukkit.getOnlinePlayers().size()).setScore(6); objective.getScore(" ").setScore(5); - objective.getScore(ChatColor.AQUA + "当前在线人数").setScore(4); - objective.getScore(ChatColor.GREEN + " " + Bukkit.getOnlinePlayers().size()).setScore(3); + getTime(player); + objective.getScore(ChatColor.AQUA + "在线时长").setScore(4); + objective.getScore(ChatColor.GREEN + " " + getTimeString()).setScore(3); objective.getScore("").setScore(2); objective.getScore(ChatColor.GRAY + "mymc.life").setScore(1); @@ -72,9 +85,31 @@ public class Foundation extends JavaPlugin { board.resetScores(entry); } } - objective.getScore(ChatColor.RED + " " + econ.getBalance(player) ).setScore(6); - objective.getScore(ChatColor.GREEN + " " + Bukkit.getOnlinePlayers().size()).setScore(3); + objective.getScore(ChatColor.RED + " " + econ.getBalance(player) ).setScore(9); + objective.getScore(ChatColor.GREEN + " " + Bukkit.getOnlinePlayers().size()).setScore(6); + getTime(player); + objective.getScore(ChatColor.GREEN + " " + getTimeString()).setScore(3); } }.runTaskTimer(this, 0L, 100L); } + + public void setTime(int time) { + this.totalTime = time / 1000; + } + + public void getTime(Player player) { + api.getPlayerOnlineTime(player, this::setTime); + } + + public String getTimeString() { + if (totalTime == -1) { + return "未知错误"; + } + long hour; + long minute; + Duration duration = Duration.ofSeconds(totalTime); + hour = duration.toHours(); + minute = duration.toMinutesPart(); + return String.format("%d:%02d", hour, minute); + } }