物品系统
Ratziel 最核心、最常用的能力,就是通过配置文件生成自定义物品。
如果你把 Ratziel 当成一个“物品玩法编辑器”来理解,通常不会有太大偏差。
一个物品最基本长什么样
ExampleItem:
item:
material: DIAMOND_SWORD
name: '<red>示例物品'
lore:
- '&7这是一把最基础的自定义物品。'
这份配置里:
ExampleItem是物品名item表示这是一个物品元素material是材质name是显示名称lore是物品描述
你通常会往物品里继续加什么
在实际使用中,物品配置通常会继续加入下面这些内容:
1. 基础显示和属性
例如:
materialnameloreunbreakableenchanthideFlags
2. 动作
让物品在特定时机执行效果,例如:
- 右键时触发
- 攻击实体时触发
- 丢弃时触发
- 击杀生物时触发
- 每隔一段时间触发
详见:
3. 数据
让物品携带自己的状态,例如:
- 所有者
- 击杀数
- 等级
- 冷却时间
- 任务进度
详见:
4. 标签
让名称、描述或其他文本根据数据自动变化,例如:
- 显示当前等级
- 显示主人名字
- 调用模板中的内容
- 调用脚本结果
详见:
一个稍微完整一些的例子
plugins/Ratziel/workspace/weapon.yml
FireSword:
item:
material: DIAMOND_SWORD
name: '<gold>烈焰之剑'
lore:
- '&7主人:{data:owner:未绑定}'
- '&7击杀数:{data:kills:0}'
- '&7评级:{define:rank}'
data:
owner:
$js: 'player.getName()'
kills: 0
define:
rank:
$js: 'kills >= 100 ? "传说" : "普通"'
action:
onAttack:
- 'kills = item.get("kills") || 0'
- 'item.set("kills", kills + 1)'
这份配置里已经包含了:
- 基础显示
- 数据层
- 计算层
- 动作
- 标签显示
对大多数玩法来说,真正常用的物品已经离不开这几部分。
元素名规则
新版草稿统一采用以下规则:
- 同一元素类型中,元素名不能重复
- 不同元素类型之间,可以使用同样的名字
例如:
- 可以同时存在一个名为
FireSword的item - 也可以同时存在一个名为
FireSword的template - 但不能同时出现两个同为
item类型的FireSword
建议学习顺序
如果你已经做出第一个物品,推荐继续按这个顺序看: