首页 > 解决方案 > 防止 Spigot Watchdog 线程停止服务器

问题描述

我正在编写一个新的 Spigot 插件,因为我想学习一些新东西。我试图通过我的插件放置几千个块(我这样做是有原因的,我知道这听起来很愚蠢),但问题是几秒钟后服务器停止工作,因为服务器没有响应。服务器目前没有响应对我来说不是问题,但它是 Spigot Watchdog Thread 的问题。它认为服务器崩溃并停止服务器。我尝试异步放置块,因此服务器继续运行,但 Spigot 不允许我这样做,如果我尝试这样做,则会出错。有没有办法防止 Spigot Watchdog Thread 因为没有响应而停止我的服务器?或者有没有其他解决方案来放置这么多块?

错误日志:

同步任务: https ://hastebin.com/fogixamefe.yaml

异步任务: https ://hastebin.com/pumucozula.properties

标签: javapluginscrashminecraft

解决方案


您可以设置max-tick-time-1.server.properties

这应该完全禁用看门狗。


如果您想放置这么多块而不会出现延迟,您可以使用延迟放置块runTaskLater()。例如:

// this will place 10 blocks each tick for next 1000 ticks

for (int i = 0; i < 1000; i++) {
  Bukkit.getScheduler().runTaskLater(plugin, new Runnable() {
    @Override
    public void run() {
      for (int j = 0; j < 10; j++) {
        placeNextBlock();
      }
    }
  }, i);
}

由于 Minecraft 的服务器限制,您不能在异步任务中放置块。


推荐阅读