菜单
菜单(GUI)出现在插件的许多地方,它们都是可以自定义的。
本章节将会讲述其修改方法。
编辑菜单样式
你可以编辑菜单的样式,包括标题、容器类型以及行数。
注意
部分菜单包含了本章节未提及的额外设置(如结构菜单)
名称 | 描述 | 支持菜单 |
---|---|---|
title | 菜单的自定义标题。支持彩色代码及 1.16+ 的十六进制彩色及变量。 | 全部 |
type | 菜单的类型。可在 https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html 找到所有支持的容器类型。 | 全部 |
previous-menu | 是否在关闭该界面时显示上一级菜单。 | 全部 |
open-sound | 打开界面时播放的音效。应当遵循声音格式。 | 全部 |
back | 菜单的返回按钮。启用 only-back-button 后该项为必选。 | 全部 |
previous-page | 菜单的上一页按钮。 | 分页菜单 |
current-page | 菜单的当前页按钮。 | 分页菜单 |
next-page | 菜单的下一页按钮。 | 分页菜单 |
slots | 用于展示分页菜单内容(地标传送点、成员列表等)的按钮。 | 分页菜单 |
除了上述的这些,还有一个非常重要的设置项:pattern
。
这部分设置决定了菜单的排版,或者换言之,菜单的行数及其内的物品。它由一系列列表组成,每一个元素都代表着菜单的一行。每个字符串的长度都应该和菜单的列数相同。
(普通菜单一行九格,而漏斗一行只有五格。)
每个菜单中的物品都由一个不重复的字符表示,可以设置在菜单中的任意位置。相同字符表示同一个物品。
排版示例
下列菜单以 A
表示一个占满了一行的物品:
pattern:
- 'A A A A A A A A A'
下列菜单有五行,以一圈相同物品作边框,其余空位则用其他字符表示:
pattern:
- 'A A A A A A A A A'
- 'A B B B B B B B A'
- 'A B B B B B B B A'
- 'A B B B B B B B A'
- 'A A A A A A A A A'
编辑菜单内的物品
所有物品样式都是通过菜单下的 items
部分进行设置的。在这部分下,每个物品都可以按需要修改。这部分的名称是你为物品选择的自定义字符。在上述的示例中,它们就是 A
和 B
。因此,它们的 items
部分如下所示:
items:
'A':
... # 物品的所有设置
'B':
... # 物品的所有设置
每个物品都可按需修改,你可以添加下列表格中的任意属性。
注意
SuperiorSkyBlock 仅支持材料名称。不支持数字 ID。你可以在这里找到你需要的材料名称。
名称 | 描述 |
---|---|
type | 物品的材料类型。 |
data | 物品的数据值。1.12 以下的版本通过该设置决定物品。 |
name | 物品的自定义名称(支持彩色代码)。 |
lore | 物品的自定义描述(支持彩色代码)。 |
enchants | 物品包含的自定义附魔。每条附魔都会有不同的子设置,用于决定其等级。 |
glow | 物品是否带有附魔光泽。该方法不会使物品显示附魔。 |
flags | 对物品应用的物品标签。仅 1.9+ 可用。完整标志列表可在这里查看。 |
skull | 如果物品为玩家头颅,则该选项决定其 Base64 皮肤值。可通过此网站查询。 |
unbreakable | 为物品设置 Spigot 的无法破坏标签。 |
effects | 如果物品为药水,则该选项决定其包含的药水效果。更多描述见下。 |
entity | 如果物品为刷怪蛋,则该选项决定其生成的实体类型。用于替代旧版本的数据值设置。 |
customModel | 为物品设置自定义模型数据。与资源包搭配可为物品赋予自定义贴图。仅 1.14+ 可用。 |
leatherColor | 如果物品为皮革盔甲,则该选项决定其颜色。使用十六进制彩色格式。 |
效果设置
效果部分设置可为药水类物品添加自定义效果。每个效果都有其子配置,包含两个参数:duration
与 amplifier
。
如下为菜单中显示持续五分钟的速度 II 药水物品的示例:
'A':
type: POTION
effects:
# 为药水添加速度效果
speed:
# 效果的持续时间, 单位为秒
duration: 300
# 药水效果的倍率. 倍率 = 等级 - 1.
amplifier: 1
物品音效
你可以为物品设置点击音效。其必须按指定格式填写,下文会详细讲述。与物品配置的方式相同,声音位于 sounds
部分下,且子配置与按钮配置的格式相似。
名称 | 描述 |
---|---|
type | 播放声音的名称。 |
volume | 音量大小。 |
pitch | 音高。 |
如下为物品 A
添加声音的示例配置:
sounds:
'A':
type: ENTITY_EXPERIENCE_ORB_PICKUP
volume: 0.2
pitch: 0.2
运行自定义音效
你可以在点击物品时执行命令。你可以通过 commands
部分执行自定义命令,它的配置与上文所述声音部分相似。命令可以为控制台或玩家身份执行。除此之外,你还可以使用内建变量 %player%
返回点击物品的玩家名称。
以玩家身份执行命令
将 [player]
添加在命令开头,使得命令以玩家身份而非默认的控制台身份执行。
执行岛屿命令
你可以在方括号中设置子命令来执行岛屿命令。如 [player] [tp]
表示以玩家身份执行命令 /is tp
。对于带有参数的命令,只需将参数加在括号之外即可。
执行自定义命令
你可以将不带斜杠 /
的命令填入其中。如 bc &cHello!
会解析为控制台身份执行 /bc &cHello!
命令。
内建操作
插件提供了两种可执行的自定义操作——关闭菜单和返回上级菜单。与玩家动作相似,你可以使用 [close]
触发关闭菜单操作,使用 [back]
触发返回上级菜单操作。
权限部分
你可以为按钮设置权限,这样玩家就需要权限才可以点击物品。所有权限都需按照下文所述的特定格式填写。与物品配置的方式相同,声音位于 permissions
部分下,且子配置与按钮配置的格式相似。
权限部分有两个设置:
名称 | 描述 |
---|---|
permission | 要求玩家拥有的权限。 |
no-access-sound | 没有权限时向玩家的音效。 |
以物品 A
为例,如下是添加按钮权限的配置:
permissions:
'A':
permission: 'my.custom.permission'
no-access-sound:
type: BLOCK_ANVIL_PLACE
volume: 0.2
pitch: 0.2
信息
推荐在编辑菜单时保持默认格式。这可以让编辑菜单的过程更加简单!
创建自定义菜单
你可以制作以特定子命令打开的自定义菜单。普通菜单的规则也适用于自定义菜单。只需在 custom
文件夹下创建一个新的文件夹——每个文件都代表一个自定义菜单。除了其他菜单的通用设以外,自定义菜单还可以拥有如下设置:
名称 | 描述 | 是否必须 |
---|---|---|
command | 用于打开菜单的子命令(/is {子命令} )。 | 必需 |
aliases | 以逗号 , 分隔的命令别称列表。 | 可选 |
permission | 执行命令所需的权限。 | 可选 |
description | 不同语言的命令描述。它会显示在 /is help 当中。 | 可选 |
display-command | 是否在 /is help 菜单中显示该命令。 | 可选 |
命令部分
命令部分需要按格式正确配置,以确保插件能注册你的自定义菜单。如下为正确设置命令部分的示例:
command:
aliases: alias1, alias2
permission: 'your.permission'
display-command: true
description:
en-US: 'This is just a test menu.'
fr-FR: 'Il s''agit du menu de test.'
zh-CN: '此为测试菜单.'
描述部分
描述部分需要为每个语言分配一个子区域,其键名为对应语言代码。如下所示:
description:
# 英语语言下的自定义描述.
en-US: 'This is a custom command to open a custom menu'
# 法语语言下的自定义描述.
fr-FR: ...
# 简体中文语言下的自定义描述.
zh-CN: '这是一条打开自定义菜单的自定义命令'