注册辅助系统 - Junye-666/RideBattleLib_NeoForge_1.21.1 GitHub Wiki
IRiderPack
IRiderPack 是辅助注册系统核心。
目的是分离不同骑士的注册进程,防止眼花缭乱并提供更高的整洁性
每个骑士模组实现一个“打包骑士” IRiderPack:
public interface IRiderPack {
ResourceLocation riderId();
// 双端都会调用一次(在 FMLCommonSetupEvent 中)
default void registerCommon() {}
// 仅物理客户端调用(FMLClientSetupEvent)
default void registerClient() {}
}
实现此接口并传入riderId即可创建特定骑士的注册包:
public class FaizPack implements IRiderPack {
@Override
public ResourceLocation riderId() {
return RiderIds.FAIZ_ID;
}
@Override
public void registerCommon() {
// 音效注册
FaizSounds.init();
// 服务端 Handler *
ServerRiderDispatcher.register(new FaizServerHandler());
}
@Override
public void registerClient() {
// 客户端 Handler *
ClientRiderDispatcher.register(new FaizClientHandler());
}
}
其中在 registerCommon() 中注册服务端处理器和任何Config类,在 registerClient() 中注册客户端处理器。
然后,在你的模组总线:
@Mod(MyRiderMod.MODID)
public class MyRiderMod{
public MyRiderMod(IEventBus modEventBus, ModContainer modContainer) {
// 就在自己的 mod 构造器里注册
// 使用API快捷方法
RideBattleAPI.registerRiderPack(new FaizPack());
// 或者
RiderPackRegistry.register(new BladePack());
}
}
最后所有被注册的骑士包会自动被RiderPackRegistry 打包注册进游戏,无需其它操心
*Handler类见 分发系统