在不停止服务器的情况下执行操作之前等待一段时间

Wait a time before do action without stop server

我正在为 minecraft 服务器开发一个 bedwars 插件,一切正常,但在开始时我想要一个 5 秒的计时器,然后再开始游戏并在游戏上显示一个标题,我使用了这段代码:

        TimeUnit.SECONDS.sleep(1);
        sendtitle("4");
        TimeUnit.SECONDS.sleep(1);
        sendtitle("3");
        TimeUnit.SECONDS.sleep(1);
        sendtitle("2");
        TimeUnit.SECONDS.sleep(1);
        sendtitle("1");
        TimeUnit.SECONDS.sleep(1);
        sendtitle("SusyBaka");

但是我完全暂停了服务器,我尝试使用多线程但标题没有出现,有人可以帮助我吗?

你不应该在 spigot-server 上使用 Thread.sleep() 或类似的东西,因为如你所说,它会停止完整的服务器(并且它可以使玩家超时)

要制作计时器,请使用:

public int count = 5;
public BukkitTask task;

public void method() {
   task = Bukkit.getServer().getScheduler().runTaskTimer(MyPlugin.getInstance(), () -> {
      if(count == 0) {
         task.cancel();
         sendtitle("SusyBaka");
      } else {
         count--;
         sendtitle("Start in " + count + " seconds");
      }
   }, 20, 20); // 20 ticks = 1 second
}