2.6
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
---
|
||||
front:
|
||||
hard: 入门
|
||||
time: 10分钟
|
||||
---
|
||||
|
||||
|
||||
# 调度器
|
||||
|
||||
## 传统写法
|
||||
|
||||
用Bukkit写调度器一般是通过下述代码完成
|
||||
|
||||
```java
|
||||
Bukkit.getScheduler().runTask(BukkitPlugin.javaPlugin){
|
||||
// TODO
|
||||
}
|
||||
|
||||
new BukkitRunnable(){
|
||||
@Override
|
||||
public void run(){
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
但是Taboolib创建调度器则非常方便,代码也是非常简约
|
||||
|
||||
```kotlin
|
||||
submit(period = 10, async = true, delay = 20) {
|
||||
// TODO
|
||||
}
|
||||
```
|
||||
这样就创建了一个 每10Tick 运行一次 异步的 第一次运行延迟20Tick的调度器
|
||||
|
||||
## 方法详解
|
||||
```kotlin
|
||||
fun submit(
|
||||
now: Boolean = false, // 是否立即执行
|
||||
async: Boolean = false, // 是否异步执行
|
||||
delay: Long = 0, // 延迟执行时间
|
||||
period: Long = 0, // 重复执行时间
|
||||
comment: String? = null, // 注释(无用)
|
||||
executor: PlatformExecutor.PlatformTask.() -> Unit, // 调度器具体行为
|
||||
): PlatformExecutor.PlatformTask
|
||||
```
|
||||
> 如果now为true时,这个task不会重复执行。
|
||||
|
||||
|
||||
## 变体 - 简单的异步调度器
|
||||
|
||||
```kotlin
|
||||
submitAsync{
|
||||
// TODO
|
||||
}
|
||||
```
|
||||
|
||||
## 变体 - 通过注解的方式注册调度器
|
||||
|
||||
```kotlin
|
||||
@Schedule(period = 20, async = true)
|
||||
fun tick() {
|
||||
Bukkit.getOnlinePlayers().forEach {
|
||||
it.sendMessage("Hello super bee")
|
||||
}
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user