Minecraft(我的世界)中文论坛
标题: ---===从零基础开始,到精通插件===---#9
作者: berry64 时间: 2015-12-27 20:50
标题: ---===从零基础开始,到精通插件===---#9
-------------------------------------------------------------------------------------------------------------------
第九章,BukkitRunnable介绍
今天我要讲的是BukkitRunnable类型
这个类型是Bukkit内自带的,
别忘了import命名空间- import org.bukkit.scheduler.BukkitRunnable;
复制代码
import之后使用方法如下:
- new BukkitRunnable(){
- @Override
- public static void run(){
- }
- }
复制代码
由于这个比较简单容易理解,并不需要太多的介绍,不过是非常有用的东西
最后面一个大括号之后可以放上以下类型:
.runTask(plugin) //在主线程运行一个任务,会堵塞主线程
.runTaskAsynchronously(plugin) //创建一个新线程并运行一个任务,不会堵塞主线程
.runTaskLater(plugin, delay) //在delay个ticks之后运行一个任务,会堵塞主线程
.runTaskLaterAsynchronously(plugin, delay) //在delay个ticks之后运行一个任务,不会堵塞主线程
#在此之后我只会解释Asynchronously的,去掉"Asynchronously"就是在主线程运行,建议创建新线程
.runTaskTimerAsynchronously(plugin, delay, period) //在delay之后每period运行一个任务
这里的plugin指的是主插件class文件的名字,就是extends JavaPlugin的位置
delay是一个Long数值, 大约20=1秒
period也是一个long数值,也是大约20=1秒
所以比如说如果我要在每20秒之后在后台发送"XD"
并且BukkitRunnable和extends JavaPlugin写在一个类里面
那么代码应该是这样的:
这里因为是一个类里面的,所以是this
delay=0 也就是说开始运行BukkitRunnable()的时候就会发布一个XD
period是20*20, 也就是20秒*20ticks的转换单位
但是如果我希望运行之后关闭怎么办?那么就在里面使用
this.cancel() 即可
大概是这样的:
好了,BukkitRunnable就这么多东西啦, 大家自己摸索吧QwQ
读完请吱一声,告诉我一下看了什么和评论,如果条件允许的话给点人气我就知足了,给人气自己也不丢什么,不想给人气清至少回复个帖子让我知道发生了什么。
-------------------------------------------------------------------------------------------------------------------
作者: ufof 时间: 2016-1-23 21:40
专业词汇不准确。runXXX()这些叫方法不叫“类型”。此外LZ应该教教匿名内部类是什么,否则别人也不知道new BukkitRunnable(){}是什么意思。
作者: Lonon 时间: 2016-1-24 00:10
可以用来干嘛?
作者: berry64 时间: 2016-1-24 22:20
ufof 尼豪0.0
好吧要不是我自己也不太搞懂这个概念我也不会不说的
0w0我知道怎么用但是对概念不是特别清除
作者: ufof 时间: 2016-1-25 14:06
先把本质弄清楚再来发教程吧。
作者: Lonon 时间: 2016-1-26 06:11
我真的不知道说什么,和干什么用的····
作者: 1441151179 时间: 2016-1-28 16:02
楼主,请在每篇教程前备注一下此篇教的东西是什么,在编程中起到什么作用?这样我们才能理解啊!
作者: a254969696 时间: 2016-2-21 21:53
楼主好,我补充一下关于类似于BukkitRunnable的另一种实现方式
BukkitRunnable继承了Object类,实现了Runnable接口,并增加了一些运行的方法。
但是在JavaDoc里的SeeAlso部分显示调用BukkitScheduler的一些方法也可以实现同样的效果,而且BukkitScheduler支持在主线程重复运行某一个任务。
例子:BukkitScheduler.scheduleSyncRepeatingTask(Plugin plugin,BukkitRunnable/Runnable task,long delay, ong period)还有关于线程的问题:创建一个新的线程来运行需要考虑线程安全问题,不然会发生一些比较奇妙的错误
作者: 雨de印记 时间: 2016-3-13 11:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: 107874017 时间: 2016-4-4 20:51
讲的不详细 如果没有一定底子看懂很难
另外听说说话的时候加一个XD是很污的表现(梨子就是范例)
作者: zvw一VE 时间: 2016-6-15 13:31
a254969696 发表于 2016-2-21 21:53
楼主好,我补充一下关于类似于BukkitRunnable的另一种实现方式
BukkitRunnable继承了Object类,实现了Runna ...
更加不懂了( ̄? ̄)
作者: 74124819 时间: 2016-12-25 15:41
命名空间?java里应该叫包吧。。。
是不是吧C和java串了?
作者: aaaage 时间: 2017-3-25 17:51
终于可以零基础训练了,谢谢楼主
作者: 457725806 时间: 2017-8-29 13:20
MCBBS有你更精彩~
作者: MikuScarlet 时间: 2018-1-23 16:49
我怎么感觉是运行二十次然后再关闭?
作者: 49148534 时间: 2019-11-3 17:17
我怎么感觉是运行二十次然后再关闭?
作者: 2697552240 时间: 2020-2-15 00:40
感觉好难,越来越看不懂了
作者: 克鲁鲁殿下 时间: 2020-3-16 17:34
假如我要编paperspigot的插件呢?
我应该怎么做?
作者: AuroraCruiser 时间: 2020-6-6 15:16
见过最简洁的教程