diff --git a/pom.xml b/pom.xml index bbe0d0b..d846276 100644 --- a/pom.xml +++ b/pom.xml @@ -15,7 +15,7 @@ cc.carm.plugin ultradepository jar - 1.2.6 + 1.3.0 UltraDepository 超级仓库插件,支持设定不同物品的存储仓库。 diff --git a/src/main/java/cc/carm/plugin/ultradepository/configuration/PluginMessages.java b/src/main/java/cc/carm/plugin/ultradepository/configuration/PluginMessages.java index 8043b13..076a6ef 100644 --- a/src/main/java/cc/carm/plugin/ultradepository/configuration/PluginMessages.java +++ b/src/main/java/cc/carm/plugin/ultradepository/configuration/PluginMessages.java @@ -95,4 +95,8 @@ public class PluginMessages extends MessagesRoot { "&f数目输入错误,请输入正确的数字!" ); + public static final EasyMessage LOAD_FAILED = new EasyMessage( + "&c您的背包数据未被正确加载,请重新进入!" + ); + } 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 38df92e..eeb9480 100644 --- a/src/main/java/cc/carm/plugin/ultradepository/listener/UserListener.java +++ b/src/main/java/cc/carm/plugin/ultradepository/listener/UserListener.java @@ -1,6 +1,7 @@ package cc.carm.plugin.ultradepository.listener; import cc.carm.plugin.ultradepository.UltraDepository; +import cc.carm.plugin.ultradepository.configuration.PluginMessages; import cc.carm.plugin.ultradepository.data.UserData; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -20,8 +21,8 @@ public class UserListener implements Listener { return; } UUID uuid = event.getUniqueId(); - UltraDepository.getInstance().debug("尝试加载玩家 " + event.getName() + " 的数据..."); - UltraDepository.getUserManager().getDataCache().put(uuid, UltraDepository.getUserManager().loadData(uuid)); + UltraDepository.getUserManager().getDataCache() + .put(uuid, UltraDepository.getUserManager().loadData(uuid)); } @EventHandler(priority = EventPriority.MONITOR) @@ -36,7 +37,7 @@ public class UserListener implements Listener { UserData data = UltraDepository.getUserManager().getData(e.getPlayer().getUniqueId()); if (data == null) { e.setResult(PlayerLoginEvent.Result.KICK_OTHER); - e.setKickMessage(UltraDepository.getInstance().getName() + " 数据未被正确加载,请重新进入。"); + e.setKickMessage(PluginMessages.LOAD_FAILED.get(e.getPlayer())); } } @@ -44,7 +45,8 @@ public class UserListener implements Listener { public void onQuit(PlayerQuitEvent event) { Player player = event.getPlayer(); UUID playerUUID = player.getUniqueId(); - UltraDepository.getInstance().getScheduler().runAsync(() -> UltraDepository.getUserManager().unloadData(playerUUID, true)); + UltraDepository.getInstance().getScheduler() + .runAsync(() -> UltraDepository.getUserManager().unloadData(playerUUID, true)); } } 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 3a6d981..f0f6619 100644 --- a/src/main/java/cc/carm/plugin/ultradepository/manager/UserManager.java +++ b/src/main/java/cc/carm/plugin/ultradepository/manager/UserManager.java @@ -32,7 +32,7 @@ public class UserManager { try { long start = System.currentTimeMillis(); DataStorage storage = UltraDepository.getStorage(); - UltraDepository.getInstance().debug("正通过 " + storage.getClass().getSimpleName() + " 加载 " + userUUID + " 的用户数据..."); + UltraDepository.getInstance().debug("正通过 " + storage.getClass().getSimpleName() + " 加载 " + userUUID + " 的用户数据...(" + System.currentTimeMillis() + ")"); UserData data = UltraDepository.getStorage().loadData(userUUID); if (data == null) { @@ -64,7 +64,7 @@ public class UserManager { long start = System.currentTimeMillis(); DataStorage storage = UltraDepository.getStorage(); - UltraDepository.getInstance().debug("正通过 " + storage.getClass().getSimpleName() + " 保存 " + data.getUserUUID() + " 的用户数据..."); + UltraDepository.getInstance().debug("正通过 " + storage.getClass().getSimpleName() + " 保存 " + data.getUserUUID() + " 的用户数据...(" + System.currentTimeMillis() + ")"); storage.saveUserData(data); UltraDepository.getInstance().debug("通过 " + storage.getClass().getSimpleName() + " 保存 " + data.getUserUUID() + " 的用户数据完成," + diff --git a/src/main/java/cc/carm/plugin/ultradepository/storage/DataStorage.java b/src/main/java/cc/carm/plugin/ultradepository/storage/DataStorage.java index 16fca45..c18f573 100644 --- a/src/main/java/cc/carm/plugin/ultradepository/storage/DataStorage.java +++ b/src/main/java/cc/carm/plugin/ultradepository/storage/DataStorage.java @@ -1,6 +1,7 @@ package cc.carm.plugin.ultradepository.storage; import cc.carm.plugin.ultradepository.data.UserData; +import cc.carm.plugin.ultradepository.manager.UserManager; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -8,14 +9,38 @@ import java.util.UUID; public interface DataStorage { - + /** + * 在插件加载存储源时执行。 + * + * @return 是否初始化成功 + */ boolean initialize(); + /** + * 在插件被卸载时执行。 + */ void shutdown(); + /** + * 用于加载用户数据的方法。该方法将会被异步运行! + *
该方法一般无需自行执行,见 {@link UserManager#loadData(UUID)} + *
+ *
若不存在该用户的数据,请返回 null 。 + *
若加载出现任何错误,请抛出异常。 + * + * @param uuid 用户UUID + * @throws Exception 当出现任何错误时抛出 + */ @Nullable UserData loadData(@NotNull UUID uuid) throws Exception; + /** + * 用于保存用户数据的方法。 该方法将会被异步运行! + *
该方法一般无需自行执行,见 {@link UserManager#saveData(UserData)} + * + * @param data 用户数据 + * @throws Exception 当出现任何错误时抛出 + */ void saveUserData(@NotNull UserData data) throws Exception; /**