feat(ball-bukkit): 修复玩家进入服务器时不显示缓存消息的bug

This commit is contained in:
2023-07-04 23:59:50 +08:00
parent c317af2eac
commit f0cd59fc29
2 changed files with 20 additions and 1 deletions

View File

@@ -7,6 +7,7 @@ import cn.hamster3.mc.plugin.ball.common.api.BallAPI;
import cn.hamster3.mc.plugin.ball.common.event.server.ServerOnlineEvent; import cn.hamster3.mc.plugin.ball.common.event.server.ServerOnlineEvent;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
import java.util.logging.Logger; import java.util.logging.Logger;
@@ -17,10 +18,14 @@ public class HamsterBallPlugin extends JavaPlugin {
return instance; return instance;
} }
public static void sync(Runnable runnable) { public static void sync(@NotNull Runnable runnable) {
Bukkit.getScheduler().runTask(instance, runnable); Bukkit.getScheduler().runTask(instance, runnable);
} }
public static void async(@NotNull Runnable runnable) {
Bukkit.getScheduler().runTaskAsynchronously(instance, runnable);
}
@Override @Override
public void onLoad() { public void onLoad() {
instance = this; instance = this;

View File

@@ -26,7 +26,9 @@ import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.event.player.PlayerTeleportEvent;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.sql.SQLException;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.UUID; import java.util.UUID;
public class BallBukkitListener implements Listener, BallListener { public class BallBukkitListener implements Listener, BallListener {
@@ -175,6 +177,18 @@ public class BallBukkitListener implements Listener, BallListener {
.build()); .build());
} }
} }
HamsterBallPlugin.async(() -> {
try {
List<DisplayMessage> 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 @Data