Skip to content

菜单

菜单(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 表示一个占满了一行的物品:

YAML
pattern:
- 'A A A A A A A A A'

下列菜单有五行,以一圈相同物品作边框,其余空位则用其他字符表示:

YAML
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 部分进行设置的。在这部分下,每个物品都可以按需要修改。这部分的名称是你为物品选择的自定义字符。在上述的示例中,它们就是 AB。因此,它们的 items 部分如下所示:

YAML
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如果物品为皮革盔甲,则该选项决定其颜色。使用十六进制彩色格式。

效果设置

效果部分设置可为药水类物品添加自定义效果。每个效果都有其子配置,包含两个参数:durationamplifier
如下为菜单中显示持续五分钟的速度 II 药水物品的示例:

YAML
'A':
  type: POTION
  effects:
    # 为药水添加速度效果
    speed:
      # 效果的持续时间, 单位为秒
      duration: 300
      # 药水效果的倍率. 倍率 = 等级 - 1.
      amplifier: 1

物品音效

你可以为物品设置点击音效。其必须按指定格式填写,下文会详细讲述。与物品配置的方式相同,声音位于 sounds 部分下,且子配置与按钮配置的格式相似。

名称描述
type播放声音的名称。
volume音量大小。
pitch音高。

如下为物品 A 添加声音的示例配置:

YAML
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 为例,如下是添加按钮权限的配置:

YAML
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 菜单中显示该命令。可选

命令部分

命令部分需要按格式正确配置,以确保插件能注册你的自定义菜单。如下为正确设置命令部分的示例:

YAML
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: '此为测试菜单.'

描述部分

描述部分需要为每个语言分配一个子区域,其键名为对应语言代码。如下所示:

YAML
description:
  # 英语语言下的自定义描述.
  en-US: 'This is a custom command to open a custom menu'
  # 法语语言下的自定义描述.
  fr-FR: ...
  # 简体中文语言下的自定义描述.
  zh-CN: '这是一条打开自定义菜单的自定义命令'

贡献者

The avatar of contributor named as SnowCutieOwO SnowCutieOwO

页面历史