客户端指令
基本信息
| 属性 | 值 |
|---|---|
| 基类 | com.gtnewhorizon.gtnhlib.commands.GTNHClientCommand(抽象,extends CommandBase) |
| 指令 | /iteminhand(别名 /iih)、/resourcepack |
| 源码 | src/main/java/com/gtnewhorizon/gtnhlib/commands/(4 个类) |
| 注册位置 | ClientProxy.java:79-80 |
| 作用面 | 仅客户端 |
功能
两个只在客户端执行的调试/工具指令,注册进 ClientCommandHandler 而非服务端指令表。
GTNHClientCommand 提供统一的错误输出(commands/GTNHClientCommand.java:19):
return "/" + this.getCommandName();
即在客户端把指令名渲染成 /xxx 形式。
/iteminhand
| 属性 | 值 |
|---|---|
| 类 | com.gtnewhorizon.gtnhlib.commands.ItemInHandCommand |
| 指令名 | iteminhand |
| 别名 | iih |
| 别名类型 | Collections.singletonList("iih") |
打印玩家主手物品的详细信息,借此排查物品注册与流体容器问题。源码导入了三类判别依赖(ItemInHandCommand.java:11-16):
| 导入 | 用途 |
|---|---|
net.minecraftforge.fluids.FluidStack、IFluidContainerItem |
判断手持物是否为流体容器及其存量 |
net.minecraftforge.oredict.OreDictionary |
展开矿词典注册的物品 |
net.minecraft.item.Item、ItemStack |
物品基础信息 |
addInfoToChat 等方法在 CommonProxy 中是空实现(CommonProxy.java:169),实际实现只在 ClientProxy —— 这是 GTNHLib 客户端/服务端分离的惯用手法。
/resourcepack
| 属性 | 值 |
|---|---|
| 类 | com.gtnewhorizon.gtnhlib.commands.CommandResourcePack |
| 指令名 | resourcepack |
| 用法 | /resourcepack updateCheck [force] |
资源包更新检查的手动入口。子动作:
| 参数 | 行为 |
|---|---|
无参 或 help |
打印帮助 |
updateCheck [force] |
手动触发检查 |
list |
列出已启用的资源包及其更新器 |
force 参数可绕过配置开关(CommandResourcePack.java:30-33):
if (!GTNHLibConfig.enableResourcePackUpdateCheck && !force) {
addChatMessage(StatCollector.translateToLocal("gtnhlib.chat.rpupdater.disabled"));
return;
}
即 enableResourcePackUpdateCheck = false 时仍可用 force 手动检查,便于排查自动检查为何不工作。
错误信息使用 Locale.ROOT 强制格式化(CommandResourcePack.java:3 导入),避免受系统默认 Locale 影响 —— 资源包名常含非 ASCII 字符。
语言键
/resourcepack 的全部输出走 gtnhlib.chat.rpupdater.* 键,共 28 条,见 assets/gtnhlib/lang/en_US.lang。典型的失败分支包括:
| 语言键 | 触发条件 |
|---|---|
gtnhlib.chat.rpupdater.disabled |
配置关闭且未加 force |
gtnhlib.chat.rpupdater.already_running |
检查已在进行 |
gtnhlib.chat.rpupdater.cooldown |
近期失败处于冷却期 |
gtnhlib.chat.rpupdater.manual_cooldown |
手动检查过于频繁 |
gtnhlib.chat.rpupdater.info.not_found |
无匹配的资源包 |
gtnhlib.chat.rpupdater.info.ambiguous |
匹配到多个包,需更具体的名称 |
数值
| 数值名 | 值 |
|---|---|
commands 包类数 |
4(GTNHClientCommand、ItemInHandCommand、CommandResourcePack、TitleCommand) |
| 客户端指令数 | 2 |
| 客户端指令子类 | 2(均继承 GTNHClientCommand) |
| 服务端指令数 | 2(/title、/blockstate)+ 队伍指令 2 个(可选) |
| 注册方式 | ClientCommandHandler.instance.registerCommand(...) |
交互
两个指令与 TitleCommand、BlockStateCommand 的关键差别:客户端指令不要求 OP,也不经服务端校验 —— 它们只影响本地客户端状态。
队伍指令 /gtnhteam 受 enableTeamCommands 控制,与本组无关,见 队伍系统。