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 配置框架的已知副作用,不影响功能。
相关
- ClientProxy - 唯一有逻辑的子类
- Navigator -
@SidedProxy的声明处 - NavigatorCore - 服务端也会执行的另一个入口