runTaskLater这个类怎么用,就是延迟1s广播
我下面这个用法好像不太对....
我下面这个用法好像不太对....

本帖最后由 凌语丶 于 2023-1-28 14:30 编辑
delay以tick为单位,你应该填20L
你需要new一个BukkitRunnable
然后里面override run()方法
里面写你要在延迟后执行的任务
然后后面加上.runTaskLater(plugin,delay);
复制代码
delay以tick为单位,你应该填20L
你需要new一个BukkitRunnable
然后里面override run()方法
里面写你要在延迟后执行的任务
然后后面加上.runTaskLater(plugin,delay);
- BukkitRunnable task = new BukkitRunnable{
- @Override
- public void run(){
- // TODO
- }
- };
- task.runTaskLater(plugin,delay);
本帖最后由 BlessAzek 于 2023-1-28 14:30 编辑
...... 首先 runTaskLater() 是 BukkitRunnable 中的一个方法,并不是什么类
BukkitRunnable 是一个抽象的计时器类,想要使用它你必须自己去实现其中的 run() 方法,即你希望这个计时器做什么
你可以继承并实现这个抽象类中的 run() 方法
就像这样:
复制代码
然后调用:
复制代码
当然你也可以直接 new 一个对象同样也能实现对应的功能
复制代码
...... 首先 runTaskLater() 是 BukkitRunnable 中的一个方法,并不是什么类
BukkitRunnable 是一个抽象的计时器类,想要使用它你必须自己去实现其中的 run() 方法,即你希望这个计时器做什么
你可以继承并实现这个抽象类中的 run() 方法
就像这样:
- public class TestRunnable extends BukkitRunnable {
- @Override
- public void run() {
- // do something...
- }
- }
然后调用:
- new TestRunnable().runTaskLater(Plugin, long)
当然你也可以直接 new 一个对象同样也能实现对应的功能
- new BukkitRunnable() {
- @Override
- public void run() {
- // do something
- }
- }.runTaskLater(Plugin, long);
又是我,我又来了复制代码
run方法内写入你需要运行的东西
runTaskLater(Plugin plugin, Long ticks);
Plugin plugin在主类的onEnable方法中直接使用this,别的地方就是用onEnable实例
ticks就是ticks,1tick = 0.05秒
所需要的import:
复制代码
- new BukkitRunnable() {
- @Override
- public void run() {
- }
- }.runTaskLater(Main.getInstance, 1);
run方法内写入你需要运行的东西
runTaskLater(Plugin plugin, Long ticks);
Plugin plugin在主类的onEnable方法中直接使用this,别的地方就是用onEnable实例
ticks就是ticks,1tick = 0.05秒
所需要的import:
- import org.bukkit.scheduler.BukkitRunnable;
谢啦各位,就是我检测到玩家说话比如“你好”,后台世界广播回答“你也好”
最终是下面的样子:
“你也好”
“你好”
我现在又感觉用runTaskLater有点麻烦......
因为每次sender.getServer().broadcastMessage的内容都是不一样的

最终是下面的样子:
“你也好”
“你好”
我现在又感觉用runTaskLater有点麻烦......
因为每次sender.getServer().broadcastMessage的内容都是不一样的
滨海小树 发表于 2023-1-28 17:10
谢啦各位,就是我检测到玩家说话比如“你好”,后台世界广播回答“你也好”
最终是下面的样子:
“你也好” ...
终于弄好了,如果有人想延迟的话,不要给一句话延迟(很麻烦),而是给整个event延迟。
最终达到自研插件的broadcast内容在原版输出玩家的话后面
