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 个条目。

生命周期与常量

配置

  • 配置项 — ConfigurationHandler 的 3 个可见选项 + 1 个隐藏项
  • 配置界面 — GuiFactory / GuiModConfig / GuiHandler(改写模组列表页)

客户端 GUI 工具

工具类

事件与网络

本 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,见配置界面。

相关条目