/jmserver 指令

基本信息

属性 值
指令名 jmserver(CommandJMServerForge.getCommandName(),CommandJMServerForge.java:30-33)
指令类 journeymap.server.oldservercode.command.CommandJMServerForge(:18)
逻辑实现 journeymap.server.oldservercode.command.CommandJourneyMapServer(由 CommandJMServerForge 构造时持有,:20、:24)
注册方式 event.registerServerCommand(new CommandJMServerForge())(Journeymap.java:114)
侧 仅服务端(Journeymap.serverStartingEvent 带 @SideOnly(Side.SERVER),Journeymap.java:111)
权限等级 3(op 级,getRequiredPermissionLevel(),:51-54)
用法串 /jmserver help|worldid(getCommandUsage(),:37-40)
子命令数 2 个顶层(help、worldid),其中 worldid 另有 4 个二级子命令

功能

/jmserver 是 JourneyMap 唯一注册的指令(核验:grep -rn 'registerServerCommand' src/main/java 仅 Journeymap.java:114 一处命中)。它是纯查询/诊断用途的指令,不修改任何游戏数据,作用是让管理员确认"服务端为这个世界分配了哪个 World ID",以及查看客户端能否连接。

CommandJMServerForge 本身只是一个薄壳:把 Forge 的 ICommandSender 拆成三个参数(发送者名、世界名、参数数组)转发给 CommandJourneyMapServer.processCommand()(:59-72)。真正的分支逻辑在后者。

子命令

顶层只有两个分支(CommandJourneyMapServer.processCommand(),:26-46):

子命令 行为 源码
worldid 进入 World ID 分支;若该世界未启用 World ID 则回复 WorldID settings are disabled.(:31-38) :29
help 打印指令帮助 :41、:48-54

CommandJMServerForge.processCommand() 要求至少一个参数,无参数直接抛 WrongUsageException(getCommandUsage(sender))(:61-71)。

worldid 的二级子命令

worldid 带参数时进入 processWorldID()(:56-91),不带参数则直接打印当前 World ID(:87-90):

二级子命令 行为 源码
help 打印 World ID 子命令帮助 :61、:102-109
set <name> 把 World ID 设为指定字符串,落盘并向所有在线客户端广播 :66-70 → processSetWorldID() :93-100
setrandom 把 World ID 设为随机 UUID(UUID.randomUUID()) :71-75 → processSetWorldID()
resync 不改配置,仅向所有在线客户端重发当前 World ID :76-81,调用 PacketHandler.sendAllPlayersWorldID(world)
其它 / 空 打印用法提示 /jmserver worldid help|set|setrandom|resync|(blank) :82-85、:87-90

processSetWorldID() 的三步副作用(:93-100):改 Configuration.WorldID → ConfigHandler.saveWorld() 写回 <世界名>.cfg → PacketHandler.sendAllPlayersWorldID() 广播。先落盘再广播,因此客户端收到的永远是已持久化的值。

Tab 补全

addTabCompletionOptions()(CommandJMServerForge.java:74-77)转发给 CommandJourneyMapServer.retrieveTabCompleteValues(args)(:111-124),按参数个数分级补全:

参数个数 条件 候选补全 源码
1 — help、worldid :114-117
2 第 1 个为 worldid help、set、setrandom、resync :119-122
其它 — null(不补全) :123

补全列表与 processWorldID() 的四个分支完全一致,无遗留项。

数值

数值名 值
指令总数 1
顶层子命令数 2(help、worldid)
worldid 的二级子命令数 4(help、set、setrandom、resync)
最低权限等级 3
读取的 World ID 来源 ConfigHandler.getConfigByWorldName(worldName).getWorldID()(Journeymap.java:123)

交互

触发 行为
服务端启动 FMLServerStartingEvent 时注册指令(Journeymap.java:112-115)
/jmserver(无参数) 抛 WrongUsageException,客户端显示 /jmserver help|worldid
/jmserver worldid 打印 World ID: <id>(CommandJourneyMapServer.java:89)
/jmserver worldid help 打印 World ID 子命令帮助(:102-109)
/jmserver worldid set <name> 设置自定义 World ID,落盘并广播(:66-70、:93-100)
/jmserver worldid setrandom 设为随机 UUID,落盘并广播(:71-75)
/jmserver worldid resync 不改配置,仅重发给所有在线客户端(:76-81)
/jmserver worldid <其它> 打印 /jmserver worldid help|set|setrandom|resync|(blank)(:84)
服务端世界首次启动 serverStartedEvent 记录世界名并把 World ID 打进日志(Journeymap.java:119-124)

相关条目