CommonProxy

三个空钩子(纯客户端 mod)

基本信息

属性 值
路径 com.gtnewhorizons.navigator.CommonProxy
行数 14(全 mod 最小的非工具类)
子类 ClientProxy

全文

public class CommonProxy {
    public void preInit(FMLPreInitializationEvent event) {}
    public void init(FMLInitializationEvent event) {}
    public void postInit(FMLPostInitializationEvent event) {}
}

三个方法全部空实现,且没有 @Override(基类就是本类, 没有父类可覆写)。

为什么需要这个类

Navigator 的 @SidedProxy 需要 serverSide 有一个可实例化的类。即使本 mod 纯客户端, FML 也会在服务端加载 @Mod 类并实例化 serverSide 指向的类。

⚠️ 本类未覆写 postInit,与 InGameInfoXML 相反 (后者覆写了 2 个钩子)。这里全空是因为服务端确实无任何行为。

服务端装本 mod 会发生什么

阶段 服务端行为
coremod(NavigatorCore) 会加载 —— 读配置、注册 early mixin
late mixin(NavigatorLateMixins) 会加载 —— 但所有 mixin 都是 addClientMixins
@Mod 生命周期 三个钩子全空
ClientProxy 不实例化

⚠️ 所有 16 个 mixin 类都是 addClientMixins(见 Mixins), 所以即使服务端加载了 late mixin 配置,不会应用任何 mixin。 这是安全的。

⚠️ 但 coremod 侧的 NavigatorCore static 块 会在服务端注册两个配置类 —— 会在服务端创建 config/navigator-general.cfg 与 navigator-modules.cfg。 即服务端会生成客户端用的配置文件(内容全是默认值)。 这是 GTNHLib 配置框架的已知副作用,不影响功能。

相关