diff --git a/ball-bukkit/src/main/java/cn/hamster3/mc/plugin/ball/bukkit/HamsterBallPlugin.java b/ball-bukkit/src/main/java/cn/hamster3/mc/plugin/ball/bukkit/HamsterBallPlugin.java index a8de0e7..58435c4 100644 --- a/ball-bukkit/src/main/java/cn/hamster3/mc/plugin/ball/bukkit/HamsterBallPlugin.java +++ b/ball-bukkit/src/main/java/cn/hamster3/mc/plugin/ball/bukkit/HamsterBallPlugin.java @@ -7,6 +7,7 @@ import cn.hamster3.mc.plugin.ball.common.api.BallAPI; import cn.hamster3.mc.plugin.ball.common.event.server.ServerOnlineEvent; import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; +import org.jetbrains.annotations.NotNull; import java.util.logging.Logger; @@ -17,10 +18,14 @@ public class HamsterBallPlugin extends JavaPlugin { return instance; } - public static void sync(Runnable runnable) { + public static void sync(@NotNull Runnable runnable) { Bukkit.getScheduler().runTask(instance, runnable); } + public static void async(@NotNull Runnable runnable) { + Bukkit.getScheduler().runTaskAsynchronously(instance, runnable); + } + @Override public void onLoad() { instance = this; diff --git a/ball-bukkit/src/main/java/cn/hamster3/mc/plugin/ball/bukkit/listener/BallBukkitListener.java b/ball-bukkit/src/main/java/cn/hamster3/mc/plugin/ball/bukkit/listener/BallBukkitListener.java index ddc0da0..a54b835 100644 --- a/ball-bukkit/src/main/java/cn/hamster3/mc/plugin/ball/bukkit/listener/BallBukkitListener.java +++ b/ball-bukkit/src/main/java/cn/hamster3/mc/plugin/ball/bukkit/listener/BallBukkitListener.java @@ -26,7 +26,9 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerTeleportEvent; import org.jetbrains.annotations.NotNull; +import java.sql.SQLException; import java.util.HashMap; +import java.util.List; import java.util.UUID; public class BallBukkitListener implements Listener, BallListener { @@ -175,6 +177,18 @@ public class BallBukkitListener implements Listener, BallListener { .build()); } } + HamsterBallPlugin.async(() -> { + try { + List cachedPlayerMessage = BallAPI.getInstance().getCachedPlayerMessage(uuid); + Audience audience = CoreAPI.getInstance().getAudienceProvider().player(uuid); + for (DisplayMessage message : cachedPlayerMessage) { + message.show(audience); + } + BallAPI.getInstance().removeCachedPlayerMessage(uuid); + } catch (SQLException e) { + e.printStackTrace(); + } + }); } @Data