基于条件显示渲染的物品

前置知识

介绍

在物品属性展示时,经常需要根据某些条件来显示或隐藏特定的内容。

在实际物品配置时,你可以让某些属性(lore)只有在特定条件满足时才显示,否则自动隐藏。

这一能力非常适合做动态属性、特殊效果等需求,可以使用如下示例实现。

示例

1

data 部分设置条件属性

你只需用脚本表达式为属性赋值,内容根据条件判断。 例如,玩家等级达到100才显示特殊效果:

data:
  special_effect: 'player.level >= 100 ? "额外伤害: +50" : ""'
2

display.lore 部分引用变量

直接用 ${变量名} 插入上一步设置的属性。 如果结果是空字符串,该行会自动隐藏,无需手动处理:

display:
  lore:
    - "基础属性:${lores}"
    - "${special_effect}"
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 部分,基于已有变量动态生成属性,实现实时条件显隐。

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 里用 ${变量}引用,条件渲染就能自动完成。这样可以让物品的属性展示更加智能、个性化,无需手动隐藏空行或重复配置。

最后更新于