跳转到正文
iPlugin

生成器面板

通过数据源与 output 模板生成图标列表。

每条元素数据对应一个 output 图标。icons 放固定导航与装饰,未被占用的格子用于列表;超出当前容量时自动分页。

自定义列表

plugins/Invero/workspace/catalog-demo.yml
menu:
  title: '&8指南目录'
  rows: 2
panels:
  - layout:
      - '         '
      - '<#######>'
    generator:
      source: custom
      elements:
        - title: '服务器规则'
        - title: '常用命令'
        - title: '玩法说明'
        - title: '世界介绍'
        - title: '物品说明'
        - title: '活动日历'
        - title: '商店指南'
        - title: '领地说明'
        - title: '组队说明'
        - title: '联系管理'
      output:
        material: BOOK
        name: '&f{{&element_title}}'
        action: "mmsg '&a你选择了 {{&element_title}}'"
    icons:
      '#':
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
      '<':
        material: GRAY_STAINED_GLASS_PANE
        name: '&7上一页'
        sub:
          - if: 'not page isFirst'
            material: ARROW
            name: '&f上一页'
            action: |-
              page previous
              icon by '<' refresh
              icon by '>' refresh
      '>':
        material: GRAY_STAINED_GLASS_PANE
        name: '&7下一页'
        sub:
          - if: 'not page isLast'
            material: ARROW
            name: '&f下一页'
            action: |-
              page next
              icon by '<' refresh
              icon by '>' refresh

下载 catalog-demo.yml。第一行每页显示九项,十条数据分成两页;可翻页时导航变为箭头。

面板字段

以下字段写在 panels 中包含 generator 的那一项:

字段类型必填默认行为说明
layout文字列表否无字符布局固定图标占据的格子不用于生成列表
scale两项整数列表否优先按 layout 计算;否则宽 9、高度自动确定面板宽度、高度
locate两项整数列表否在父容器中自动放置面板起点坐标
icons(icon、item、items)图标映射否无固定图标固定导航与装饰
generator生成器设置对象是—数据来源与输出模板

生成器字段

以下字段写在面板的 generator 中:

字段类型必填默认行为说明
source文字否custom数据来源名称
elements元素对象列表否不添加自定义元素custom 的列表内容;其他来源可追加自定义元素
output(template)图标定义对象是—每条元素使用的图标模板
filter条件语句文本否不筛选保留判断结果为 true 的元素
sortBy文字否保留原顺序按指定元素字段的文字值排序,不是数值排序
data文字键值映射否不传入额外参数仅对支持对应参数的数据来源有效,见下文

自定义元素的值使用文字、数字或布尔值。元素字段在 output 中加 element_ 前缀读取,例如 title 对应 {{&element_title}}。

内置来源

source内容常用元素字段
custom自定义 elements自行定义
player在线玩家element_name、element_uuid
menus已加载菜单element_id
world世界element_name、element_environment
sound声音element_name、element_ordinal
entity_world / entity_nearby世界实体 / 附近实体element_name、element_type

在线玩家

替换 generator 段即可显示玩家头像与名称:

generator:
  source: player
  sortBy: name
  output:
    head: '{{&element_name}}'
    name: '&f{{&element_name}}'

在线玩家列表在打开菜单时取得;重新打开可更新名单。

筛选

下面按 keyword 筛选标题,未设置 keyword 时显示全部:

# 写在 generator 中
filter: 'any [ ctx without keyword check &element_title has &keyword ]'

在列表的按钮动作中设置关键词、应用筛选,再刷新固定导航:

action: |-
  ctx set keyword to '说明'
  regenerate
  icon by '<' refresh
  icon by '>' refresh

清除筛选同样刷新两个导航图标:

action: |-
  ctx del keyword
  regenerate
  icon by '<' refresh
  icon by '>' refresh

列表与图标刷新

操作结果
page next / page previous切换列表页,不重新判断固定导航的子状态
icon by ID refresh重新判断并更新指定图标,不改变列表页
regenerate应用筛选、排序,回到第一页
icons refresh重建生成器列表,回到第一页;固定导航需单独刷新

切页和筛选动作中的 icon by 刷新负责同步上一页、下一页按钮。可输入关键词的完整配置见搜索列表。

扩展内容

额外的固定字段直接放入 elements:

generator:
  source: custom
  elements:
    - title: '服务器规则'
      description: '查看公共规则与游戏约定'
  output:
    material: BOOK
    name: '&f{{&element_title}}'
    lore:
      - '&7{{&element_description}}'

动态显示内容写在 output 的名称或 Lore 内联语句中。

来源参数与扩展限制

data 是调用数据来源时传入的参数,不会自动成为 output 可读取的 element_ 字段。使用扩展来源时,按该来源说明填写参数名称和值。内置来源没有通过 data 开放通用参数,entity_nearby 的范围也不能通过 data 修改。

extension 不支持动态属性计算,不能用它定义随变量变化的元素字段。固定属性写在 elements 的每条元素中;动态显示写在 output.name、output.lore 的内联语句中。上例的 description 是固定属性。

最后更新于