跳到主要内容

创建竞技场

webapp_banner.jpg

创建竞技场​

在 plugins/EliteMobs/customarenas 中创建名称唯一的 .yml 文件,加载所需世界和内容后执行 /em reload。引用必须包含完整文件名和 .yml。将 waveCount 设为正数,为 1 到该数值的每一波都进行定义,并且只引用文件中定义过的生成点。EliteMobs 会在竞技场加载时检查这些内容:缺失的波次、超过 waveCount 的波次、未知的生成点,或格式错误的 spawnPoints、bossList 条目都会记录一条警告,竞技场也不会加载。运行过程中,只要某一波中有任何怪物生成失败,本局就会以失败告终。

加入和运行竞技场​

竞技场使用现有实体区域,不会为每组玩家复制世界。与 NPC 交互会打开菜单。只有比赛仍在等待、人数未满、玩家具有配置权限且未加入其他比赛时,玩家按钮才允许加入。倒计时开始后不再接收新玩家。

加入后,玩家前往 teleportLocation;未配置大厅时则使用 startLocation。达到 minimumPlayerCount 后,具有 elitemobs.instance.start 的参赛者可使用 /em start。倒计时再次检查最低人数,然后将参赛者移至 startLocation,准备第 1 波。玩家和观众均可用 /em quit 退出。

起点、大厅和 Boss 生成点都应放在竞技场区域内的安全地面上。边界监控在等待阶段也运行,会将越界的玩家和观众带回。战斗期间,没有 elitemobs.* 的外来者会被移出。登记在比赛中时,普通传送受到限制,请使用退出命令。

dungeons.yml 中的 allowSpectatorsInInstancedContent 控制观战按钮和倒地复活。启用时,倒地玩家可在旁观模式等待队友击打自己的旗帜,计数器允许三次复活。没有存活战斗玩家时,比赛判负。禁用时,倒地玩家立即离场。观众不获得波次奖励,退出旁观状态后会设为生存模式。

当该波所有被追踪实体死亡或失效时,比赛进入下一波;并非每次消失都必须由玩家击杀造成。最后一波同样先发奖励再结束比赛。重置会清除剩余竞技场怪物和死亡旗帜、送出参赛者并释放场地。准备延迟以秒为单位,但目前赛后重置会把同一数值按 tick 使用。

arenaContainer​

用 arenaContainer: another_arena.yml 让多个比赛定义共享同一实体场地。被引用且已启用的竞技场提供两角、起点、出口、大厅、生成点和圆柱形状;当前文件仍提供波次、奖励、消息、权限和人数限制。包括战前接收玩家或观众在内,同一场地只能被一场比赛占用。重置或取消已无人的加入预约时释放场地。可以连续引用,但缺失引用和循环会被拒绝。使用自己的几何区域时省略此项。

isEnabled​

设置竞技场是否启用。

键值默认值
isEnabled布尔值true
示例
isEnabled: true

arenaName​

设置竞技场的名称。

键值默认值
arenaName字符串无 —— 请自行设置
没有可用的默认值

请显式设置 arenaName,省略后竞技场没有显示名称。

示例
arenaName: Bedrock Arena

create_arena_name.jpg


corner1​

设置竞技场的第一个角。

键值默认值
corner1位置无
示例
corner1: my_arena_world,10,50,-10,0,0

位置格式为:world_name,x,y,z,yaw,pitch,其中 world_name 是世界名称,x/y/z 是坐标,yaw 是水平旋转角(0-360),pitch 是垂直旋转角(-90 到 90)。简写形式 world_name,x,y,z 同样被接受,此时 yaw 和 pitch 都默认为 0。

等待中的竞技场会在 corner1 所指世界加载时重试。如果另一个出口世界随后才加载,其加载事件不会重试竞技场;请等所有引用世界加载后执行 /em reload。

在这张图中,corner1 用 绿色羊毛 表示,corner2 用 红色羊毛 表示。此配置将它们之间的区域指定为竞技场,用 黄色羊毛 表示。

create_arena_corner.jpg


corner2​

设置对角位置。除了 X/Z,还要包含整个垂直范围;两角 Y 相同会产生零高度区域。两角和 startLocation 必须位于同一世界。

键值默认值
corner2位置无
示例
corner2: my_arena_world,-10,80,10,0,0

在这张图中,corner1 用 绿色羊毛 表示,corner2 用 红色羊毛 表示。此配置将它们之间的区域指定为竞技场,用 黄色羊毛 表示。

create_arena_corner.jpg


startLocation​

参赛者开始战斗以及观众入场的位置。未设 teleportLocation 时,玩家也在这里等待。请放在区域内的安全地面上。

键值默认值
startLocation位置无
示例
startLocation: my_arena_world,1,50,1,0,0

exitLocation​

普通退出、清场和驱逐外来者的目的地,应在竞技场外。受到致命伤害而淘汰的玩家也可能返回入场前保存的位置。

键值默认值
exitLocation位置无
示例
exitLocation: my_world,1,50,1,0,0

waveCount​

波次数量。使用正整数,并为 1 到该数量的每一波至少配置一个 Boss 条目,否则竞技场不会加载。

键值默认值
waveCount整数0
示例
waveCount: 10

delayBetweenWaves​

每一波开始前的准备延迟,包括第 1 波。单位为秒,使用非负整数。

键值默认值
delayBetweenWaves整数0
示例
delayBetweenWaves: 5

rawIntermissionWaves​

将指定波次开始前的准备延迟加倍为 delayBetweenWaves * 2。 如果你想在特定波次之间给玩家一点喘息时间,这会很有用。

键值默认值
rawIntermissionWaves整数列表无
示例
rawIntermissionWaves:
- '5'
- '10'
- '15'

spawnPoints​

为 Boss 定义带名称的生成点。每个生成点都需要一个 name 和一个与 startLocation 位于同一世界的有效 location,否则竞技场不会加载。bossList 中的名称必须完全匹配;重复名称会替换之前的位置。

键值默认值
spawnPoints字符串列表 [1]无
示例
spawnPoints:
- name=north:location=my_arena_world,219.5,71,273.5
- name=south:location=my_arena_world,219.5,71,316.5
- name=west:location=my_arena_world,197.5,71,295.5
- name=east:location=my_arena_world,240.5,71,295.5
- name=center:location=my_arena_world,219.5,71,295.5

bossList​

设置各波 Boss。每个条目生成一个实体,需要多个时重复条目。EliteMobs 使用含 .yml 的 Boss 文件名;MythicMobs 使用怪物内部名称,并要求对应插件和怪物已加载。

键值默认值
bossList字符串列表 [2]无
示例
bossList:
- wave=1:spawnPoint=north:boss=my_boss_wave_1.yml
- wave=1:spawnPoint=south:boss=my_boss_wave_1.yml
- wave=2:spawnPoint=center:boss=my_mythicmobs_boss:mythicmob=true:level=10

在这个示例中,第 1 波将在北方生成点生成一个 Boss,并在南方生成点生成一个 Boss。然后,在第 2 波,一个 10 级的 Mythic Boss 将在中心点生成。

有效的参数为 wave、spawnPoint、boss、mythicmob 和 level。

level 只会传递给 MythicMobs 条目。EliteMobs Boss 会忽略它 —— 请改为在它们各自的配置文件中设置等级。


rawArenaReward​

在指定波次结束、下一段准备延迟之前,为仍在战斗的各玩家独立抽取每个奖励条目,最后一波也适用。观众和已退出玩家不在范围内。如果本波包含正等级 EliteMobs Boss,玩家基于技能的战斗等级与其中最高 Boss 等级的绝对差超过 ItemSettings.yml 的 lootLevelDifferenceLockout 时,不发奖励。MythicMobs 等级不参与此比较。没有最低伤害贡献要求。

使用下方字符串格式:wave 选择完成的波次,itemlevel 提供所请求的物品等级,默认 1。物品自身的固定或受限等级规则仍适用。物品直接进入背包,溢出部分掉在附近;货币计入余额。战利品表的概率、数量和权限检查仍适用,但地牢 difficultyID 过滤不限制普通竞技场。竞技场 EliteMobs Boss 使用标准化战斗,除非文件明确指定 scaledCombat: true;其普通精英、随机和原版掉落均禁用。

键值默认值
rawArenaReward通用 EliteMobs 战利品表无
示例
rawArenaReward:
- filename=enchanted_book_damage_all.yml:wave=5:chance=0.25
- filename=elite_scrap_tiny.yml:wave=1:chance=0.5:amount=5
- currencyAmount=3:wave=3
- itemlevel=5:filename=summon_merchant_scroll.yml:wave=5
- filename=magmaguys_toothpick.yml:itemlevel=10:wave=10:chance=0.95

minimumPlayerCount​

设置竞技场开始前必须达到的最少玩家数量。

键值默认值
minimumPlayerCount整数1
示例
minimumPlayerCount: 1

maximumPlayerCount​

设置竞技场可容纳的最大玩家数量。试图加入已满竞技场的玩家会被告知竞技场已满,并且无法进入。

请显式设置此项。 默认值为 0,任何小于 1 的值都按 1 处理,因此未设置此键的竞技场只允许一名玩家进入。高于此值的 minimumPlayerCount 会被降低到与之相同。

键值默认值
maximumPlayerCount整数0
示例
maximumPlayerCount: 100

arenaMessages​

指定波次进入准备阶段时、延迟之前发给玩家和观众的消息。同波次的后续条目替换先前消息。

键值默认值
arenaMessages特殊 [3]无
示例
arenaMessages:
- 'wave=1:message=&a[Arena Announcer] &fTime for wave one!'
- 'wave=2:message=&a[Arena Announcer] &fWow, wave two already.'

create_arena_messages.jpg


cylindricalArena​

使用圆柱而非长方体。圆柱 X/Z 中心在两角之间,底部为较低的 Y,高度为 Y 差,半径为 X 差的一半。Z 跨度不决定半径。外侧圆周和最高 Y 不包含在范围内,游玩位置应在其内侧。长方体则包含两角边界。

键值默认值
cylindricalArena布尔值false
示例
cylindricalArena: false

permission​

作为战斗参赛者加入所需的权限。不限制时省略此项。观战按钮目前不检查该权限,因此不能用它限制观众入场。

键值默认值
permission字符串无
示例
permission: mypermission.arena

teleportLocation​

从菜单成功加入为玩家后的可选等待地点。仅与 NPC 交互不会传送。大厅必须在竞技场区域内,否则边界监控会把等待玩家带回。省略时在 startLocation 等待。这并不允许另一组人在已占用的共享竞技场内排队。

键值默认值
teleportLocation位置无
示例
teleportLocation: my_arena_world,10,50,10,0,0

特殊 [1]​

生成点:使用以下格式:name=pointName:location=world_name,x,y,z。

特殊 [2]​

Boss 列表格式:wave=X:spawnPoint=Y:boss=bossfilename.yml。

每个条目还可以使用两个可选键:

键说明值默认值
level只覆盖 mythicmob=true 条目的等级。EliteMobs Boss 使用自身配置。整数省略时向 MythicMobs 传入 -1;请明确设置正等级
mythicmob将 boss= 视为 MythicMobs 怪物名称而非 EliteMobs 文件名。需要 MythicMobs。true / falsefalse

示例:wave=3:spawnPoint=center:boss=my_mythic_boss:mythicmob=true:level=40

条目先按 : 分割,再按第一个 = 分割。键不区分大小写。未知或重复的键、没有值的键、缺少 wave、spawnPoint 或 boss、wave 小于 1、level 小于 1,或 mythicmob 的值不是 true 或 false,都会导致竞技场加载失败并给出警告。生成点名称和 Boss 标识必须与其引用完全匹配。

特殊 [3]​

竞技场消息:使用以下格式:wave=X:message=your message here。

消息正文可以包含冒号:它从 message= 开始,一直到条目末尾,或到后面的 :wave= 字段为止。仅接受从 1 开始的波次。需要 YAML 引号时应包住整个条目;只在 message= 后添加的引号会成为显示文本的一部分。

竞技场配置示例
isEnabled: true
arenaName: Example Arena
corner1: my_arena_world,0,0,0,0,0
corner2: my_arena_world,50,50,50,0,0
startLocation: my_arena_world,25,0,25,0,0
exitLocation: my_minecraft_world,234,44,245,0,0
waveCount: 5
delayBetweenWaves: 5
spawnPoints:
- name=north:location=my_arena_world,40.5,0,0
- name=south:location=my_arena_world,10.5,0,0
- name=west:location=my_arena_world,0,0,40.5
- name=east:location=my_arena_world,0,0,10.5
- name=center:location=my_arena_world,25.5,0,25.5
bossList:
- wave=1:spawnPoint=north:boss=example_arena_wave_1_mob.yml
- wave=1:spawnPoint=center:boss=example_arena_wave_1_mob.yml
- wave=1:spawnPoint=south:boss=example_arena_wave_1_mob.yml
- wave=2:spawnPoint=center:boss=example_arena_wave_2_mob.yml
- wave=3:spawnPoint=east:boss=example_arena_wave_3_mob.yml
- wave=3:spawnPoint=west:boss=example_arena_wave_3_mob.yml
- wave=4:spawnPoint=center:boss=example_arena_wave_4_mob.yml
- wave=4:spawnPoint=center:boss=example_arena_wave_4_mob.yml
- wave=5:spawnPoint=center:boss=example_arena_wave_5_mob.yml
- wave=5:spawnPoint=south:boss=example_arena_wave_5_mob.yml
- wave=5:spawnPoint=west:boss=example_arena_wave_5_mob.yml
rawArenaReward:
- currencyAmount=5:wave=1
- currencyAmount=10:wave=2
- currencyAmount=15:wave=3
- currencyAmount=20:wave=4
- currencyAmount=25:wave=5
- filename=magmaguys_toothpick.yml:itemlevel=5:wave=5:chance=0.5
minimumPlayerCount: 1
maximumPlayerCount: 3
arenaMessages:
- wave=1:message=&d[Arena NPC] &fWow! Wave 1!
- wave=2:message=&d[Arena NPC] &fAmazing it is wave 2!
- wave=3:message=&d[Arena NPC] &fWave 3 is now on!
- wave=4:message=&d[Arena NPC] &fWave 4 already!
- wave=5:message=&d[Arena NPC] &fWell it is all over after this one.
cylindricalArena: false
permission: arena.mypermission
示例解析

让我们从头到尾过一遍这个示例,解释这份竞技场配置都做了什么。

首先,竞技场通过 isEnabled 被启用,我们可以看到它使用 arenaName 设置被命名为 Example Arena。当你与竞技场 NPC(我们在下文会讲到如何制作竞技场 NPC)交互时会显示这个名称,该 NPC 会允许玩家加入竞技场。corner1 和 corner2 定义了竞技场的大小。这两个角应当位于你打算用作竞技场区域的相对两侧。

startLocation 是战斗起点。示例没有单独大厅,因此加入后也在这里等待。exitLocation 是 my_minecraft_world 中的普通出口;致命淘汰可能改用入场前保存的位置。请把示例坐标替换为自己已加载世界中的安全位置。

waveCount 只是设置竞技场会持续的波次数量。在本例中那就是 5 波。如果玩家成功在全部 5 波中存活下来,他们就成功通过了竞技场。delayBetweenWaves 会设置下一波开始前的秒数。在我们的示例中,玩家会有 5 秒时间在下一波开始前做准备。

spawnPoints 设置我们的怪物可以生成的位置。我们可以根据需要制作任意数量并随意命名。在示例中,我们决定制作 5 个生成点,并命名为 north、south、center、east 和 west。

bossList 是我们定义哪个 Boss 应在哪一波、在哪个位置生成的地方。在示例中,第 1 波将有 3 个 Boss 从我们命名为 north、center 和 south 的生成位置生成。这三个都被设置为使用同一个 Boss 文件,但我们本可以为每一个使用不同的 Boss 文件。

rawArenaReward 在第 1 波后给符合条件的战斗参赛者 5 枚精英硬币。第 5 波给 25 枚,并独立以 50% 概率抽取配置为 5 级的 MagmaGuy's Toothpick。上述战斗等级限制和战利品条件仍然适用。

minimumPlayerCount: 1 允许一人开始。maximumPlayerCount: 3 最多接收三名参赛者,之后的加入请求会被拒绝,并显示竞技场已满的消息。

arenaMessages 让你可以添加一些点缀文本,它们会在所定义波次开始时显示在聊天中。在我们的示例中,我们决定在每一波开始时显示一条简短消息。我们还决定在每条消息开头加入 NPC 的名字,营造出文本是由播报员(竞技场主管)说出的对白的错觉。

cylindricalArena 这个设置让我们可以切换由 corner1 和 corner2 设定的区域是采用圆柱形而非长方体。在我们的示例中,我们将其设置为 false,意味着示例竞技场是长方体形状。

permission 要求玩家加入时具有 arena.mypermission。开始还需命令权限 elitemobs.instance.start;观众入场不检查竞技场权限。

创建竞技场 NPC​

在 plugins/EliteMobs/npcs/ 保存名称唯一的 NPC .yml,设置 interactionType: ARENA_MASTER 和 arena: your_arena.yml。编辑后重载,持有 elitemobs.place.npc 时用 /em place npc <npcfilename.yml> 放置,或配置 spawnLocations。NPC 参考介绍放置、移除以及 scripts、patrol、classRoot、transportRoutes 等功能。

isEnabled​

设置 NPC 是否启用。

键值默认值
isEnabled布尔值true
示例
isEnabled: true

name​

设置 NPC 的显示名称。

键值默认值
name字符串空
示例
name: "&aGladius"

create_arena_npc_name.jpg


role​

设置 NPC 名称下方显示的角色身份。

键值默认值
role字符串空
示例
role: "&c<Arena Master>"

create_arena_npc_role.jpg


profession​

设置 NPC 的 MineCraft 职业。

键值默认值
profession职业NITWIT
示例
profession: ARMORER

使用 disguise 时会覆盖外观。

create_arena_npc_profession.jpg


spawnLocation​

旧版单点配置,仅在 spawnLocations 缺失或为空时使用。新文件优先使用列表,迁移时删除旧键,以免清空列表后恢复旧位置。

键值默认值
spawnLocation位置无
示例
spawnLocation: my_world,1.5,50,1.5,-108,0

spawnLocations​

NPC 保存的位置列表。非空列表优先于 spawnLocation,不是追加到它。引用世界必须已加载;每个位置创建一个使用相同配置的独立 NPC。

键值默认值
spawnLocations字符串列表无
示例
spawnLocations:
- my_world,1.5,50,1.5,-108,0
- my_world,100.5,50,50.5,0,0

greetings​

检测到玩家进入激活半径时随机选择的问候。每 100 tick 检测一次,短暂经过可能被漏掉。每个 NPC 的三秒发言冷却由所有玩家共享,向他人的问候可能阻止向你问候。

键值默认值
greetings字符串列表无
示例
greetings:
- Welcome to the Arena!
- The Arena welcomes you!

create_arena_npc_greetings.jpg


dialog​

对 ARENA_MASTER,玩家继续停留在附近时,后续接近检测会随机选择对白。点击打开竞技场菜单。只有 CHAT 把此列表用作内置点击动作。

键值默认值
dialog字符串列表无
示例
dialog:
- Ready for a challenge?
- Face the Arena?

create_arena_npc_dialog.jpg


farewell​

在 NPC 各坐标轴方向延伸 5 格的箱形区域内,玩家关闭任意非空标题的物品栏时,按发言冷却随机选择告别语。不必是该 NPC 的菜单,单纯走远不会触发。

键值默认值
farewell字符串列表无
示例
farewell:
- Bye.
- Return with your shield, or on it!

create_arena_npc_farewell.jpg

在不加引号或使用单引号的 YAML 字符串中,用字面量 \n 给聊天气泡换行。

farewell:
- Bye.
- Return with your\nshield, or on it!

create_arena_npc_lines.jpg


canTalk​

启用普通问候、对白和告别气泡。关闭它不会关闭竞技场菜单、任务对话、脚本或任务标记。

键值默认值
canTalk布尔值true
示例
canTalk: true

activationRadius​

以方块为单位的三维接近半径。零或负值关闭接近扫描;任务标记使用自己的范围。巡逻移动及编辑期间会抑制普通接近发言。

键值默认值
activationRadiusDouble3.0
示例
activationRadius: 3.0

timeout​

NPC 存续时间,单位为分钟。零或负值禁用。超时移除当前 NPC,但保留已保存位置,因此重载或区块恢复后可再次出现。永久删除位置应使用 NPC 移除流程。

键值默认值
timeout双精度0
示例
timeout: 60

interactionType​

设置 NPC 将执行的交互类型。

键值默认值
interactionType特殊 [4]NONE
示例
interactionType: ARENA_MASTER

disguise​

设置自定义 NPC 伪装。

键值默认值
disguise伪装无
示例
disguise: ZOMBIE

create_arena_npc_disguise.jpg


customDisguiseData​

LibsDisguises 命名自定义伪装的数据。与 disguise: custom:your_disguise_name 配合;仅此字段不会启用伪装。

键值默认值
customDisguiseData字符串无
示例
disguise: custom:arena_guide
customDisguiseData: player MHF_Pig

customModel​

已加载的自定义模型。FreeMinecraftModels 可用时优先使用;其中缺少模型不会改用 ModelEngine 重试。正常工作的模型在外观上优先于伪装。玩家还需要对应资源包素材。

键值默认值
customModel字符串无
示例
customModel: my_model

arena​

ARENA_MASTER 打开菜单的竞技场定义,包含 .yml。必须已启用并初始化成功。打开菜单本身不会让玩家加入或传送。

键值默认值
arenaFilename无
示例
arena: my_arena.yml

command​

以交互玩家身份和权限执行的命令。需要 interactionType: COMMAND。省略开头斜杠,不替换 $player。

键值默认值
command字符串无
示例
command: say Hello

questFileName​

设置 NPC 的任务文件名。需要将 interactionType 设置为 CUSTOM_QUEST_GIVER。

键值默认值
questFileName字符串列表无
示例
questFileName:
- my_quest_1.yml
- my_quest_2.yml

noPreviousLocationMessage​

TELEPORT_BACK 找不到保存的 EliteMobs 返回点时发送的消息。返回点由从 EliteMobs 世界以外发起的 EliteMobs 传送记录,并非玩家最后走过或死亡的位置。

键值默认值
noPreviousLocationMessage字符串空
示例
noPreviousLocationMessage: '&cCouldn''t find a previous location!'

instanced​

将 NPC 标记为实例地牢模板,不直接生成在蓝图世界。普通竞技场 NPC 使用 false;该键不会把实体竞技场变成复制的地牢。

键值默认值
instanced布尔值false
示例
instanced: false

scale​

底层村民的缩放。伪装或自定义模型可能有独立的外观缩放,因此不能保证各提供方显示相同大小。

键值默认值
scale双精度1.0
示例
scale: 1.0

syncMovement​

让自定义模型的移动与 NPC 同步。有效的巡逻配置会强制同步,即使此字段为 false 或巡逻已暂停。

键值默认值
syncMovement布尔值true
示例
syncMovement: true

竞技场配置示例
isEnabled: true
name: Example NPC
role: <Arena Master>
profession: ARMORER
spawnLocations:
- my_minecraft_world,233,44,245,0,0
greetings:
- Welcome to the Arena!
dialog:
- Ready to enter the Arena?
farewell:
- Bye!
canTalk: true
activationRadius: 3.0
interactionType: ARENA_MASTER
disguise: ZOMBIE
arena: example_arena.yml

这个示例展示了一个基础的竞技场 NPC,它会以僵尸伪装在 my_minecraft_world 中生成。玩家可以与该 NPC 交互以挑战 Example Arena。

特殊 [4]​

以下是有效的 NPC 交互类型列表:

类型描述
GUILD_GREETER打开技能加成选择;需要 elitemobs.skill.npc。
CLASS_TRAINER[Alpha] Advanced Combat System 启用时打开 classRoot 训练;需要 elitemobs.command。
TRANSPORT打开 transportRoutes 目的地选择,参见交通。
CHAT右键随机选取一条 dialog 台词。
CUSTOM_SHOP打开自定义商店菜单
PROCEDURALLY_GENERATED_SHOP打开程序生成商店
BAR显示功能即将推出的消息。
ARENA不执行任何操作。请改用 ARENA_MASTER。
QUEST_GIVER打开程序生成任务菜单
CUSTOM_QUEST_GIVER打开 questFileName 中所设特定任务的任务菜单
NONE无内置动作;脚本、接近和任务对话仍可运行。
SELL打开出售菜单
TELEPORT_BACK使用已保存的 EliteMobs 返回点;需要 elitemobs.back.npc。
SCRAPPER打开拆解菜单
SMELTER已弃用 —— 功能已移除,请勿使用
REPAIRMAN打开修理菜单
ENHANCER已弃用 —— 功能已移除,请勿使用
REFINER已弃用 —— 功能已移除,请勿使用
UNBINDER打开解绑菜单
ARENA_MASTER打开 arena 中所设竞技场的竞技场菜单
COMMAND运行 command 中所设的命令
ENCHANTER打开附魔菜单
SCROLL_APPLIER打开卷轴使用菜单
ARROW_SHOP打开箭矢商店菜单
GAMBLING_BLACKJACK打开二十一点赌博游戏
GAMBLING_COINFLIP打开抛硬币赌博游戏
GAMBLING_SLOTS打开老虎机赌博游戏
GAMBLING_HIGHERLOWER打开猜大小赌博游戏

其他类型有各自的权限和配置要求。使用前请查看完整的 NPC 交互参考;竞技场入口应使用 ARENA_MASTER。