Skip to content

Commands and Map Tools

SSOrangeCATY edited this page Sep 16, 2026 · 4 revisions

命令与地图制作

FPSMatch 的主命令是 /fpsm。/fpsm 与 /fpsm help 对普通玩家开放,用于显示当前执行者实际可用的指令;地图创建、数据保存、调试和配置修改等管理分支仍要求权限等级 2。

帮助与客户端指令

/fpsm
/fpsm help
/fpsm mapselect
/fpsm camera
  • /fpsm 与 /fpsm help 从 Brigadier 的实际注册树生成帮助,自动显示参数和子分支,并按执行者权限隐藏不可用节点。
  • 帮助节点可以在聊天中点击展开或折叠;展开状态按玩家分别保存,服务端重新注册指令后旧链接会失效。
  • /fpsm mapselect 是客户端指令,用来打开地图选择界面;仍会检查服务端同步的访问权限。
  • /fpsm camera 是客户端调试指令,显示当前镜头所有者、优先级、时间轴 tick 或基础观战模式。

扩展模组监听 RegisterFPSMCommandEvent 时,addChild(...) 添加的是权限等级 2 的管理分支;只有明确面向普通玩家的指令才使用 addPlayerChild(...)。扩展应同时通过事件的 registerHelp(...) 提供说明。

创建地图实例

/fpsm map create <gameType> <mapName> <from> <to>

这个命令会根据 gameType 找到通过 RegisterFPSMapEvent 注册的地图构造器,然后用 mapName 和 AreaData 创建地图实例。

参数说明:

  • <gameType>:地图类型 ID,例如 example_arena。
  • <mapName>:地图实例名称。
  • <from>:地图区域第一个角点。
  • <to>:地图区域第二个角点。

示例:

/fpsm map create example_arena test_map ~ ~ ~ ~30 ~20 ~30

启动和调试地图

/fpsm map modify <gameType> <mapName> debug <action>

start

调用 BaseMap.start()。如果 FPSMapEvent.StartEvent 没有被取消,地图进入启动流程。

/fpsm map modify example_arena test_map debug start

reset

调用 BaseMap.reset()。适合测试地图能否恢复到初始状态。

/fpsm map modify example_arena test_map debug reset

new_round

调用 BaseMap.startNewRound()。适合回合制玩法测试新回合逻辑。

/fpsm map modify example_arena test_map debug new_round

cleanup

调用 BaseMap.cleanupMap()。适合测试清理掉落物、投掷物、临时实体或临时方块的逻辑。

/fpsm map modify example_arena test_map debug cleanup

switch

切换地图调试显示。适合查看地图区域、状态或调试信息。

/fpsm map modify example_arena test_map debug switch

让玩家加入或离开地图

/fpsm map modify <gameType> <mapName> team join [targets]
/fpsm map modify <gameType> <mapName> team leave [targets]

targets 是 Minecraft 实体选择器。如果不传,通常表示命令执行者。

示例:

/fpsm map modify example_arena test_map team join @s

玩家加入时,FPSMatch 会尝试分配可加入队伍。如果地图不允许中途加入、队伍已满或事件被取消,加入会失败。

操作指定队伍

/fpsm map modify <gameType> <mapName> team teams <teamName> players <targets> <action>

这个分支用于对指定队伍执行玩家操作。teamName 是地图中注册的队伍名,例如 red、blue 或 spectator。

旁观队伍也按普通队伍路径访问:

/fpsm map modify example_arena test_map team teams spectator players @s <action>

修改地图配置

地图配置来自 BaseMap.addSetting(...)。

查看配置列表

/fpsm map modify <gameType> <mapName> settings list

用于确认当前地图有哪些配置项。

读取配置

/fpsm map modify <gameType> <mapName> settings get <setting>

示例:

/fpsm map modify example_arena test_map settings get allowJoinInProgress

修改配置

/fpsm map modify <gameType> <mapName> settings set <setting> <value>

示例:

/fpsm map modify example_arena test_map settings set allowJoinInProgress false

value 会交给 Setting<T> 中的 parser 解析。解析失败时,配置不会成功修改。

保存和读取配置

/fpsm map modify <gameType> <mapName> settings save
/fpsm map modify <gameType> <mapName> settings load

save 把当前配置写入持久化数据。load 从已保存数据恢复配置。

重置配置

/fpsm map modify <gameType> <mapName> settings reset <setting>
/fpsm map modify <gameType> <mapName> settings reset all

前者只恢复一个配置项的默认值,后者恢复该地图全部设置项的默认值。两者只改运行时值;要持久化修改仍需再执行 settings save。

能力命令

能力可以提供自己的命令分支。FPSMatch 会根据能力类型把它挂到不同位置。

地图能力命令

/fpsm map modify <gameType> <mapName> capability <capabilityCommand>

适合操作地图级能力,例如地图倒计时、全局规则、结束传送等。

队伍能力命令

/fpsm map modify <gameType> <mapName> team teams <teamName> capability <capabilityCommand>

适合操作队伍级能力,例如出生点、商店、暂停、队伍经济等。

推荐地图制作顺序

  1. 注册地图类型。
  2. 用 /fpsm map create 创建地图区域。
  3. 用 team join 确认玩家能进入地图。
  4. 用 settings list 检查配置项是否注册成功。
  5. 用 debug start 测试启动流程。
  6. 用 debug reset 测试重置流程。
  7. 如果是回合制玩法,用 debug new_round 测试新回合流程。
  8. 如果实现了清理逻辑,用 debug cleanup 单独测试清理行为。