基于列表自展开的物品

前置知识

示例

1

定义列表数据

首先,我们需要为物品定义一个数据列表,用于存储物品的属性值。

这里我们创建一个名为 lores 的列表,每个元素都是物品的一个属性,例如物理攻击、暴击伤害、暴击率,并且每个属性值可以用随机数生成。

示例配置如下:

import:
  module:
    random: random

data:
  lores:
    - "物理攻击: " + random.int(100, 200)
    - "暴击伤害: " + random.int(100, 200)
    - "暴击率: " + random.int(10, 20)

这里,random.int(100, 200) 等语句表示每次生成该物品时,相关属性都会在指定范围内随机生成数值。

2

Lore 中引用列表变量

为了让属性能够展示在物品上,我们在样式中使用 display.lore 配置项。通过 ${lores} 语法,可以自动将 lores 列表内容逐行展开并显示。

示例配置如下:

display:
  lore:
    - "物品属性:"
    - "${lores}"

此时物品展示效果为:

物品属性:
物理攻击: 187
暴击伤害: 115
暴击率: 18

lores 列表中的每一项都会单独成行显示。

3

完整示例

在 AzureFlow/items/ 文件夹下,创建一个名为 ExpandLoreItem.yml 的文件,并写入如下内容:

import:
  module:
    random: random

data:
  lores:
    - "物理攻击: " + random.int(100, 200)
    - "暴击伤害: " + random.int(100, 200)
    - "暴击率: " + random.int(10, 20)
 
display:
  material: golden_sword
  name: '&6自定义属性武器'
  lore:
    - "物品属性:"
    - "${lores}"
 
internal:
  # 每个物品的唯一标识不一样,实际生成的值与你的物品可能不一样
  uuid: 8fa8dc36-3a9b-4e10-8145-d7eacfa2370f
  alias: [expand_lore_item]

保存文件后,回到服务器,输入 af reload 重载插件,再输入 af get expand_lore_item 即可获得该物品。

效果说明

只需在 display.lore 使用 ${lores},列表中的内容会自动一行一属性展示,无需手动编写每一行。

这样可以极大地简化多属性物品的制作流程。

总结

通过上述方法,可以轻松实现物品属性的自动展开,让自定义物品更具丰富表现力。

你还可以根据需要,扩展 lores 列表的内容,实现更多属性或效果展示。

如需更复杂的逻辑,比如属性增减、条件显示,也可以在 dataaction 配置中结合其他功能实现。

最后更新于