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




凌语丶
本帖最后由 凌语丶 于 2023-1-28 14:30 编辑

delay以tick为单位,你应该填20L
你需要new一个BukkitRunnable
然后里面override run()方法
里面写你要在延迟后执行的任务
然后后面加上.runTaskLater(plugin,delay);
  1. BukkitRunnable task = new BukkitRunnable{
  2. @Override
  3. public void run(){
  4. // TODO
  5. }
  6. };
  7. task.runTaskLater(plugin,delay);
复制代码




BlessAzek
本帖最后由 BlessAzek 于 2023-1-28 14:30 编辑

...... 首先 runTaskLater() 是 BukkitRunnable 中的一个方法,并不是什么类
BukkitRunnable 是一个抽象的计时器类,想要使用它你必须自己去实现其中的 run() 方法,即你希望这个计时器做什么

你可以继承并实现这个抽象类中的 run() 方法
就像这样:
  1. public class TestRunnable extends BukkitRunnable {
  2.     @Override
  3.     public void run() {
  4.         // do something...
  5.     }
  6. }
复制代码



然后调用:
  1. new TestRunnable().runTaskLater(Plugin, long)
复制代码



当然你也可以直接 new 一个对象同样也能实现对应的功能
  1.         new BukkitRunnable() {
  2.             @Override
  3.             public void run() {
  4.                 // do something
  5.             }
  6.         }.runTaskLater(Plugin, long);
复制代码


while1cry
又是我,我又来了

  1. new BukkitRunnable() {
  2.     @Override
  3.     public void run() {

  4.     }
  5. }.runTaskLater(Main.getInstance, 1);
复制代码


run方法内写入你需要运行的东西
runTaskLater(Plugin plugin, Long ticks);

Plugin plugin在主类的onEnable方法中直接使用this,别的地方就是用onEnable实例
ticks就是ticks,1tick = 0.05秒

所需要的import:
  1. import org.bukkit.scheduler.BukkitRunnable;
复制代码

滨海小树
谢啦各位,就是我检测到玩家说话比如“你好”,后台世界广播回答“你也好”
最终是下面的样子:
“你也好”
“你好”

我现在又感觉用runTaskLater有点麻烦......
因为每次sender.getServer().broadcastMessage的内容都是不一样的

滨海小树
滨海小树 发表于 2023-1-28 17:10
谢啦各位,就是我检测到玩家说话比如“你好”,后台世界广播回答“你也好”
最终是下面的样子:
“你也好” ...

终于弄好了,如果有人想延迟的话,不要给一句话延迟(很麻烦),而是给整个event延迟。

最终达到自研插件的broadcast内容在原版输出玩家的话后面


第一页 上一页 下一页 最后一页