跳到主要内容

多页

一个看板可以有很多页。每一页有自己的行,也有自己的 点击动作。 玩家点看板翻页时,只有他自己换页,其他人看到的不受影响。

适合用来做:规则说明、新手教学、商店目录、排行榜分类……

同一个看板的第 1 页与第 2 页

页的基本规则​

  • 页码从 1 开始。新看板只有第 1 页。
  • 每个玩家目前在第几页是各自记住的:
    • 走远看不到、再走回来,仍然停在原本那一页。
    • 玩家下线再上线、或执行 /clh reload 后,回到第 1 页。
  • 没有任何行的页不会显示:翻到空页时什么都不会发生,玩家停在原页。
  • 只有目前那一页的行会显示,其他页的行不会出现。

用指令管理页​

/clh page add​

在最后面新增一页,并放入第一行。

项目内容
用法/clh page add <看板> [第一行内容]
权限dh.command.pages.add
别名append
控制台可以
  • 不写内容时,第一行是 config.yml 的 defaults.text。
  • 玩家执行时,内容里的 <HAND> 会换成手上的物品(见 行类型)。

快捷写法:/clh addpage <看板> <文字>(权限相同,文字必填)。

/clh page insert​

在指定位置插入一页。原本那一页(以及后面的页)往后移一页。

项目内容
用法/clh page insert <看板> <页> [第一行内容]
权限dh.command.pages.insert
控制台可以
  • <页> 是新页的页码。写「目前页数+1」等于加在最后。
  • 插入后立刻生效:各页的页码、{page} 变量都会马上更新,正在看这个看板的玩家仍然看着原本那一页,不需要 /clh reload。
  • 写死页码的点击动作(例如 'page: 3')不会自动调整,插入后记得检查。

/clh page remove​

删除一页(连同里面的行与点击动作)。

项目内容
用法/clh page remove <看板> <页>
权限dh.command.pages.remove
别名rm、rem、del、delete
控制台可以
  • 正在看这一页的玩家会被送回第 1 页;在后面几页的玩家维持看同一页。
  • 页码超出范围时什么都不会删,提示 该页不存在。
删掉最后一页 = 删掉整个看板

看板只剩一页时执行 page remove,整个看板与它的文件都会被删除。

/clh page swap​

交换两页的位置。

项目内容
用法/clh page swap <看板> <页1> <页2>
权限dh.command.pages.swap
控制台可以

两个页码不能相同。点击动作跟着页一起移动;page: 2 这类动作写的是页码,交换后会指向新的第 2 页。

/clh page switch​

让自己(或指定玩家)切换到某一页。不会改变看板本身。

项目内容
用法/clh page switch <看板> <页> [玩家]
权限dh.command.pages.switch;指定别的玩家还需要 dh.admin
别名go、view
控制台必须写 [玩家]

玩家要在看板的显示范围内、而且看得到这个看板,才会切换成功。适合搭配其他插件(例如 NPC 点击后执行 /clh page switch rules 2 %player_name%)。

  • 指定 [玩家] 但没有 dh.admin:提示没有权限,不会切换。
  • [玩家] 不在线或名称写错:提示 找不到在线玩家:名称。
  • 控制台执行却没写 [玩家]:提示 此操作只能由玩家执行。

完整说明见 页指令。

管理页上的行与点击​

  • 行:/clh line add <看板> <页> <内容> 等,见 行指令。
  • 点击:/clh click <看板> <页> <按键> <动作> 等,见 点击动作。

翻页按键​

翻页靠 点击动作:

动作作用到头时
next下一页已在最后一页 → 什么都不做
previous(或 prev)上一页已在第 1 页 → 什么都不做
'page: 2'跳到第 2 页页码不存在 → 什么都不做
'page: shop:2'让另一个看板(shop)对这名玩家显示第 2 页

所有页共用的按键​

写在看板最外层的 clicks 会套用到每一页;某一页自己的 clicks 可以覆盖个别按键:

clicks: # 共用
left: next
right: previous
pages:
- lines: [...]
- lines: [...]
clicks:
left: 'page: 1' # 只有这一页:左键回到第 1 页
right: [] # 只有这一页:右键什么都不做
  • [] 代表清空这个按键(不继承共用设定)。
  • 载入时,共用的 clicks 会复制到每一页。之后只要用指令改过这个看板,文件就会改存成「每一页各自写一份」,最外层的 clicks 会消失,效果不变。

循环翻页​

next 到最后一页会停住。想要「最后一页再按一次回到第 1 页」,就在最后一页把按键改成 page: 1:

pages:
- ...
- ...
- lines: [...]
clicks:
left: 'page: 1'

同理,第 1 页的右键可以写 'page: <最后一页>',往前翻也能循环。

页码变量​

文字行里可以放:

变量内容
{page}这一行所在的页码
{pages}这个看板共几页
- '<gray>第 {page} / {pages} 页</gray>'

有 DISABLE_PLACEHOLDERS 旗标 时这两个变量不会被替换。更多变量见 变量。

完整例子:规则说明(3 页)​

把下面存成 plugins/CloudHologram/holograms/rules.yml,改好坐标后 /clh validate、/clh reload:

location: world:0.5:65:0.5
display:
background-opacity: 128
text-shadow: true

# 每一页都通用:左键下一页、右键上一页
clicks:
left: next
right: previous

pages:
# 第 1 页
- lines:
- '<gradient:#78EFFF:#CB9CFF><bold>服务器规则</bold></gradient>'
- '<white>1. 禁止使用外挂与作弊模组</white>'
- '<white>2. 禁止恶意破坏他人建筑</white>'
- '<gray>左键下一页 · 第 {page}/{pages} 页</gray>'
clicks:
right: 'page: 3' # 第 1 页往前翻 → 跳到最后一页

# 第 2 页
- lines:
- '<gold><bold>聊天规范</bold></gold>'
- '<white>3. 禁止刷屏与广告</white>'
- '<white>4. 尊重每一位玩家</white>'
- '<gray>左键下一页 · 右键上一页 · 第 {page}/{pages} 页</gray>'

# 第 3 页
- lines:
- '<green><bold>同意规则</bold></green>'
- '<white>Shift+左键领取新手礼包</white>'
- '<gray>左键回到第 1 页 · 第 {page}/{pages} 页</gray>'
clicks:
left: 'page: 1' # 最后一页往后翻 → 回到第 1 页
shift-left:
- 'permission: server.newbie'
- 'console: kit newbie {player}'
- 'message: <green>已领取新手礼包!</green>'
- 'sound: ENTITY_PLAYER_LEVELUP:1:1'

plugins/CloudHologram/examples/paged.yml 也有一份多页范例可以参考。