Skip to content

TabooLib 相关问题

坏黑 edited this page May 28, 2022 · 4 revisions

TabooLib 相关问题

因为 Kotlin Script 编译或运行的特殊性,部分 TabooLib 方法在 Artifex 下不再适用,在本篇逐个列举。

注解

基于 TabooLib 的所有 注解 功能均无法使用,对应功能均可在 通用组件工程组件 中找到替代方法,例如 @SubscribeEvent@Config@Awake 等。

命令

命令中的 execute, suggestion, restrict 方法均被替换为:

// 注意是两个参数
// 原本三个参数的方法 execute { sender, context, argument -> } 不可使用
execute { sender, context ->
  // sender: ProxyCommandSender
  // context: CommandContext<ProxyCommandSender>
  // ...
  // 通过 context.argument() 获取当前参数
}

// 绑定给玩家使用
executeAsPlayer { sender, context -> 
  // sender: ProxyPlayer
  // context: CommandContext<ProxyPlayer>
  // ...
}

// 注意没有参数
// 原本三个参数的方法 suggestion { sender, context, argument -> } 不可使用
suggestion(uncheck: Boolean = false) { emptyList() }
suggestionAsPlayer(uncheck: Boolean = false) { emptyList() }

// 注意是一个参数
// 原本三个参数的方法 restrict { sender, context, argument -> } 不可使用
restrict { args -> true }
restrictAsPlayer { args -> true }

继续使用原始方法将会产生 Backend Internal error: Exception during IR lowering 异常。

module-configuration 模块

在 Artifex 中不再允许使用 @Config@ConfigNode 创建配置文件,详见 配置文件 工程组件。

module-lang 模块

在 Artifex 中不再允许使用 sendLang() 等相关函数发送语言文件,详见 语言文件 工程组件。

module-ui 模块

在 Artifex 中不再使用 buildMenu { } 构建菜单,而替换为以下顶层函数:

fun buildBasicMenu(title: String = "chest", builder: Basic.() -> Unit): Inventory

fun <T> buildLinkedMenu(title: String = "chest", builder: Linked<T>.() -> Unit): Inventory
  
fun buildStoredMenu(title: String = "chest", builder: Stored.() -> Unit): Inventory

fun Player.openBasicMenu(title: String = "chest", builder: Basic.() -> Unit)

fun <T> Player.openLinkedMenu(title: String = "chest", builder: Linked<T>.() -> Unit)

fun Player.openStoredMenu(title: String = "chest", builder: Stored.() -> Unit)

继续使用原始方法将会产生 Backend Internal error: Exception during IR lowering 异常。

目录

开发资源

相关问题

Clone this wiki locally