指令
基本信息
| 属性 | 值 |
|---|---|
| 包 | com.dreammaster.command |
| 指令数 | 4 |
| 基类 | net.minecraft.command.CommandBase(FML 1.7.10 原版指令 API) |
| 注册点 | MainRegistry.serverLoad(FMLServerStartingEvent)(MainRegistry.java:457) |
| 权限等级 | 全部为 2(OP 级) |
| 注册方式 | event.registerServerCommand(...),全部受配置开关控制 |
功能
4 条指令全部在 serverLoad 中注册,且每条都被一个 CoreModConfig.Modules 开关包住:
if (CoreModConfig.Modules.HazardousItems) { event.registerServerCommand(new HazardousItemsCommand()); }
if (CoreModConfig.Modules.CustomToolTips) { event.registerServerCommand(new CustomToolTipsCommand()); }
if (CoreModConfig.Modules.CustomFuels) { event.registerServerCommand(new CustomFuelsCommand()); }
if (CoreModConfig.Modules.CustomDrops) { event.registerServerCommand(new CustomDropsCommand()); }
(MainRegistry.java:459-469)
由于 4 个开关默认全是 false(CoreModConfig.java:31、:39、:43、:47),默认配置下这 4 条指令都不存在,须在配置中开启对应模块。
所有指令的 getCommandUsage 均返回语言键 dreamcraft.command.<name>.usage(CustomDropsCommand.java:24、CustomFuelsCommand.java:22、CustomToolTipsCommand.java:22、HazardousItemsCommand.java:21),参数为空或非法时抛 WrongUsageException。
指令总表
| 指令名 | 别名 | 类 | 权限 | 子命令数 | 开关 |
|---|---|---|---|---|---|
/hazarditems |
hazit |
HazardousItemsCommand(96 行) |
2 | 4 | Modules.HazardousItems |
/customtooltips |
ctooltip、ctt |
CustomToolTipsCommand |
2 | 1 | Modules.CustomToolTips |
/customfuels |
cfuels、cfl |
CustomFuelsCommand |
2 | 1 | Modules.CustomFuels |
/customdrops |
cdrops、cdr |
CustomDropsCommand |
2 | 2 | Modules.CustomDrops |
HazardousItemsCommand.getCommandAliases 额外返回了一个与指令名完全相同的别名 "hazarditems"(HazardousItemsCommand.java:27-28,指令名见 :18)。属事实记录;仓库中无注释说明是否有意,不作缺陷断言。
各指令细节
/customfuels
只支持 reload(CustomFuelsCommand.java:36-47):
| 子命令 | 行为 | 反馈 |
|---|---|---|
reload |
调 MainRegistry.Module_CustomFuels.ReloadCustomFuels() |
成功发 dreamcraft.command.reload.success,失败发 dreamcraft.command.reload.failure(:40-44) |
Tab 补全只给 reload(CustomFuelsCommand.java:51-54)。
/customtooltips
与 /customfuels 结构同型,唯一差异是调用的方法名不同:MainRegistry.Module_CustomToolTips.reload()(CustomToolTipsCommand.java:40),消息键与 customfuels 完全一致。Tab 补全同样只给 reload(:51-54)。
/customdrops
支持 2 个子命令(CustomDropsCommand.java:41-58):
| 子命令 | 行为 |
|---|---|
toggleinfo [玩家名] |
调 MainRegistry.Module_CustomDrops.toggleDeathInfoForPlayer(targetPlayer) 切换该玩家的死亡信息显示(:52) |
reload |
调 MainRegistry.Module_CustomDrops.ReloadCustomDrops() 并反馈成功/失败(:54-58) |
toggleinfo 的目标解析逻辑(:44-50):给了名字就用 getPlayer(sender, args[1]) 查找(找不到抛 PlayerNotFoundException);没给名字且发送者是玩家则取发送者本人;否则抛 PlayerNotFoundException。
Tab 补全给 toggleinfo、reload(:65-68)。
/hazarditems
4 个子命令(HazardousItemsCommand.java:38-67):
| 子命令 | 行为 | 消息键 |
|---|---|---|
save |
调 MainRegistry.Module_HazardousItems.SaveHazardousItems()(:42) |
dreamcraft.command.hazarditems.save.success / .failure(:43、:45) |
listdamagesources |
输出 HazardDamageSources.DAMAGE_SOURCES.keySet().toString()(:47-51) |
dreamcraft.command.hazarditems.damage_source_list |
listpotions |
调私有方法 sendPotionsToPlayer(:52-53) |
头部 ...hazarditems.potion.header + 每种一条 ...hazarditems.potion.entry(:73-85) |
reload [force] |
见下 | 见下 |
sendPotionsToPlayer 遍历 Potion.potionTypes,跳过 null,逐条输出本地化药水名与数值 id(HazardousItemsCommand.java:76-83)。
reload 带一个安全闸(HazardousItemsCommand.java:54-63):
boolean force = args.length == 2 && "force".equalsIgnoreCase(args[1]);
if (MainRegistry.Module_HazardousItems.HasConfigChanged() && !force) {
// 输出 dreamcraft.command.hazarditems.reload.unsafe 并中止
} else if (MainRegistry.Module_HazardousItems.ReloadHazardousItems()) {
// 成功
} else {
// 失败
}
即:未保存的改动存在时拒绝重载,除非显式加 force。这是 4 条指令中唯一有二次确认语义的一条。
Tab 补全分两级:第 1 参数给 reload、save、listpotions、listdamagesources;第 2 参数在首参为 reload 时给 force(HazardousItemsCommand.java:88-93)。
数值
| 数值名 | 值 |
|---|---|
| 指令数 | 4 |
| 子命令总数 | 8(4 + 1 + 1 + 2) |
| 别名条目总数 | 8(2 + 2 + 2 + 2),其中 hazarditems 与自身指令名重复,有效别名 7 |
| 权限等级 | 全部 2 |
| 默认注册数 | 0(4 个开关默认全为 false) |
| 消息键前缀 | dreamcraft.command.* |
| 带二次确认的指令 | 1(/hazarditems reload,需 force) |
交互
| 场景 | 结果 |
|---|---|
| 默认配置 | 4 条指令均不可用 |
开启 HazardousItems |
/hazarditems 出现 |
开启 CustomToolTips |
/customtooltips 出现 |
开启 CustomFuels |
/customfuels 出现 |
开启 CustomDrops |
/customdrops 出现 |
reload 成功 |
聊天栏输出 dreamcraft.command.reload.success |
reload 失败 |
聊天栏输出 dreamcraft.command.reload.failure |
/hazarditems reload 且有未存改动 |
输出 dreamcraft.command.hazarditems.reload.unsafe,不执行 |
/hazarditems reload force |
无视未存改动,强制重载 |
相关条目
- CoreModConfig - 4 个开关的定义与默认值
- 数据驱动模块 - 3 条
reload指令所重载的模块 - 危险物品模块 -
/hazarditems的作用对象