跳到主要内容

快捷指令

这一页是 CloudHologram 自己加的指令,DecentHolograms 原版没有。 它们都挂在主指令下面,直接打 /clh 指令名 就能用,不用先写 hologram、page 这类群组名。

指令一句话对应的原版写法
/clh click设定某个按键的点击动作(取代原本的)/clh page clearactions + /clh page addaction
/clh clickadd在某个按键后面再追加一个动作/clh page addaction
/clh clickclear清空某个按键的全部动作/clh page clearactions
/clh style设定文字背景颜色、不透明度、文字阴影无(CloudHologram 独有)
/clh validate检查 holograms 文件夹里每个看板文件的格式无(CloudHologram 独有)
/clh addpage新增一页/clh page add
/clh setline改某一行的文字/clh line set

共同规则:

  • 页码、行号都从 1 开始。超出范围会提示「页码超出范围(1~N)」或「行号超出范围(1~N)」。
  • 看板名称区分大小写,要和 /clh list 里显示的一样。
  • 这 7 个指令都可以在控制台执行(没有限制只能玩家用)。
  • 指令执行后会自动保存看板文件,不需要再 /clh reload。
  • 每个参数都有 Tab 补全:看板名称、页码、行号、按键、动作开头、样式名称和常用数值。
和 Display 指令的 setline 不一样

/clh setline 改的是一般看板的行;/clh d setline 改的是 Display 的行,两者不通用。Display 指令见 Display 指令。

点击按键​

click、clickadd、clickclear 的 <按键> 参数只接受下面 4 个值(大小写都可以,_ 和 - 都可以):

按键玩家怎么做文件里存成
left左键(攻击键)点看板left
right右键(使用键)点看板right
shift-left按住 Shift 再左键shift-left
shift-right按住 Shift 再右键shift-right

写错会提示:未知的点击按键:xxx(可用 left、right、shift-left、shift-right)。

按 Shift 时只会触发 shift 那一组

玩家按住 Shift 点击时,只执行 shift-left / shift-right 的动作,不会顺便执行 left / right。 如果希望不管有没有按 Shift 都有反应,两边都要设定。

动作写法​

click、clickadd 最后的 <动作>,以及看板文件里 clicks: 下面的每一项,都用同一套「简化写法」:

动作名称: 参数
  • 动作名称不分大小写。
  • 名称和参数之间用 : 或空格分开都可以:player: spawn、player:spawn、player spawn 效果一样。
  • 参数里可以有空格,例如 message: 欢迎来到 &b云海。
  • 原版 DecentHolograms 的写法(例如 COMMAND:/spawn、NEXT_PAGE、PAGE:看板:2)也照样接受。

动作一览​

写法作用参数例子
next翻到下一页(已经是最后一页就不动)可省略;写看板名称就翻别的看板next、next: shop
previous / prev翻到上一页(已经是第一页就不动)同上prev
page: 页码跳到这个看板的第几页页码从 1 开始page: 2
page: 看板:页码跳到别的看板的第几页看板名称 + 页码page: shop:3
player: 指令让玩家自己执行指令(会检查玩家的权限)指令,前面的 / 可以不写,会自动补上player: spawn
command: 指令和 player: 完全相同同上command: warp pvp
console: 指令由控制台执行指令(不检查玩家权限)指令,前面的 / 会自动去掉console: give {player} diamond 1
message: 文字发一段聊天讯息给点击的玩家文字,支持颜色message: &a你点到了!
server: 服务器 / connect: 服务器把玩家送到 BungeeCord / Velocity 下的另一个子服子服名称server: lobby
teleport: 位置把玩家传送到某个位置见下方teleport: world:0:100:0
sound: 音效对点击的玩家播放音效见下方sound: ENTITY_EXPERIENCE_ORB_PICKUP
permission: 权限检查权限:没有这个权限,后面的动作都不执行权限节点permission: vip.shop
none空动作,什么都不做无none

参数细节:

  • message:、player:、console: 的参数里可以写 {player}(点击的玩家名称);装了 PlaceholderAPI 时也可以用 %变量%,详见 变量。
  • teleport: 接受 世界:x:y:z、世界:x:y:z:yaw:pitch,也可以省略世界写成 x:y:z 或 x:y:z:yaw:pitch(使用玩家当前所在的世界)。位置无效时这个动作失败,后面的动作也不会执行。
  • sound: 写 Bukkit 的音效名称(例如 UI_BUTTON_CLICK)。要调整音量与音调就写 音效:音量:音调,例如 sound: BLOCK_NOTE_BLOCK_PLING:1:2。音效名称写错时不会报错,只是没有声音。
  • page: 的页码必须是 1 以上的整数,看板名称只能用英文字母、数字、_、-。写成 page: 0 会提示「page 的页码从 1 开始」。
  • 下面这些动作一定要写参数,空着会提示「动作缺少参数」:player、command、console、message、page、permission、server/connect、teleport、sound。
  • 不认识的动作名称会提示「未知的动作」或 Invalid action type。
同一个按键可以有多个动作

同一个按键底下的动作由上往下依序执行。遇到失败的动作(permission: 没有权限、teleport: 位置无效)就停下来,后面的不再执行。 所以 permission: 通常放在第一个,当作「门票」。

更多点击动作的用法与文件写法,见 点击动作。


/clh click​

把某个按键的动作设成指定的动作。原本这个按键上的动作会全部清掉,只留下这一个。

项目内容
用法/clh click <看板> <页> <按键> <动作>
权限dh.command.pages.addaction
别名无
控制台可以
参数必填说明
<看板>是看板名称
<页>是第几页,从 1 开始。点击动作是每一页分开设定的
<按键>是left、right、shift-left、shift-right
<动作>是简化动作写法,见上方 动作写法,可以有空格
  • 成功时显示「已更新 看板 第 N 页的 按键 点击动作」。
  • 设定完会马上重新显示看板,玩家不用重新进入范围。
  • 想要多个动作:先用 click 设第一个,再用 clickadd 一个一个追加。

例子

/clh click menu 1 right next # 右键翻到下一页
/clh click menu 2 left prev # 第 2 页左键回上一页
/clh click shop 1 right player: shop open # 右键让玩家执行 /shop open
/clh click lobby 1 right server: survival # 右键传送到 survival 子服
/clh click guide 1 left page: rules:1 # 左键把 rules 看板切到第 1 页

/clh clickadd​

在某个按键现有的动作后面再加一个,原本的动作保留。

项目内容
用法/clh clickadd <看板> <页> <按键> <动作>
权限dh.command.pages.addaction
别名无
控制台可以
参数必填说明
<看板>是看板名称
<页>是第几页,从 1 开始
<按键>是left、right、shift-left、shift-right
<动作>是简化动作写法
  • 动作会加在最后面,执行顺序就是追加的顺序。
  • 想调整顺序或删掉其中一个,可以用 /clh page actions 看编号、/clh page removeaction 删除(见 页指令),或直接改看板文件。

例子

# VIP 才能点的礼包:先检查权限,再执行指令、发讯息、放音效
/clh click gift 1 right permission: vip.gift
/clh clickadd gift 1 right console: crate give {player} vip 1
/clh clickadd gift 1 right message: &a已领取 VIP 礼包!
/clh clickadd gift 1 right sound: ENTITY_PLAYER_LEVELUP

/clh clickclear​

清空某个按键的全部动作。

项目内容
用法/clh clickclear <看板> <页> <按键>
权限dh.command.pages.clearactions
别名无
控制台可以
参数必填说明
<看板>是看板名称
<页>是第几页,从 1 开始
<按键>是要清空的按键
  • 只清一页、一个按键。其他页、其他按键不受影响。
  • 第 4 个参数的 Tab 补全会列出动作名称,但这个指令用不到,忽略即可。

例子

/clh clickclear menu 1 right # 第 1 页右键不再有反应
/clh clickclear menu 1 shift-left

/clh style​

设定文字行的背景颜色、背景不透明度、文字阴影。可以设整个看板,也可以只设某一行。

项目内容
用法/clh style <看板> [页 行] <样式> [值]
权限dh.command.holograms.update
别名无
控制台可以
参数必填说明
<看板>是看板名称
[页 行]否两个数字一起写。写了就只改这一行,不写就是改整个看板
<样式>是background-color、background-opacity、text-shadow、reset 之一
[值]视样式reset 不用写值,其他三个一定要写

样式名称与值​

样式值说明默认
background-color6 位十六进制颜色,# 可写可不写:#1E1E2E、1E1E2E背景颜色#000000(黑)
background-opacity0~255 的整数背景不透明度:0 全透明、64 淡淡一层、128 约半透明、255 完全不透明64
text-shadowtrue、on、yes、1、开、是 表示开启(英文不分大小写),其余任何值都是关闭文字阴影(字后面的深色描边,不是地上的影子)关闭
reset不用写清掉这一层的全部样式设定—
  • 值写错时会提示原因,例如 display.background-color 请使用 '#000000' 格式、display.background-opacity 必须是 0~255 的整数。
  • 少写值会提示「请写上数值,例如 background-opacity 128」。
  • 要关闭阴影写 false、off、no、0、关 都可以(不在「开启」清单里的值一律当成关闭)。

看板与单行的继承​

样式分两层存:

  1. 看板层:写在看板文件最外层的 display: 区块,是整个看板的默认值。
  2. 单行层:写在某一行底下的 display: 区块,只覆盖这一行写到的项目。

显示时,每一行的样式这样决定(每个项目分开算):

单行有写 → 用单行的
单行没写,看板有写 → 用看板的
两层都没写 → 用默认值(黑色、64、无阴影)

举例:看板设 background-opacity 128、text-shadow true;第 3 行只设 background-opacity 0。 结果第 3 行是「透明背景 + 有阴影」(阴影是从看板继承来的),其他行是「半透明背景 + 有阴影」。

reset 也是分层的:

  • /clh style 看板 reset:清掉看板层。各行回到默认值,但单行自己的设定还在。
  • /clh style 看板 1 3 reset:只清掉第 1 页第 3 行的单行设定,这一行改回继承看板层。
只对 1.19.4+ 的文字行有效

样式套用在 TextDisplay 上,所以需要服务器 1.19.4 以上,而且 config.yml 的 text-display-lines 是 true(默认)。 旧版本或改回盔甲架时,设定会保存但看不到效果。物品、头颅、实体等非文字行不受影响。 详见 背景与阴影。

例子

/clh style welcome background-opacity 128 # 整个看板半透明背景
/clh style welcome background-color #1E1E2E # 整个看板深蓝灰背景
/clh style welcome text-shadow true # 整个看板文字加阴影
/clh style welcome 1 3 background-opacity 0 # 只有第 1 页第 3 行透明
/clh style welcome 1 3 reset # 第 1 页第 3 行改回跟随看板
/clh style welcome reset # 清掉看板层的样式

保存后的文件长这样:

display:
background-color: '#1E1E2E'
background-opacity: 128
text-shadow: true
pages:
- lines:
- '第一行'
- content: '第三行'
display:
background-opacity: 0

/clh validate​

检查 plugins/CloudHologram/holograms/ 文件夹里每一个看板文件的格式,把有问题的文件和原因列出来。 只检查,不会重新载入,也不会改动任何文件。改完文件后先 validate,没问题再 /clh reload,就不会因为一个写错的文件让看板消失。

项目内容
用法/clh validate
权限dh.command.reload
别名无
控制台可以

没有参数。子文件夹里的 .yml 也会一起检查。

检查哪些项目​

项目写错时的提示(例子)
YAML 语法(缩排、引号、冒号)SnakeYAML 的英文错误讯息,会写出第几行第几列
文件名(不含 .yml)只能用英文字母、数字、_、-文件名只能用英文字母、数字、_、-,这个文件不会被载入
最外层与每一行的 display: 区块:只能有 background-color、background-opacity、text-shadow,值的格式要对未知的 display 设定:xxx、display.background-color 请使用 '#000000' 格式(要加引号)
至少要有一页(pages:),或直接写 lines: 列表pages 至少要有一页(或直接写 lines 列表)
每一页都要有 lines: 列表每一页都需要 lines 列表
每一行都要有文字(content:,也可以写 text:)每一行都要有文字(content)
height、offsetX、offsetZ、facing 必须是数字height 必须是数字
clicks: / actions: 的按键名称未知的点击按键:xxx(可用 left、right、shift-left、shift-right)
每个动作:必须是文字、动作名称存在、该有的参数有写、page: 页码从 1 开始动作缺少参数:message、page 的页码从 1 开始:page: 0、未知的动作:XXX
看板与每一行的 flags: 只能写存在的 旗标(要全大写)flags 里有不存在的旗标:xxx(可用:…)、行的 flags 里有不存在的旗标:xxx(可用:…)
location: 必须存在,格式是 世界:x:y:z,x、y、z 都是数字缺少 location(格式:世界:x:y:z)、location 格式错误:…(应为 世界:x:y:z)、location 的坐标不是数字:…
  • 一个文件有好几个问题时,只列出第一个找到的,改好再 validate 一次就会看到下一个。
  • DecentHolograms 很早期的 lines.1、lines.2 旧格式只检查 YAML 语法、display:、文件名、location: 与看板的 flags:,其余交给载入流程处理。
  • 位置的世界还没载入(例如由多世界插件稍后才载入的世界)不算错误,会另外列出来,见下方「输出」。

输出​

全部正常:

[CloudHologram] 格式检查通过:12 个看板。

有问题时,先写正常与有问题的数量,再一行一个列出「文件路径:原因」:

[CloudHologram] 10 个看板正常,2 个有问题:
• shop.yml:动作缺少参数:message
• event/boss.yml:每一行都要有文字(content)

路径是相对于 holograms 文件夹的路径,方便你直接找到文件。

格式正确、但所在世界目前没有载入的看板,会在最后另外列出(这些看板算在「正常」里):

[CloudHologram] 这些看板所在的世界还没载入,世界载入后才会显示:
• dungeon/boss.yml(世界 dungeon_world)

世界载入后看板会自动出现,不用 /clh reload。如果世界名称写错(世界根本不存在),看板就一直不会出现,请检查 location: 里的世界名称。

例子

/clh validate # 改完文件后先检查
/clh reload # 没问题再重新载入

/clh addpage​

在看板最后面新增一页,新页只有一行,内容就是你写的文字。

项目内容
用法/clh addpage <看板> <文字>
权限dh.command.pages.add
别名无
控制台可以
参数必填说明
<看板>是看板名称
<文字>是新页第一行的内容,可以有空格,支持颜色与 行类型 写法(例如 #ICON: DIAMOND)
  • 成功时显示「已新增第 N 页」,N 就是新页的页码。
  • 新页没有点击动作。要能翻页,记得用 click 设定,例如 /clh click 看板 N left prev。
  • 和原版 /clh page add 的差别:addpage 一定要写文字;原版可以省略,会用默认文字。
  • 想把新页插在中间,请用 /clh page insert(见 页指令)。

例子

/clh addpage rules &e第二页:禁止使用外挂
/clh click rules 1 right next
/clh click rules 2 left prev

/clh setline​

把某一页某一行的文字整行换掉。

项目内容
用法/clh setline <看板> <页> <行> <文字>
权限dh.command.lines.set
别名无
控制台可以
参数必填说明
<看板>是看板名称
<页>是第几页,从 1 开始
<行>是第几行,从 1 开始,只能改已经存在的行
<文字>是新内容,可以有空格
  • 成功时显示「已更新文字」。
  • 只换文字,这一行的高度、偏移、权限、display: 样式等设定都会保留。
  • 要新增行请用 /clh line add 或 /clh line insert(见 行指令)。

例子

/clh setline welcome 1 1 <gradient:#78EFFF:#CB9CFF>欢迎来到云海</gradient>
/clh setline welcome 1 2 &7在线人数:&f%server_online%
/clh setline shop 2 1 #ICON: DIAMOND_SWORD