From bc29e05369c68186c792f68b006651703fb24f17 Mon Sep 17 00:00:00 2001 From: StarWishsama Date: Sun, 22 Dec 2024 22:37:34 +0800 Subject: [PATCH] fix(uni): avoid broken data prevent fetch cache --- pom.xml | 12 ++++++------ .../storage/controller/BlockDataController.java | 11 +++++++---- .../storage/controller/ProfileDataController.java | 2 +- .../controller/SlimefunUniversalBlockData.java | 5 ++++- .../slimefun4/implementation/Slimefun.java | 10 ++++++++++ 5 files changed, 28 insertions(+), 12 deletions(-) diff --git a/pom.xml b/pom.xml index 4ee9306fe2..a26c52040e 100644 --- a/pom.xml +++ b/pom.xml @@ -27,9 +27,9 @@ ${project.basedir}/.mvn/settings.xml - - 1.21 - https://hub.spigotmc.org/javadocs/spigot/ + + 1.21 + https://papermc.io/javadocs @@ -273,9 +273,9 @@ - org.spigotmc - spigot-api - ${spigot.version}-R0.1-SNAPSHOT + io.papermc.paper + paper-api + ${paper.version}-R0.1-SNAPSHOT provided diff --git a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/BlockDataController.java b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/BlockDataController.java index 9cae260171..a1ddfc129e 100644 --- a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/BlockDataController.java +++ b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/BlockDataController.java @@ -525,9 +525,11 @@ public void getUniversalBlockData(@Nonnull UUID uuid, IAsyncReadCallback getUniversalBlockDataFromCache(@Nonn return loadedUniversalData.values().stream() .filter(uniData -> uniData instanceof SlimefunUniversalBlockData ubd - && ubd.getLastPresent().toLocation().equals(l)) + && ubd.getLastPresent() != null + && l.equals(ubd.getLastPresent().toLocation())) .map(data -> (SlimefunUniversalBlockData) data) .findFirst(); } diff --git a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/ProfileDataController.java b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/ProfileDataController.java index c57294ecd1..3ef46d09b8 100644 --- a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/ProfileDataController.java +++ b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/ProfileDataController.java @@ -349,7 +349,7 @@ public void run() { return; } - if (Bukkit.getOfflinePlayer(UUID.fromString(pUuid)).isOnline()) { + if (Bukkit.getOfflinePlayer(UUID.fromString(pUuid)).isConnected()) { return; } diff --git a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/SlimefunUniversalBlockData.java b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/SlimefunUniversalBlockData.java index c1b4355dd2..4c39783ce1 100644 --- a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/SlimefunUniversalBlockData.java +++ b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/SlimefunUniversalBlockData.java @@ -3,7 +3,9 @@ import com.xzavier0722.mc.plugin.slimefun4.storage.controller.attributes.UniversalDataTrait; import com.xzavier0722.mc.plugin.slimefun4.storage.util.LocationUtils; import io.github.bakedlibs.dough.blocks.BlockPosition; +import io.github.thebusybiscuit.slimefun4.implementation.Slimefun; import java.util.UUID; +import java.util.logging.Level; import org.bukkit.Location; public class SlimefunUniversalBlockData extends SlimefunUniversalData { @@ -36,7 +38,8 @@ public BlockPosition getLastPresent() { var data = getData("location"); if (data == null) { - throw new IllegalArgumentException("UniversalBlockData missing location data"); + Slimefun.logger().log(Level.WARNING, "UniversalBlockData [" + getUUID() + "] missing location data"); + return null; } lastPresent = new BlockPosition(LocationUtils.toLocation(data)); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/Slimefun.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/Slimefun.java index fde30a5094..d1670f749a 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/Slimefun.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/Slimefun.java @@ -258,6 +258,16 @@ public void onEnable() { // We want to ensure that the Server uses a compatible server software and have no // incompatible plugins getServer().getPluginManager().disablePlugin(this); + } else if (!PaperLib.isPaper()) { + getLogger().log(Level.WARNING, "#######################################################"); + getLogger().log(Level.WARNING, ""); + getLogger().log(Level.WARNING, "自 24/12/22 起 Slimefun 汉化版"); + getLogger().log(Level.WARNING, "转为 Paper 插件, 你必须要使用 Paper"); + getLogger().log(Level.WARNING, "或其分支才可使用 Slimefun."); + getLogger().log(Level.WARNING, "立即下载 Paper: https://papermc.io/downloads/paper"); + getLogger().log(Level.WARNING, ""); + getLogger().log(Level.WARNING, "#######################################################"); + getServer().getPluginManager().disablePlugin(this); } else { // The Environment has been validated. onPluginStart();