diff --git a/pom.xml b/pom.xml index 0b0f14f..7d54459 100644 --- a/pom.xml +++ b/pom.xml @@ -15,7 +15,7 @@ cc.carm.plugin ultradepository jar - 1.3.2 + 1.3.3 UltraDepository 超级仓库插件,支持设定不同物品的存储仓库。 diff --git a/src/main/java/cc/carm/plugin/ultradepository/UltraDepository.java b/src/main/java/cc/carm/plugin/ultradepository/UltraDepository.java index ca90c32..e54fa24 100644 --- a/src/main/java/cc/carm/plugin/ultradepository/UltraDepository.java +++ b/src/main/java/cc/carm/plugin/ultradepository/UltraDepository.java @@ -60,9 +60,6 @@ public class UltraDepository extends EasyPlugin { return false; } - log("加载用户系统..."); - userManager = new UserManager(); - log("加载经济系统..."); if (Bukkit.getPluginManager().getPlugin("Vault") != null) { economyManager = new EconomyManager(); @@ -76,11 +73,15 @@ public class UltraDepository extends EasyPlugin { log("加载仓库管理器..."); depositoryManager = new DepositoryManager(); getDepositoryManager().loadDepositories(); - GUI.initialize(this); + + log("加载用户系统..."); + userManager = new UserManager(); + log("注册监听器..."); regListener(new UserListener()); regListener(new CollectListener()); + GUI.initialize(this); log("注册指令..."); registerCommand("UltraDepository", new DepositoryCommand()); @@ -107,6 +108,9 @@ public class UltraDepository extends EasyPlugin { else return plugin.getDescription().getVersion(); })); } + + getUserManager().loadPlayersData(); + return true; } @@ -123,6 +127,7 @@ public class UltraDepository extends EasyPlugin { log("卸载监听器..."); Bukkit.getServicesManager().unregisterAll(this); + } public static DataStorage getStorage() { diff --git a/src/main/java/cc/carm/plugin/ultradepository/listener/UserListener.java b/src/main/java/cc/carm/plugin/ultradepository/listener/UserListener.java index eeb9480..c70ba63 100644 --- a/src/main/java/cc/carm/plugin/ultradepository/listener/UserListener.java +++ b/src/main/java/cc/carm/plugin/ultradepository/listener/UserListener.java @@ -20,15 +20,13 @@ public class UserListener implements Listener { if (event.getLoginResult() != AsyncPlayerPreLoginEvent.Result.ALLOWED) { return; } - UUID uuid = event.getUniqueId(); - UltraDepository.getUserManager().getDataCache() - .put(uuid, UltraDepository.getUserManager().loadData(uuid)); + UltraDepository.getUserManager().loadDataCache(event.getUniqueId()); } @EventHandler(priority = EventPriority.MONITOR) public void onPreLoginMonitor(AsyncPlayerPreLoginEvent event) { if (event.getLoginResult() != AsyncPlayerPreLoginEvent.Result.ALLOWED) { - UltraDepository.getUserManager().getDataCache().remove(event.getUniqueId()); + UltraDepository.getUserManager().removeDataCache(event.getUniqueId()); } } diff --git a/src/main/java/cc/carm/plugin/ultradepository/manager/UserManager.java b/src/main/java/cc/carm/plugin/ultradepository/manager/UserManager.java index f0f6619..bc4d359 100644 --- a/src/main/java/cc/carm/plugin/ultradepository/manager/UserManager.java +++ b/src/main/java/cc/carm/plugin/ultradepository/manager/UserManager.java @@ -4,6 +4,7 @@ import cc.carm.plugin.ultradepository.UltraDepository; import cc.carm.plugin.ultradepository.data.UserData; import cc.carm.plugin.ultradepository.storage.DataStorage; import cc.carm.plugin.ultradepository.util.DateIntUtil; +import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -20,6 +21,27 @@ public class UserManager { return dataCache; } + public void loadPlayersData() { + if (Bukkit.getOnlinePlayers().size() < 1) return; + + UltraDepository.getInstance().log("加载当前在线玩家数据..."); + // 用于热加载时重载玩家数据。 + Bukkit.getOnlinePlayers().forEach(player -> loadDataCache(player.getUniqueId())); + } + + public @NotNull UserData loadDataCache(@NotNull UUID userUUID) { + UserData data = loadData(userUUID); + UltraDepository.getUserManager().getDataCache().put(userUUID, data); + return data; + } + + + public boolean removeDataCache(@NotNull UUID userUUID) { + boolean contains = getDataCache().containsKey(userUUID); + getDataCache().remove(userUUID); + return contains; + } + public @Nullable UserData getData(@NotNull UUID userUUID) { return getDataCache().get(userUUID); } @@ -56,7 +78,7 @@ public class UserManager { UserData data = getData(uuid); if (data == null) return; if (save) saveData(data); - dataCache.remove(uuid); + removeDataCache(uuid); } public void saveData(UserData data) {