1
mirror of https://github.com/CarmJos/UltraDepository.git synced 2024-09-19 19:55:45 +00:00

[v1.3.3] 版本更新

- [A] 支持通过 PlugMan 等插件进行热重载。
This commit is contained in:
Carm Jos 2022-01-21 23:19:09 +08:00
parent c841a7b1b3
commit afd62a493d
4 changed files with 35 additions and 10 deletions

View File

@ -15,7 +15,7 @@
<groupId>cc.carm.plugin</groupId> <groupId>cc.carm.plugin</groupId>
<artifactId>ultradepository</artifactId> <artifactId>ultradepository</artifactId>
<packaging>jar</packaging> <packaging>jar</packaging>
<version>1.3.2</version> <version>1.3.3</version>
<name>UltraDepository</name> <name>UltraDepository</name>
<description>超级仓库插件,支持设定不同物品的存储仓库。</description> <description>超级仓库插件,支持设定不同物品的存储仓库。</description>

View File

@ -60,9 +60,6 @@ public class UltraDepository extends EasyPlugin {
return false; return false;
} }
log("加载用户系统...");
userManager = new UserManager();
log("加载经济系统..."); log("加载经济系统...");
if (Bukkit.getPluginManager().getPlugin("Vault") != null) { if (Bukkit.getPluginManager().getPlugin("Vault") != null) {
economyManager = new EconomyManager(); economyManager = new EconomyManager();
@ -76,11 +73,15 @@ public class UltraDepository extends EasyPlugin {
log("加载仓库管理器..."); log("加载仓库管理器...");
depositoryManager = new DepositoryManager(); depositoryManager = new DepositoryManager();
getDepositoryManager().loadDepositories(); getDepositoryManager().loadDepositories();
GUI.initialize(this);
log("加载用户系统...");
userManager = new UserManager();
log("注册监听器..."); log("注册监听器...");
regListener(new UserListener()); regListener(new UserListener());
regListener(new CollectListener()); regListener(new CollectListener());
GUI.initialize(this);
log("注册指令..."); log("注册指令...");
registerCommand("UltraDepository", new DepositoryCommand()); registerCommand("UltraDepository", new DepositoryCommand());
@ -107,6 +108,9 @@ public class UltraDepository extends EasyPlugin {
else return plugin.getDescription().getVersion(); else return plugin.getDescription().getVersion();
})); }));
} }
getUserManager().loadPlayersData();
return true; return true;
} }
@ -123,6 +127,7 @@ public class UltraDepository extends EasyPlugin {
log("卸载监听器..."); log("卸载监听器...");
Bukkit.getServicesManager().unregisterAll(this); Bukkit.getServicesManager().unregisterAll(this);
} }
public static DataStorage getStorage() { public static DataStorage getStorage() {

View File

@ -20,15 +20,13 @@ public class UserListener implements Listener {
if (event.getLoginResult() != AsyncPlayerPreLoginEvent.Result.ALLOWED) { if (event.getLoginResult() != AsyncPlayerPreLoginEvent.Result.ALLOWED) {
return; return;
} }
UUID uuid = event.getUniqueId(); UltraDepository.getUserManager().loadDataCache(event.getUniqueId());
UltraDepository.getUserManager().getDataCache()
.put(uuid, UltraDepository.getUserManager().loadData(uuid));
} }
@EventHandler(priority = EventPriority.MONITOR) @EventHandler(priority = EventPriority.MONITOR)
public void onPreLoginMonitor(AsyncPlayerPreLoginEvent event) { public void onPreLoginMonitor(AsyncPlayerPreLoginEvent event) {
if (event.getLoginResult() != AsyncPlayerPreLoginEvent.Result.ALLOWED) { if (event.getLoginResult() != AsyncPlayerPreLoginEvent.Result.ALLOWED) {
UltraDepository.getUserManager().getDataCache().remove(event.getUniqueId()); UltraDepository.getUserManager().removeDataCache(event.getUniqueId());
} }
} }

View File

@ -4,6 +4,7 @@ import cc.carm.plugin.ultradepository.UltraDepository;
import cc.carm.plugin.ultradepository.data.UserData; import cc.carm.plugin.ultradepository.data.UserData;
import cc.carm.plugin.ultradepository.storage.DataStorage; import cc.carm.plugin.ultradepository.storage.DataStorage;
import cc.carm.plugin.ultradepository.util.DateIntUtil; import cc.carm.plugin.ultradepository.util.DateIntUtil;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@ -20,6 +21,27 @@ public class UserManager {
return dataCache; 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) { public @Nullable UserData getData(@NotNull UUID userUUID) {
return getDataCache().get(userUUID); return getDataCache().get(userUUID);
} }
@ -56,7 +78,7 @@ public class UserManager {
UserData data = getData(uuid); UserData data = getData(uuid);
if (data == null) return; if (data == null) return;
if (save) saveData(data); if (save) saveData(data);
dataCache.remove(uuid); removeDataCache(uuid);
} }
public void saveData(UserData data) { public void saveData(UserData data) {