Salis Arcana
[!INFO] Git Commit:
c9d264d| Updated: 2026-10-02
Salis Arcana 是一套面向 Thaumcraft 4 的配置、工具与缺陷修复集合,由 rndmorris 与 Midnight145 维护。它不是独立玩法模组——自身只注册 1 个方块、2 个物品与 4 条研究,全部实质内容是对泰奥神秘时代 4 的 153 条字节码补丁、204 项可配置开关、10 条服务端命令与 9 个网络消息。
工作方式是 coremod + mixin + ASM:以 FML 核心模组身份在所有模组的 preInit 之前运行,读取配置、再用 SalisArcanaClassTransformer 与 204 个 mixin 类改写 Thaumcraft 4 的字节码。所有补丁由 SalisBuilder 以枚举方式集中注册,每个补丁用 applyIf(...) 绑定到某一项配置开关——关掉开关即让对应补丁失效,Thaumcraft 代码原样运行。
依赖:Thaumcraft 4(唯一硬依赖,modid Thaumcraft,Gradle 坐标 thaumcraft:Thaumcraft:1.7.10-4.2.3.5)+ UniMixins 0.1.23+。tc4tweak(需 ≥1.5.32)与 gtnhtcwands 为软依赖,另有 11 个模组为仅编译期依赖。
身份标识
以下字符串互不相同,均从源码读出而非从目录名推断:
| 身份 | 值 | 来源 |
|---|---|---|
| modid | salisarcana(无连字符) |
SalisArcana.java:27,gradle.properties 的 modId |
| 分类目录名 | salis-arcana(有连字符) |
relation.md 注释「驼峰转小写」 |
| 显示名 | Salis Arcana |
gradle.properties 的 modName;SalisArcana.java:22 |
| Modrinth slug | salis-arcana |
Updater.java:47 拼接的更新 URL |
| 仓库目录名 | Salis-Arcana |
git ls-files 与 os.listdir 双重确认 |
| FML 容器类 | core.SalisArcanaCore |
gradle.properties 的 coreModClass;内部常量 MODID = "salisarcana" |
| modGroup | dev.rndmorris.salisarcana |
gradle.properties |
| 资源域 | salisarcana |
assets/salisarcana/** |
| 第二个资源域 | baubles |
assets/baubles/textures/items/empty_bauble_slot_focus_pouch.png — 属于另一个模组的域,本模组只借用其路径放一张贴图 |
| 注册域 | salisarcana |
GameRegistry.registerBlock/registerItem 传入未限定名,由 FML 自动加 modid 前缀 |
| jar 名 | 取决于 modId = salisarcana |
gradle.properties 的 customArchiveBaseName 被注释掉,故由 modId 推导 |
@Mod 注解类有且仅有 1 个:dev.rndmorris.salisarcana.SalisArcana。全仓有 64 个文件命中字符串 @Mod,但其中 63 个是 MixinExtras 注入器注解(@ModifyArg、@ModifyConstant、@ModifyExpressionValue、@ModifyReceiver、@ModifyVariable)的字面前缀碰撞——这正是「短 token 子串匹配」的典型陷阱。真正的 @Mod( 注解只有 1 处。
MC 版本
Minecraft 1.7.10 / Forge 10.13.4.1614,四重独立证据一致:
gradle.properties:minecraftVersion = 1.7.10、forgeVersion = 10.13.4.1614SalisArcana.java:23:acceptedMinecraftVersions = "[1.7.10]"SalisArcanaCore.java:17:@IFMLLoadingPlugin.MCVersion("1.7.10")- 加载器为
cpw.mods.fml(Forge 1.7.10 专属 API),构建用 RetroFuturaGradle(com.gtnewhorizons.gtnhconvention)
本条目不依据
net.neoforged/net.fabricmc字符串判断版本。
模组版本:无法核实
模组自身的版本号无法从本镜像核实,三种版本形式全部落空:
gradle.properties中没有modVersion键(全文件无任何modVersion引用)src/main/resources/mcmod.info的"version"字段是未解析的占位符"${modVersion}"SalisArcana.java:21引用Tags.VERSION,而dev/rndmorris/salisarcana/Tags.java由 gradle 的generateGradleTokenClass在构建期生成,源码仓库中不存在
原因是镜像为浅克隆:git rev-parse --is-shallow-repository 为 true,git log 只有 1 个提交,git tag 为 0 个。RetroFuturaGradle 的版本号依赖 git 标签,此处无从取得。
因此本条目不引用 git describe:该仓库上 git describe --tags 直接失败——fatal: No names found, cannot describe anything.;而 git describe --always 返回的只是裸哈希 c9d264d,不是版本号。改引已用 git cat-file -t c9d264d 验证为 commit 对象的提交哈希(完整值 c9d264d0f1c9bcd805cb4854ec63274ee1787d35,日期 2026-09-21)。
这不属于「反编译 jar」例外:仓库有完整的 gradle 构建(
build.gradle、settings.gradle、gradle.properties、gradlew),源码是真实源码。属浅克隆这一种特殊情况,据实记录,不编造版本号。
注册内容
以下全部为实际生效的注册,已排除死代码与注释掉的注册:
| 类别 | 数量 | 说明 |
|---|---|---|
| FML 模组容器 | 1 | SalisArcana.java |
| FML 核心模组 | 1 | SalisArcanaCore(IFMLLoadingPlugin + IEarlyMixinLoader) |
| ASM 类变换器 | 1 | SalisArcanaClassTransformer(SalisArcanaCore.java:31) |
| 混入配置 | 3 | mixins.salisarcana{,.early,.late}.json |
| 混入枚举常量 | 153 | mixins/Mixins.java,实现 IMixins |
| 混入类 | 204 | 206 处引用去重;与磁盘 .java 双向零差 |
| 方块 | 1 | salisarcana:blockCustomPlank(2 个元数据变种) |
| 物品 | 2 | salisarcana:capPlaceholder、salisarcana:rodPlaceholder |
| 研究条目 | 3 | REPLACEWANDCAPS、REPLACEWANDCORE、CHESTSCAN |
| 焦点升级类型 | 1 | DisenchantFocusUpgrade(研究 FOCUS_DISENCHANTING) |
| 服务端命令 | 10 | 经 XxxCommand::new 方法引用注册 |
| 网络消息 | 9 | 判别符 1–9 |
| 配置设置 | 204 | 7 个分组 |
| 矿石字典名 | 5 | api/OreDict.java |
| 目标模组 | 13 | mixins/TargetedMod.java |
| 访问变换器条目 | 8 | META-INF/salisarcana_at.cfg |
混入类的双向校验结果:注册表引用的 204 个类全部在磁盘上存在(悬空 0),磁盘上的 204 个 mixin 文件全部被引用(孤儿 0),且阶段归属全部正确。
配置列表
- 配置框架 - 204 项设置、7 个分组、依赖机制与加载时机
- 缺陷修复组 - 79 项,默认全开,关掉即回退原版行为
- 功能增强组 - 75 项,8 项默认关闭
- 神秘时代配置组 - 32 项,直接改写 TC4 数值与世界生成
- 模组兼容组 - 5 个兼容块 + 1 项,随目标模组加载状态生效
- 命令组 - 10 项
CommandSettings,每项对应一条命令 - 附加内容组 - 1 项,Automagy 锅炉假玩家崩溃修复
- 调试组 - 1 项,扭曲来源堆栈日志
补丁列表
- 补丁注册框架 - 153 个枚举常量的注册机制、阶段与
TargetedMod目标表 - 缺陷修复补丁 - 73 个常量,106 个混入类
- 功能增强补丁 - 53 个常量,70 个混入类
- 神秘时代配置补丁 - 18 个常量,19 个混入类
方块列表
- 类生木木板 - 行为正常的生木/银木木板,兼作泰奥纳米肯的展示条目
物品列表
- 法杖组件占位物品 - 一个图标代表整类原版端盖/核心,变种数随运行时注册动态变化
研究列表
命令列表
- 命令 - 10 条
/salisarcana-*服务端命令,权限 0 或 2,含一条子权限
核心列表
- 核心模组与 ASM 变换器 - coremod、配置加载时机、
MethodRemover与ModCompatEditor
模组兼容列表
- 模组兼容 - 13 个
TargetedMod目标、4 个专用兼容类、依赖的硬/软/仅引用分层
网络列表
- 网络消息 - 9 条消息,5 条服务端、4 条客户端
API 列表
- 公开 API - 4 个实现接口与 5 个矿石字典常量
未收录范围
以下内容经核查后有意不单独立页,在此说明取舍:
lib/包的 32 个工具类(R、KnowItAll、WandHelper、AspectHelper、ArrayHelper等)——纯内部工具,不对外承诺 API,逐个立页无玩家价值common/compat/nei/3 个 NEI 处理器——已并入 模组兼容 的 NEI 小节common/recipes/6 个配方类——配方内容分散在多个设置开关下,已在 补丁注册框架 与各设置页说明- 204 项设置逐条立页——按「同类合并为一页 + 表格」惯例收敛为 7 个分组页
- 204 个混入类逐条立页——按配置分组收敛为 3 个补丁页,每页一张完整表
client/handlers、notifications/——事件处理器与更新器,无独立玩家可见行为