运行时依赖

基本信息

属性 值
Minecraft 1.7.10(gradle.properties:24)
Forge 10.13.4.1614(gradle.properties:27)
必需前置 gtnhlib@[0.2.4,)(MalisisCore.java:59)
必需前置 malisiscore(MalisisDoors.java:39)
Access Transformer src/main/resources/META-INF/malisisdoors_at.cfg(20 条)
jar 内 mod 数 2(malisiscore + malisisdoors)

功能

本仓库构建出的是一个 jar、两个 mod。源码树同时包含 net/malisis/core(框架库)与 net/malisis/doors(本 mod 主体),二者各自带 @Mod 注解:

modid 类 显示名 依赖声明
malisiscore net.malisis.core.MalisisCore Malisis Core required-after:gtnhlib@[0.2.4,)(MalisisCore.java:55-59)
malisisdoors net.malisis.doors.MalisisDoors Malisis’ Doors required-after:malisiscore(MalisisDoors.java:35-39)

两者的 modid 均以常量定义:MalisisCore.modid = "malisiscore"(MalisisCore.java:63)、MalisisDoors.modid = "malisisdoors"(MalisisDoors.java:45),与 gradle.properties:10 的 modId = malisisdoors 一致。

资源目录下同时存在 assets/malisiscore/ 与 assets/malisisdoors/ 两套资源,lang 各 7 种语言,与双 mod 结构对应。

MalisisCore 的职责

malisiscore 是 MalisisDoors 的自研框架,本 mod 的以下能力全部由它提供:

能力 使用的类
配置框架 net.malisis.core.configuration.Settings / ConfigurationGui
GUI 框架 net.malisis.core.client.gui.MalisisGui / UIWindow
容器框架 net.malisis.core.inventory.MalisisInventory / MalisisSlot
方块基类 net.malisis.core.block.MalisisBlock
多方块框架 net.malisis.core.tileentity.MultiBlockTileEntity / MultiBlock
原版门替换 net.malisis.core.util.replacement.ReplacementTool
配置指令 /malisis config <modid>、/malisis version <modid>

MalisisDoors 在构造时通过 MalisisCore.registerMod(this) 注册自身到框架的 registeredMods 表(MalisisDoors.java:55-59),使 /malisis config malisisdoors 能定位到本 mod 的设置。

本 wiki 分类只覆盖 malisisdoors 自身的内容。malisiscore 作为随 jar 分发的框架库,其内部实现不在本条目范围内。

Access Transformer

src/main/resources/META-INF/malisisdoors_at.cfg 放开 20 条 原版/Forge 成员访问权限,核心目的是让运行时反射替换原版方块成为可能:

目标 作用
RegistryDelegate$Delegate.setName(String) / changeReference(Object) 改写注册表中的注册名——原版门替换的核心(AT 文件第 17-18 条)
ItemBlock.field_150939_a 改写原版 ItemBlock 指向的方块(同上,AT 第 8 行)
StatCrafting.field_150960_a、ShapedRecipes.field_77575_e、ShapelessRecipes.field_77580_a 开放合成配方内部列表,供 5 个 ReplacementHandler 遍历替换(AT 第 7、11-12 行)
RenderGlobal.field_72738_E / field_94141_F 客户端方块渲染内部数据
TextureAtlasSprite.field_110977_n / field_110978_o / field_110979_l / field_110980_m / field_147966_k 自定义贴图(伪装栅栏门等)的 UV 与各向异性过滤
FontRenderer.field_78287_e / field_111274_c 自绘数字字体(模组内含 assets/malisisdoors/fonts/)
Tessellator.field_78415_z 绘制状态查询
PlayerManager.func_72690_a / PlayerManager$PlayerInstance / field_73263_b 区块加载时向客户端补发 TileEntity 同步

这也解释了 Registers.java 中出现大量 field_150466_ao、field_151135_aq 这类 SRG 字段名——它们是传给 ReplacementTool 的 srgFieldName 参数。

开发期依赖

dependencies.gradle:5 声明了 NEI:

runtimeOnlyNonPublishable("com.github.GTNewHorizons:NotEnoughItems:2.8.123-GTNH:dev")

该依赖为 runtimeOnlyNonPublishable,仅存在于开发运行环境中,不发布到正式 jar。源码中没有任何对 NotEnoughItems 的引用(grep -rn 'NotEnoughItems' src/main/java 无匹配)——它只是让开发实例里能查到配方。

同文件还声明了 Lombok 1.18.24(compileOnly + annotationProcessor,dependencies.gradle:2-3),以及 GTNHLib 0.11.37(dependencies.gradle:4)。

数值

数值名 值 出处
jar 内 mod 数 2 grep -rn '@Mod' src/main/java 命中 MalisisCore.java:55、MalisisDoors.java:35
AT 条目数 20 src/main/resources/META-INF/malisisdoors_at.cfg(grep -c .)
必需前置数 2(gtnhlib、malisiscore) MalisisCore.java:59、MalisisDoors.java:39
支持语言数 7(cs/de/en/es/fr/ru/zh) assets/malisisdoors/lang/ 目录

相关条目