调度任务¶
来源信息
- 原文仓库:github.com/EndstoneMC/endstone
- 许可说明:以原仓库或原站点公开许可声明为准。
Endstone提供了一个任务调度系统,允许插件为将来的执行安排任务,可能在定期间隔。在本教程中,我们将指导您安排一个简单的任务。
这里,我们想要一个显示"Hi!"的屏幕弹出窗口每隔1秒钟为每个在线玩家出现。
=== " Python"
``` python title="src/endstone_my_plugin/my_plugin.py" linenums="1" hl_lines="10 12-14"
from endstone.plugin import Plugin
class MyPlugin(Plugin):
api_version = "0.11"
# ...
def on_enable(self) -> None:
self.logger.info("on_enable is called!")
self.server.scheduler.run_task(self, self.say_hi, delay=0, period=20)
def say_hi(self) -> None:
for player in self.server.online_players:
player.send_popup("Hi!")
```
=== " C++"
``` c++ title="include/my_plugin.h" linenums="1" hl_lines="10 13-19"
#include <endstone/endstone.hpp>
class MyPlugin : public endstone::Plugin {
public:
// ...
void onEnable() override
{
getLogger().info("onEnable is called");
getServer().getScheduler().runTaskTimer([&]() { sayHi(); }, 0, 20);
}
void sayHi()
{
for (auto& player : getServer().getOnlinePlayers())
{
player->sendPopup("Hi");
}
}
};
```
就是这样! 服务器现在将以20刻或约每秒一次的间隔向所有在线玩家发送"Hi"消息。