2.6
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
---
|
||||
front:
|
||||
hard: 入门
|
||||
time: 12分钟
|
||||
---
|
||||
|
||||
|
||||
# 输入捕获
|
||||
## 介绍
|
||||
有的时候需要玩家输入一些功能 比如想点击按钮后输入某个值
|
||||
然后根据这个值进行操作
|
||||
TabooLib基于Kotlin的函数式编程风格写了几个工具供你使用
|
||||
|
||||
## 基于告示牌捕获
|
||||
```kotlin
|
||||
player.inputSign(arrayOf("", "", "请在第一行输入内容")) { line ->
|
||||
// line 是输入完成后的内容
|
||||
val name = line.getOrNull(0)
|
||||
println("输入的内容是 $name")
|
||||
}
|
||||
```
|
||||
|
||||
## 基于书本的内容捕获
|
||||
```kotlin
|
||||
/**
|
||||
* 向玩家发送一本书
|
||||
* 并捕获该书本的编辑动作
|
||||
*
|
||||
* @param display 展示名称
|
||||
* @param disposable 编辑后销毁
|
||||
* @param content 原始内容
|
||||
* @param catcher 编辑动作
|
||||
*/
|
||||
fun Player.inputBook(display: String, disposable: Boolean = true, content: List<String> = emptyList(), catcher: (List<String>) -> Unit)
|
||||
|
||||
player.inputBook("书本名称", true, listOf("原始内容")) { book ->
|
||||
//book 是编辑后的书本
|
||||
println("输出第一页内容")
|
||||
println(book[0])
|
||||
}
|
||||
```
|
||||
|
||||
## 基于聊天框捕获
|
||||
```kotlin
|
||||
player.nextChat {
|
||||
// it 是玩家输入的内容
|
||||
println("玩家输入了 $it")
|
||||
}
|
||||
|
||||
player.nextChatInTick(20 * 5, {
|
||||
// it 是玩家输入的内容
|
||||
println("玩家输入了 $it")
|
||||
}, {
|
||||
// 超时回调
|
||||
println("超时了")
|
||||
}, {
|
||||
// 取消回调
|
||||
println("取消了")
|
||||
})
|
||||
```
|
||||
|
||||
## 拓展 - 铁砧捕获
|
||||
利用了UI模块 具体实现还请自行编写
|
||||
```kotlin
|
||||
player.openMenu<Anvil>("输入内容"){
|
||||
onRename { player, s, inventory ->
|
||||
// s 是玩家输入的内容
|
||||
println("玩家输入了 $s")
|
||||
}
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user