WanionLib
[!INFO] Git Commit:
3c44ca5| Updated: 2026-04-27
GTNH 1.7.10 的纯代码库 mod(作者 WanionCane,modid wanionlib,@Mod 类 wanion.lib.WanionLib,根包 wanion.lib,MPL-2.0)。mcmod.info 描述为 “Shared Code Library Used by (not)all WanionCane mods!”,描述里也点明它不面向玩家。
全仓库 23 个 Java 文件、约 1094 行,注册 0 个方块、0 个物品、0 个实体。 它的全部内容就是供其它 mod compileOnly 依赖后调用的 API:多线程加载框架、懒加载依赖容器、物品 meta 键编码、配方辅助、客户端序列帧动画。玩家在游戏里看不到任何 WanionLib 内容物。
构建信息
| 属性 | 值 |
|---|---|
| Minecraft | 1.7.10 |
| Forge | 10.13.4.1614 |
| 兼容声明 | acceptedMinecraftVersions = "[1.7.10]"(Reference.ACCEPTED_MINECRAFT) |
| 版本来源 | Reference.MOD_VERSION = "GRADLETOKEN_VERSION",构建期由 Gradle 替换 |
| 构建插件 | com.gtnewhorizons.gtnhconvention / gtnhsettingsconvention 2.0.24 |
| 硬依赖 | 无(mcmod.info 的 "dependencies": []) |
| 编译期依赖 | CraftTweaker 3.4.6、ZenScript 1.0.1-GTNH(均 compileOnly + transitive = false) |
| 资源文件 | 仅 src/main/resources/mcmod.info 与 WanionLib.png(logo) |
API 面总览(23 个类)
| 包 | 类 | 职责 |
|---|---|---|
wanion.lib |
WanionLib |
@Mod 主类,@Mod.Instance 单例,logger 与依赖容器入口 |
wanion.lib |
Reference |
常量(MOD_ID / MOD_NAME / MOD_VERSION / ACCEPTED_MINECRAFT) |
wanion.lib.common |
Dependencies<D> |
按类身份的懒加载单例容器(IdentityHashMap) |
wanion.lib.common |
IRemovable |
removed() / setRemoved(boolean) 软删除标记接口 |
wanion.lib.common |
Instantiator<I> |
函数式接口,反射实例化替代方案 |
wanion.lib.common |
MetaItem |
ItemStack ↔ int 物品键编码 + 集合化 |
wanion.lib.common |
FixedSizeList<E> |
容量固定的 ArrayList 替身,满时 add 返回 false |
wanion.lib.common |
Util |
反射读写字段、getModName(ItemStack) |
wanion.lib.common |
MineTweakerHelper |
CraftTweaker IItemStack / IOreDictEntry → MC 对象 |
wanion.lib.module |
LoadStage |
加载阶段枚举,4 值,对应 FML 事件类 |
wanion.lib.module |
SpecifiedLoadStage |
@SpecifiedLoadStage 运行时注解,指定线程类阶段 |
wanion.lib.module |
AbstractModule |
模块基类 + Manager 嵌套类(EnumMap 分组) |
wanion.lib.module |
AbstractModuleThread |
Callable<String> 任务基类 |
wanion.lib.module |
ModuleHandler |
按 FML 阶段调度所有模块 |
wanion.lib.recipe |
RecipeHelper |
物品数组 → Forge IRecipe 形状数组 |
wanion.lib.recipe.advanced |
IAdvancedRecipe |
高级配方接口(继承 IRemovable) |
wanion.lib.recipe.advanced |
AbstractRecipeRegistry<R> |
按 short 键分桶的运行时配方匹配器 |
wanion.lib.client |
ClientTickHandler |
客户端 tick 驱动所有动画 |
wanion.lib.client.animation |
Animation |
序列帧动画基类 |
wanion.lib.client.animation |
SimpleAnimation |
顺序逐帧 |
wanion.lib.client.animation |
SimpleHalfAnimation |
隔帧半速 |
wanion.lib.client.animation |
ComplexAnimation |
按 int[] 阶段表跳帧 |
wanion.lib.client.animation |
ComplexHalfAnimation |
阶段表 + 半速 |
游戏设定 / API 表面
本 mod 唯一的「设定」维度就是它对外暴露的 API。7 个分组条目:
- 主类入口与依赖注入 -
@Mod主类WanionLib、常量类Reference、懒加载容器Dependencies<D>与DependenceWatcher、函数式接口Instantiator、软删除接口IRemovable(7 类) - 模块系统 - 并行加载框架:
LoadStage(4 值枚举)、@SpecifiedLoadStage、AbstractModule+Manager、AbstractModuleThread、ModuleHandler(6 类) - MetaItem 物品键编码 -
ItemStack↔int键的位布局(低 16 位 id / 第 16 位标志 / 高位damage + 1),及 7 个集合化与统计方法 - 配方形状转换 -
RecipeHelper三个rawShapeToShape重载(键字符由int f = 1经(char) f++发出),含一维/二维的截断行为差异 - 高级配方注册表 -
IAdvancedRecipe接口 +AbstractRecipeRegistry<R>,recipeKey = recipeSize | (width << 8) | (height << 12) - 客户端动画 API -
Animation基类 + 4 个变体(SimpleAnimation/SimpleHalfAnimation/ComplexAnimation/ComplexHalfAnimation)+ClientTickHandler - 工具类 -
Util(反射 +getModName)、FixedSizeList<E>、MineTweakerHelper(CraftTweaker 桥接)
配置
本 mod 不写任何配置文件。 全仓库零 Configuration / @Config / ForgeConfig / getConfig 匹配,因此没有 .cfg 落盘,也没有任何可调参数。所有行为改变都靠消费方传入的构造参数(如 Animation 的帧数组、ComplexAnimation 的阶段表、AbstractModule 的 Instantiator)。
唯一的「可配置项」是常量类 Reference 的 4 个编译期常量。
事件处理
本 mod 不声明任何自定义事件类,也没有自己的事件总线。全仓库仅 3 处事件回调:
| 位置 | 注解 | 事件类型 | 总线 | 行为 |
|---|---|---|---|---|
WanionLib.preInit |
@Mod.EventHandler |
FMLPreInitializationEvent |
FML | logger = event.getModLog(); |
WanionLib.loadComplete |
@Mod.EventHandler |
FMLLoadCompleteEvent |
FML | dependencies = null; |
ClientTickHandler.tickEvent |
@SubscribeEvent |
TickEvent.ClientTickEvent |
FMLCommonHandler.instance().bus() |
遍历 registeredAnimations 调 updateAnimation() |
三者都是 vanilla FML 事件的被动监听器,没有取消语义、不设优先级、不修改事件状态。
本 mod 没有 X(grep 证据)
以下维度经全仓库检索确认零内容,因此未建立对应目录:
| 缺失维度 | 检索式 | 结果 |
|---|---|---|
| 方块 | registerBlock、extends Block、setHardness |
0 命中 |
| 多方块结构 | Multiblock、Controller、Formation |
0 命中 |
| 物品 | registerItem、extends Item、maxStackSize |
0 命中 |
| TileEntity | registerTileEntity、extends TileEntity |
0 命中 |
| 实体 | registerModEntity、EntityRegistry、extends Entity* |
0 命中 |
| 容器 / GUI | Container、IGuiHandler、GuiScreen、IInventory |
0 命中 |
| 附魔 | Enchantment |
0 命中 |
| Buff / Debuff | Potion、PotionEffect |
0 命中 |
| 群系 | BiomeGen、Biome |
0 命中 |
| 结构 / 世界生成 | WorldGen、ChunkProvider、MapGen、IWorldGenerator |
0 命中 |
| 成就 | Achievement |
0 命中 |
| 维度 / WorldProvider | registerDimension、registerWorldProvider、extends WorldProvider |
0 命中 |
| 热键 | KeyBinding、registerKeyBinding |
0 命中 |
| 指令 | ICommand、CommandBase、addChatCommand、ClientCommandHandler |
0 命中 |
| 能力系统 | Capability、ICapability |
0 命中 |
| NBT 序列化 | NBTTagCompound、writeToNBT、readFromNBT、getCompoundTag |
0 命中 |
| 配方注册 | GameRegistry.register、addCraftingRecipe、IRecipe 实现类 |
0 命中 |
| 网络封包 | SimpleNetworkWrapper、IMessage |
0 命中 |
| NEI / REI / JEI | nei/、rei/、jei/、SimpleServiceLocator |
0 命中 |
补充说明:
- 没有物品 / 配方:
MetaItem与RecipeHelper看起来像物品与配方入口,但它们只做数据转换,不注册任何内容 —— 前者把已有的ItemStack压成int,后者把调用方给的数组重排成 Forge 形状数组。库内没有任何Item、Block子类,也没有任何GameRegistry.register*调用。 - 没有能力系统:
Dependencies<D>名字像 capability,但它是纯 JVM 内的懒加载单例容器(IdentityHashMap),与 Minecraft 的ICapability无关,不写 NBT、不随存档持久化。 - 没有 NBT:
IAdvancedRecipe的getRecipeKey()/getRecipeSize()是运行期 short 索引(recipeSize | (width << 8) | (height << 12)),不是持久化键。 - 没有容器:
AbstractRecipeRegistry.findMatchingRecipe(InventoryCrafting)只读取传入的InventoryCrafting(调getSizeInventory()与getStackInSlot(int)),自己不实现Container、不注册 GUI ID。 - 没有能力 / 事件总线:
ClientTickHandler是库内唯一的WanionLib.IDependency实现,仅用于客户端动画驱动。 - 未使用的能力:
ModuleHandler在库内除自身定义外零引用 —— WanionLib 不会自动接线它,由引用本库的 mod 在自己的@Mod事件回调里手工addModule+startModules。同理Dependencies.subscribe(...)/DependenceWatcher在库内也无人使用。