基于条件显示渲染的物品
前置知识
三元表达式:三元表达式可用于简单的条件判断,例如:
special_effect: 'player.level >= 100 ? "额外伤害: +50" : ""'
介绍
在物品属性展示时,经常需要根据某些条件来显示或隐藏特定的内容。
在实际物品配置时,你可以让某些属性(lore)只有在特定条件满足时才显示,否则自动隐藏。
这一能力非常适合做动态属性、特殊效果等需求,可以使用如下示例实现。
示例
1
2
3
组合多种条件
你可以设置多个条件属性,比如品质、特殊效果、随机属性等,都可根据不同判断灵活显示:
data:
quality: 'when(
player.level >= 100, "传说",
player.level >= 50, "史诗",
"普通"
)'
special_effect: 'player.level >= 100 ? "额外伤害: +50" : ""'
lores:
- "物理攻击: " + random.int(100, 200)
- "暴击率: " + random.int(10, 20)
在展示时全部引用即可:
display:
name: "&6动态属性武器"
lore:
- "品质:${quality}"
- "${lores}"
- "${special_effect}"
4
用 computed
实时计算属性显影
computed
实时计算属性显影除了直接用表达式赋值,你还可以在 computed
部分,基于已有变量动态生成属性,实现实时条件显隐。
在 data
中先定义原始变量,比如等级:
data:
level: 0 # 可以通过外部事件/动作改变
computed
可以访问 data
里的变量,做实时判断:
computed:
special_effect: 'level >= 100 ? "额外伤害: +50" : ""'
展示时和前面一样,只需引用 ${special_effect}
,不满足条件时会自动隐藏:
display:
lore:
- "等级:${level}"
- "${special_effect}"
示例完整配置:
data:
level: 65
computed:
special_effect: 'level >= 100 ? "额外伤害: +50" : ""'
display:
name: "&a条件计算武器"
lore:
- "等级:${level}"
- "${special_effect}"
当 level 小于100时,special_effect 为空行自动隐藏;
当 level 达到100或更高时,自动显示“额外伤害: +50”。
computed
支持引用多个变量和复杂表达式,适合做多条件判断和属性联动。
效果说明
满足条件时,属性自动显示。例如,等级足够则出现“额外伤害”。
条件不满足时,相关内容自动隐藏,不留空行。
属性列表可根据需求自动展开。
总结
只要你在 data
里用表达式设置属性值,并在 display.lore
里用 ${变量}
引用,条件渲染就能自动完成。这样可以让物品的属性展示更加智能、个性化,无需手动隐藏空行或重复配置。
最后更新于