LogoArcartX Doc

ItemStackUtils:物品工具

物品操作扩展工具集

ItemStackUtils

  • 物品工具集提供了一系列 ItemStack 的Kotlin扩展函数,用于便捷地操作物品的Lore、名称、NBT标签以及ArcartX专属属性。
  • 位于 priv.seventeen.artist.arcartx.util.ItemStackUtils,所有方法均为静态方法。
  • 在Kotlin中可直接作为扩展函数调用,在Java中通过 ItemStackUtils.xxx(itemStack, ...) 调用。

Lore操作

ItemStack.addLore(text)

  • 为物品追加一行Lore
  • 参数text: String — Lore文本,支持 & 颜色代码(会自动转换为 §
  • 返回值:无
  • 调用示例
// Kotlin
itemStack.addLore("&a这是一行绿色Lore")
 
// Java
ItemStackUtils.addLore(itemStack, "&a这是一行绿色Lore");

ItemStack.setLore(text, line)

  • 设置物品指定行的Lore
  • 参数
    • text: String — Lore文本
    • line: int — 行号(从0开始)
  • 返回值:无
  • 调用示例
ItemStackUtils.setLore(itemStack, "&b新内容", 0);

ItemStack.insertLore(text, line)

  • 在物品指定行插入一行Lore,原有内容向下移动
  • 参数
    • text: String — Lore文本
    • line: int — 插入位置行号
  • 返回值:无
  • 调用示例
ItemStackUtils.insertLore(itemStack, "&e插入的内容", 2);

ItemStack.removeLore(line)

  • 删除物品指定行的Lore
  • 参数line: int — 要删除的行号
  • 返回值:无
  • 调用示例
ItemStackUtils.removeLore(itemStack, 0);

ItemStack.containsLore(text)

  • 判断物品Lore中是否包含指定文本(模糊匹配)
  • 参数text: String — 要搜索的文本
  • 返回值:boolean
  • 调用示例
boolean has = ItemStackUtils.containsLore(itemStack, "稀有");

名称操作

ItemStack.setDisplayName(name)

  • 设置物品的显示名称
  • 参数name: String — 显示名称,支持 & 颜色代码
  • 返回值:无
  • 调用示例
ItemStackUtils.setDisplayName(itemStack, "&6传说之剑");

ArcartX专属属性

ItemStack.setIcon(path)

  • 设置物品的图标贴图路径(ArcartX客户端渲染)
  • 参数path: String — 图标资源路径
  • 返回值:无
  • 调用示例
ItemStackUtils.setIcon(itemStack, "icons/sword.png");

ItemStack.setModel(path)

  • 设置物品的3D模型ID
  • 参数path: String — 模型ID
  • 返回值:无
  • 调用示例
ItemStackUtils.setModel(itemStack, "my_sword");

ItemStack.setFPModel(path)

  • 设置物品的第一人称模型ID
  • 参数path: String — 第一人称模型ID
  • 返回值:无
  • 调用示例
ItemStackUtils.setFPModel(itemStack, "my_sword_fp");

ItemStack.addExtraModel(locatorName, modelID)

  • 为物品添加额外渲染模型,挂载在指定定位器上
  • 参数
    • locatorName: String — 定位器名称
    • modelID: String — 模型ID
  • 返回值:无
  • 调用示例
ItemStackUtils.addExtraModel(itemStack, "blade_extra", "glow_effect");

ItemStack.setUrl(path)

  • 设置物品在UI界面中显示的贴图路径
  • 参数path: String — 贴图资源路径
  • 返回值:无
  • 调用示例
ItemStackUtils.setUrl(itemStack, "ui/items/sword.png");

ItemStack.setDrop(path)

  • 设置物品掉落时的附加模型
  • 参数path: String — 掉落模型ID
  • 返回值:无
  • 调用示例
ItemStackUtils.setDrop(itemStack, "drop_sword");

冷却系统

ItemStack.setCoolDownTag(value)

  • 设置物品的冷却标签,相同标签的物品共享冷却
  • 参数value: String — 冷却标签
  • 返回值:无
  • 调用示例
ItemStackUtils.setCoolDownTag(itemStack, "skill_group_1");

ItemStack.getCooldownTag()

  • 获取物品的冷却标签
  • 参数:无
  • 返回值:String — 冷却标签,无标签时返回空字符串
  • 调用示例
String tag = ItemStackUtils.getCooldownTag(itemStack);

ItemStack.getCooldown(player)

  • 获取物品对于指定玩家的剩余冷却时间
  • 参数player: Player — 玩家
  • 返回值:long — 剩余冷却时间(毫秒),0表示已就绪
  • 调用示例
long remaining = ItemStackUtils.getCooldown(itemStack, player);

ItemStack.setCooldown(player, time)

  • 为物品设置对于指定玩家的冷却时间
  • 参数
    • player: Player — 玩家
    • time: long — 冷却时间(毫秒)
  • 返回值:无
  • 调用示例
ItemStackUtils.setCooldown(itemStack, player, 3000); // 3秒冷却

NBT操作

ItemStack.getTag(key)

  • 获取物品的NBT标签值,支持 . 分隔的深层路径
  • 参数key: String — NBT键名,支持 a.b.c 格式的深层路径
  • 返回值:String — 标签值,不存在时返回空字符串
  • 调用示例
String value = ItemStackUtils.getTag(itemStack, "custom.level");