MyEssentialsCore
基本信息
| 属性 | 值 |
|---|---|
| 类名 | myessentials.MyEssentialsCore |
| modid | MyEssentials-Core(含连字符) |
| 注解 | @Mod(modid="MyEssentials-Core", name="MyEssentials-Core", version="GRADLETOKEN_VERSION", dependencies="required-after:Forge", acceptableRemoteVersions="*") |
| 生命周期 | preInit(仅此一个) |
| 启用版本 | Minecraft 1.7.10 |
功能
mod 主类。只做一件事:在 preInit 里初始化配置、本地化与三个管理器单例。
@Mod.EventHandler
public void preInit(FMLPreInitializationEvent ev) {
LOG = ev.getModLog();
Constants.CONFIG_FOLDER = ev.getModConfigurationDirectory().getPath() + "/MyEssentials-Core/";
Constants.DATABASE_FOLDER = ev.getModConfigurationDirectory().getParent() + "/databases/";
Config.instance.init(Constants.CONFIG_FOLDER + "Core.cfg", "MyEssentials-Core");
LOCAL = new Local(Constants.CONFIG_FOLDER + "localization/",
Config.instance.localization.get(),
"/myessentials/localization/",
MyEssentialsCore.class);
LocalManager.register(LOCAL, "myessentials");
FMLCommonHandler.instance().bus().register(PlayerTracker.instance);
MinecraftForge.EVENT_BUS.register(PlayerTracker.instance);
FMLCommonHandler.instance().bus().register(ToolManager.instance);
MinecraftForge.EVENT_BUS.register(ToolManager.instance);
FMLCommonHandler.instance().bus().register(SignManager.instance);
MinecraftForge.EVENT_BUS.register(SignManager.instance);
}
实现要点
- 没有
init/postInit/serverStarting,全部初始化集中在preInit。 version = "GRADLETOKEN_VERSION"是不会被替换的占位符:gradle.properties的replaceGradleTokenInFile = BetterBarrels.java指向一个本仓库不存在的文件,generateGradleTokenClass也为空。 故正式 jar 的版本字面量就是GRADLETOKEN_VERSION。Constants.DATABASE_FOLDER用getModConfigurationDirectory().getParent() + "/databases/"即<游戏目录>/databases/(与 config 同级,非 config 的子目录)。LocalManager.register(LOCAL, "myessentials")的命名空间是myessentials(小写、无连字符),与 modidMyEssentials-Core不同。PlayerTracker/ToolManager/SignManager三个单例 各注册两次(FML 总线 + Forge 总线),源码中无区分说明。- 源码注释写「The localization can simply take the whole config instance」,
但实际传的是
Config.instance.localization.get()(已取值的字符串), 与注释不符。
相关条目
- Config -
preInit初始化的配置 - Constants - 被赋值的两个路径常量
- PlayerTracker - 注册的 3 个单例之一
- ToolManager - 注册的 3 个单例之一
- SignManager - 注册的 3 个单例之一
- Local - 本地化加载
- LocalManager - 本地化注册