LunatriusCore
[!INFO] Git Commit:
48cf796| Updated: 2024-11-16
LunatriusCore 是 Lunatrius 各 mod 共用的纯核心库(mcmod.info 描述原文:A collection of utilities for Lunatrius' mods.),在 GTNH 1.7.10 整合包里不提供任何游戏内容。它的全部价值在于一组供其他 mod compileOnly 依赖的静态工具类与常量,以及三个配置项。
基本信息
| 属性 | 值 |
|---|---|
| modid | LunatriusCore(驼峰,见 gradle.properties 的 modId 与 Reference.MODID) |
| 显示名 | LunatriusCore |
@Mod 类 |
com.github.lunatrius.core.LunatriusCore |
| 资源域 | core(src/main/resources/assets/core/lang/,小写,与 modid 不一致) |
| 根包 | com.github.lunatrius(gradle.properties 的 modGroup) |
| Minecraft | 1.7.10 |
| Forge | 10.13.4.1614 |
| 语言文件 | de_DE / en_US / fr_FR / ru_RU / zh_CN,共 5 份 |
| Java 文件数 | 28 |
[!NOTE]
gradle.properties中apiPackage(官方用于标注 API 包的属性)留空,但这并不影响其它 mod 直接依赖这些类——它们全部是public static工具方法,无接口、无需实现。
API 一览
全部 API 归入 setting/ 维度,共 12 个条目。
生命周期与常量
- Mod 入口与生命周期 —
@Mod类的preInit/init/postInit与checkModList - Proxy 体系 —
CommonProxy/ClientProxy/ServerProxy - 常量与配置键名 —
Reference与Names
配置
- 配置项 —
ConfigurationHandler的 3 个可见选项 + 1 个隐藏项 - 配置界面 —
GuiFactory/GuiModConfig/GuiHandler(改写模组列表页)
客户端 GUI 工具
工具类
- 版本检测 —
VersionChecker/VersionTicker(GTNH 分支中已被掏空) - 实体辅助 —
EntityHelper - 文件辅助 —
FileUtils - 史莱姆区块判定 —
ChunkHelper - 向量数学库 — 9 个
Vector2/3/4 x i/f/d类
事件与网络
本 mod 声明的事件
零个。 全仓库没有任何 extends Event、@Cancelable 或自定义事件类,因此不存在自己的事件总线,也不向任何总线 post 事件。grep 证据见下方「本 mod 没有的内容」。
本 mod 只订阅 Forge/FML 既有事件,共 4 个处理器:
| 处理器 | 订阅方法 | 事件类型 | 注册到的总线 | 触发时机 | 行为 |
|---|---|---|---|---|---|
ConfigurationHandler |
onConfigurationChangedEvent |
cpw.mods.fml.client.event.ConfigChangedEvent.OnConfigChangedEvent |
FML 总线 | 任一 mod 保存配置后 | event.modID 等于 LunatriusCore 时重新 loadConfiguration() |
GuiHandler |
onGuiOpen |
net.minecraftforge.client.event.GuiOpenEvent |
MinecraftForge.EVENT_BUS |
打开任意 GuiScreen |
若 replaceInGameConfig 为 true 且 event.gui instanceof GuiIngameModOptions,把 event.gui 换成 GuiModConfigList |
DelayedGuiDisplayTicker |
onClientTick |
cpw.mods.fml.common.gameevent.TickEvent.ClientTickEvent |
FML 总线(由静态 create() 注册) |
客户端每 tick | 延迟计数到 ticks < 0 时打开目标界面并自我反注册 |
VersionTicker |
onTick |
cpw.mods.fml.common.gameevent.TickEvent.ClientTickEvent |
未注册 | — | 方法体为空,且全仓库无注册代码 |
[!WARNING] 上表最后一行
VersionTicker属于死代码:ClientProxy.registerTickers()只注册了ConfigurationHandler与GuiHandler两个对象,VersionTicker从未被register。GuiHandler也没有调用setCanceled——它通过改写event.gui字段生效,而GuiOpenEvent本身是可取消的。
网络消息
零个。 见下方 grep 证据。
本 mod 没有的内容(grep 证据)
以下命令均在 /Users/evlos/a/mirror/LunatriusCore/src/main/java/ 下执行,全部零命中:
# 方块 / 物品 / TileEntity / 实体 / 配方 注册
grep -rnE 'registerBlock|registerItem|registerTileEntity|registerEntity|registerRecipes|registerWorldProvider|registerDimension|registerModEntity' . # → no match
grep -rnE 'extends (Block|Item|Entity|TileEntity|Mob)\b' . # → no match
# 附魔 / 群系 / 结构 / 成就 / Buff / 维度
grep -rnE 'Enchantment|BiomeGen|MapGenStructure|Achievement|PotionEffect|WorldProvider|DimensionManager' . # → no match
# 指令
grep -rnE 'ICommand|CommandBase|addChatCommand|ClientCommandHandler|ServerCommandHandler' . # → no match
# 热键
grep -rnE 'KeyBinding|keyBinding|KeyBindingList|registerKeyBinding' . # → no match
# 网络
grep -rnE 'SimpleNetworkWrapper|NetworkRegistry|IMessage|IMessageHandler|ByteBuf|NettyPlayMsg|FMLNetworkEvent|Packet' . # → no match
# 自定义事件 / 事件总线
grep -rnE '@Cancelable|extends Event\b|new Event\(|EventBus|post\(' . # → no match
# NBT 序列化
grep -rnE 'NBTTagCompound|writeToNBT|readFromNBT|NBTTagList' . # → no match
| 维度 | 状态 | 说明 |
|---|---|---|
方块 block |
无 | 无 registerBlock,无 extends Block,assets/ 下无 blockstates / models 目录 |
多方块 multiblock |
无 | 无方块自然无多方块 |
物品 item |
无 | 无 registerItem,无 extends Item |
实体 entity |
无 | 无 registerEntity,无 extends Entity(EntityHelper 只是读取实体坐标,见实体辅助) |
附魔 enchantment |
无 | 无 Enchantment 子类 |
维度 dimension |
无 | 无 WorldProvider / DimensionManager |
热键 keybinding |
无 | 无 new KeyBinding |
Buff/Debuff potioneffect |
无 | 无 PotionEffect |
群系 biome |
无 | 无 BiomeGen |
结构 structure |
无 | 无 MapGenStructure |
成就 achievement |
无 | 无 Achievement |
物品效果 item-effect |
无 | 无 ItemEffect |
| 指令 | 无 | 无 ICommand,不注册任何聊天指令 |
| 自定义事件 | 无 | 无 extends Event / @Cancelable |
| 网络消息 | 无 | 无 SimpleNetworkWrapper / IMessage / ByteBuf |
| NBT 序列化 | 无 | 无 NBTTagCompound / writeToNBT |
| Mixin | 无 | gradle.properties 中 usesMixins = false,mixinPlugin / mixinsPackage 均为空;src/ 下无 mixin 源码集 |
| CoreMod | 无 | gradle.properties 中 coreModClass 为空,containsMixinsAndOrCoreModOnly = false |
| Access Transformer | 无 | gradle.properties 中 accessTransformersFile 为空,src/main/resources/META-INF/ 下无 .cfg |
唯一使用到反射的地方是 GuiHandler:ReflectionHelper.findField(GuiModList.class, "mods") 拿到 FML 模组列表字段,然后剔除没有配置界面的 mod,见配置界面。
相关条目
- 配置项 - 全部 4 个配置属性与默认值
- Mod 入口与生命周期 -
@Mod注解与事件阶段 - 向量数学库 - 本 mod 最大的 API 面