# 输入捕获

# 介绍

有的时候需要玩家输入一些功能 比如想点击按钮后输入某个值
然后根据这个值进行操作
TabooLib基于Kotlin的函数式编程风格写了几个工具供你使用

# 基于告示牌捕获

player.inputSign(arrayOf("", "", "请在第一行输入内容")) { line ->
    // line 是输入完成后的内容
    val name = line.getOrNull(0)
    println("输入的内容是 $name")
}

# 基于书本的内容捕获

/**
 * 向玩家发送一本书
 * 并捕获该书本的编辑动作
 *
 * @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])
}

# 基于聊天框捕获

player.nextChat {
    // it 是玩家输入的内容
    println("玩家输入了 $it")
}

player.nextChatInTick(20 * 5, {
    // it 是玩家输入的内容
    println("玩家输入了 $it")
}, {
    // 超时回调
    println("超时了")
}, {
    // 取消回调
    println("取消了")
})

# 拓展 - 铁砧捕获

利用了UI模块 具体实现还请自行编写

player.openMenu<Anvil>("输入内容"){
    onRename { player, s, inventory ->
        // s 是玩家输入的内容
        println("玩家输入了 $s")
    }
}

入门

12分钟

介绍

基于告示牌捕获

基于书本的内容捕获

基于聊天框捕获

拓展 - 铁砧捕获