物品 API
Baikiruto 的核心物品操作方法,涵盖物品构建、读取、注册和 ID 查询。
方法一览
| 方法 | 返回值 | 说明 |
|---|---|---|
buildItem(itemId: String, context: Any?) | ItemStack? | 根据物品 ID 构建 ItemStack |
readItem(itemStack: ItemStack) | ItemStream? | 读取 ItemStack 的 Baikiruto 数据 |
getItem(itemId: String) | Item? | 获取物品定义 |
registerItem(item: Item) | Item | 注册自定义物品 |
getItemId(itemStack: ItemStack) | String? | 获取 ItemStack 的物品 ID |
getItemData(itemStack: ItemStack) | Map<String, Any>? | 获取物品的公共数据 |
getItemUniqueData(itemStack: ItemStack) | Map<String, Any>? | 获取物品的唯一实例数据 |
构建物品
val api = Baikiruto.api()
// 根据 ID 构建物品
val itemStack = api.buildItem("my_sword", player)
if (itemStack != null) {
player.inventory.addItem(itemStack)
}
// context 参数可传入 Player 或其他上下文对象
// 用于动态属性计算(如等级相关的属性)
val contextItem = api.buildItem("level_sword", player)
读取物品
val api = Baikiruto.api()
// 读取手持物品
val itemStream = api.readItem(player.inventory.itemInMainHand)
if (itemStream != null) {
println("物品 ID: ${itemStream.id}")
println("物品源: ${itemStream.source}")
}
// 获取物品 ID(简便方法)
val itemId = api.getItemId(player.inventory.itemInMainHand)
if (itemId != null) {
println("这是 Baikiruto 物品: $itemId")
} else {
println("这不是 Baikiruto 物品")
}
获取物品数据
val api = Baikiruto.api()
val item = player.inventory.itemInMainHand
// 获取公共数据(所有同 ID 物品共享)
val data = api.getItemData(item)
data?.forEach { (key, value) ->
println("$key = $value")
}
// 获取唯一实例数据(每个物品实例独有)
val uniqueData = api.getItemUniqueData(item)
uniqueData?.forEach { (key, value) ->
println("唯一数据 $key = $value")
}
获取物品定义
val api = Baikiruto.api()
// 获取物品定义
val item = api.getItem("my_sword")
if (item != null) {
println("物品名称: ${item.id}")
}
注册自定义物品
val api = Baikiruto.api()
// 注册自定义物品
val item = api.registerItem(myItem)
println("已注册物品: ${item.id}")
备注
buildItem 返回的 ItemStack 已经包含了 Baikiruto 的 NBT 标记,可以通过 readItem 或 getItemId 识别。