客户端指令

基本信息

属性 值
基类 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 控制,与本组无关,见 队伍系统。

相关条目