java - 防止 Spigot Watchdog 线程停止服务器
问题描述
我正在编写一个新的 Spigot 插件,因为我想学习一些新东西。我试图通过我的插件放置几千个块(我这样做是有原因的,我知道这听起来很愚蠢),但问题是几秒钟后服务器停止工作,因为服务器没有响应。服务器目前没有响应对我来说不是问题,但它是 Spigot Watchdog Thread 的问题。它认为服务器崩溃并停止服务器。我尝试异步放置块,因此服务器继续运行,但 Spigot 不允许我这样做,如果我尝试这样做,则会出错。有没有办法防止 Spigot Watchdog Thread 因为没有响应而停止我的服务器?或者有没有其他解决方案来放置这么多块?
错误日志:
解决方案
您可以设置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 的服务器限制,您不能在异步任务中放置块。
推荐阅读
- c++ - 如何通过api hook拒绝winword中的“另存为”
- asp.net-mvc - MVC Core:没有斜杠的错误链接 url
- php - '试图获得非对象的属性'
- django - Django:使用条件 login_required 查看
- batch-file - 使用 forfiles 获取上次访问日期
- android - 如果显示插页式广告,则不会在 Activity 中调用 onResume() 和 onPause()
- ios - 从 App 内获取 App 证书的有效期
- typescript - 在 Typescript 中,如何确保变量匹配联合类型的情况而不重写其定义?
- python - 导入 google-cloud-bigquery python 模块时出错
- csv - 从 CSV 文件写入 OrientDB 数据