跳到主要内容

物品 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 标记,可以通过 readItemgetItemId 识别。