本帖最后由 颅内开灯 于 2021-7-24 16:49 编辑 
比如让sender.sendMessage(GameMasterReset.tilie + "你无权限使用该指令");延迟5秒后在提示
尝试用异步延迟感觉过于麻烦
public class Delay {
public Delay(){}
public static void Timeer(Player player, String s1, String s2, int i){
Map<Integer,String> map = new HashMap<Integer,String>();
Timer timer = new Timer();
int time = i*20;
timer.schedule(new TimerTask() {
@Override
public void run() {
player.sendTitle(s1,s2,0,100,20);
}
},time);
}
}
比如让sender.sendMessage(GameMasterReset.tilie + "你无权限使用该指令");延迟5秒后在提示
尝试用异步延迟感觉过于麻烦
public class Delay {
public Delay(){}
public static void Timeer(Player player, String s1, String s2, int i){
Map<Integer,String> map = new HashMap<Integer,String>();
Timer timer = new Timer();
int time = i*20;
timer.schedule(new TimerTask() {
@Override
public void run() {
player.sendTitle(s1,s2,0,100,20);
}
},time);
}
}
new BukkitRunnable 和 runTaskLaterAsynchronously 可以稍微简化该过程
(Bukkit 这里的编码模式有点像 JS 的 setTimeout)
(当然我也在等更好的方案
(Bukkit 这里的编码模式有点像 JS 的 setTimeout)
(当然我也在等更好的方案
Bukkit自带一个计划任务接口,写一个匿名内部类即可
final String content = "你要发送的内容";
final LivingEntity user = (LivingEntity)sender;
BukkitTask task = new BukkitRunnable() {
@Override
public void run() {
user.sendMessage(content);
}
}.runTaskLater(this,20);
注意,上述runTaskLater中的第一个参数是需要继承JavaPlugin类的对象,也就是你插件入口类的this,第二个参数的单位tick,不是秒
final String content = "你要发送的内容";
final LivingEntity user = (LivingEntity)sender;
BukkitTask task = new BukkitRunnable() {
@Override
public void run() {
user.sendMessage(content);
}
}.runTaskLater(this,20);
注意,上述runTaskLater中的第一个参数是需要继承JavaPlugin类的对象,也就是你插件入口类的this,第二个参数的单位tick,不是秒
Bukkit.getScheduler().runTaskLaterAsynchronously(plugin, ()->{
//code
}, time);
直接调用岂不是更香
//code
}, time);
直接调用岂不是更香
想吃油条 发表于 2021-7-25 01:05
Bukkit.getScheduler().runTaskLaterAsynchronously(plugin, ()->{
//code
这个方式 我一直在用,确实这个好用一些。
new BukkitRunnable 和 runTaskLaterAsynchronously 可以稍微简化该过程 (Bukkit 这里的编码模式有点像 JS 的 setTimeout)