本帖最后由 丶米饭 于 2022-8-17 21:23 编辑
复制代码
来自群组: Server CT
很久之前我写过这么个旧版帖子
我想修改内容但是发现太久没人回复被锁帖了.不能编辑了
我又不想误导新人那么写插件,所以新开一贴分享下最新的写法
如下
- // 创建异步操作
- new BukkitRunnable() {
- @Override
- public void run() {
- // 这里从数据异步加载数据组装Inventory出来
- Inventory inventory = OpenGui.getInstance().createGui(player);
- // 这里直接使用调度器同步打开这个gui即可
- Bukkit.getScheduler().runTask(PlayerTitle.getInstance(), () -> player.openInventory(inventory));
- }
- }.runTaskAsynchronously(PlayerTitle.getInstance());
来自群组: Server CT
感谢看了很有帮助
临江仙还在开吗 群号多少 我之前退了
感谢分享,受益匪浅
如果有傻子,那一定是我
感谢米饭大佬的分享!

旧帖子:异步的异步的异步的异步的……
每日用不到.JPG

其实我一直很好奇一件事,我看到不少开源项目的写法是
new BukkitRunnable()
但同时也有很多人喜欢直接Bukkit.getScheduler()
这两个有什么区别?或者有什么不一样吗?
new BukkitRunnable()
但同时也有很多人喜欢直接Bukkit.getScheduler()
这两个有什么区别?或者有什么不一样吗?

小张up 发表于 2023-1-1 18:28
其实我一直很好奇一件事,我看到不少开源项目的写法是
new BukkitRunnable()
但同时也有很多人喜欢直接Bukk ...

一行代码能搞定的我用Bukkit.getScheduler() 看着简洁
有很多逻辑的,会有大段代码的 我用 new BukkitRunnable() 包起来更清晰
本帖最后由 2000000 于 2023-1-9 17:24 编辑
https://www.spigotmc.org/wiki/scheduler-programming/
BukkitRunnable 提供了更多的实例方法 (如 cancel,即停止这个计划任务) ,这会非常方便,BukkitScheduler 语法上更加简洁
小张up 发表于 2023-1-1 18:28
其实我一直很好奇一件事,我看到不少开源项目的写法是
new BukkitRunnable()
但同时也有很多人喜欢直接Bukk ...
当您想继承 BukkitRunnable 并在除 run 方法之外的其他地方使用它提供的实例方法时,这很方便,而不是使用 BukkitScheduler 实现 Consumer<BukkitTask>
但是,如果您要传递 lambda,使用 BukkitScheduler 在语法上更简洁,速度可以忽略不计。这是因为 lambda 编译了 invokedynamic,它比 invokeinterface 或 invokevirtual 稍微快一点。
https://www.spigotmc.org/wiki/scheduler-programming/
BukkitRunnable 提供了更多的实例方法 (如 cancel,即停止这个计划任务) ,这会非常方便,BukkitScheduler 语法上更加简洁