暗黑元素(Dark Aspects)
[!INFO] 注册真源:
DarkAspects.java:28-74initAspects()/DarkAspects.java:81-327addAspects()资源:本地化键tc.aspect.<tag>,纹理assets/forbidden/textures/aspects/<tag>.png
本模组向 Thaumcraft 注册 7 个自定义元素(Aspect),全部在 preInit 的 DarkAspects.initAspects()(Forbidden.java:63)中创建、postInit 的 DarkAspects.addAspects()(Forbidden.java:83)中绑定对象。
Aspect 构造调用形如 new Aspect(tag, color, Aspect[] aspects, ResourceLocation icon, int),5 个实参依次为拉丁名、颜色、二元、纹理路径、整数字面量。本条目只记录源码字面值;整数字面量的确切语义见文末「源码缺陷」第 1 条。
基本信息
| 属性 | 值 |
|---|---|
| 元素数量 | 7(其中 LUST 受 Config.noLust 开关控制) |
| 注册阶段 | initAspects() = preInit;addAspects() = postInit |
| 本地化键 | tc.aspect.<tag>(7 条) |
| 帮助键 | tc.aspect.help.<tag>(7 条) |
7 个元素的真值
下表逐项对应 DarkAspects.java:28-74,顺序即源码中的创建顺序:
| 字段 | 拉丁名(tag) | 颜色 | 二元(piston pair) | 第 5 参数(整数字面量) | 源码行 |
|---|---|---|---|---|---|
LUST |
luxuria |
0xffc1ce |
FLESH + HUNGER | 1 | :30-35 |
NETHER |
infernus |
0xff0000 |
FIRE + MAGIC | 771 | :38-43 |
PRIDE |
superbia |
0x9639ff |
FLIGHT + VOID | 1 | :44-49 |
GLUTTONY |
gula |
0xd59c46 |
HUNGER + VOID | 1 | :50-55 |
ENVY |
invidia |
0x00ba00 |
SENSES + HUNGER | 1 | :56-61 |
SLOTH |
desidia |
0x6e6e6e |
TRAP + SOUL | 771 | :62-67 |
WRATH |
ira |
0x870404 |
WEAPON + FIRE | 771 | :68-73 |
LUST 的创建整段包在 if (!Config.noLust) 中(:29),Config.java:42,111 的 No Lust 默认为 false。关闭时元素数为 6,且 addAspects() 中所有引用 LUST 的对象标签也会走 else 分支(见下)。
本地化
assets/forbidden/lang/en_US.lang:3-9 与 zh_CN.lang:3-9 定义 7 条名称键,:11-17 定义 7 条帮助键:
| tag | en_US | zh_CN |
|---|---|---|
infernus |
The Nether, Demons, Hellfire | 下界,恶魔,地狱火 |
ira |
Wrath, Anger, Rage | 暴怒,恼怒,怒火 |
gula |
Gluttony, Consumption, Indulgence | 饕餮,挥霍,放纵 |
invidia |
Envy, Jealousy, Insecurity | 妒忌,嫉妒,不安 |
superbia |
Pride, Arrogance, Disdain | 傲慢,自大,轻蔑 |
desidia |
Sloth, Laziness, Procrastination | 怠惰,懒散,拖延 |
luxuria |
Lust, Desire, Excess | 欲望,欲念,无度 |
[!NOTE] 这 7 条
tc.aspect.*键复用原版 Thaumcraft 的键前缀,因此会在 Thaumcraft 的元素列表中直接显示,而不是带forbidden.前缀。
对象标签(Object Tags)
addAspects() 通过 ThaumcraftApi.registerObjectTag 给原版物品/方块追加元素,这是本 mod 对元素系统的真正玩法贡献。取值方式统一为 ThaumcraftApiHelper.getObjectAspects(stack) 在现有值上追加(DarkAspects.java:76-79)。
原版方块与物品
| 目标 | 追加元素 | 源码 |
|---|---|---|
| 下界岩(下界岩全 meta) | NETHER 1 | :84-86 |
| 下界传送门 | NETHER 4 | :88-90 |
下界石英(矿物词典 oreQuartz) |
CRYSTAL 3 + NETHER 2 | :96 |
| 下界之星 | NETHER 8 + PRIDE 8 | :98-100 |
| 下界疣 | NETHER 1 | :102-104 |
| 下界砖(物品) | NETHER 1 | :106-108 |
| 下界砖块 | NETHER 2 | :110-112 |
| 恶魂之泪 | WRATH 4 | :114-116 |
生物头(skull meta 1 / meta 4) |
NETHER 4 / WRATH 2 | :118-124 |
| TNT | WRATH 2 | :130-132 |
| 金头盔 / 金胸甲 / 金护腿 / 金靴 | PRIDE 2 / 1 / 1 / 1 | :134-158 |
| 金剑 | PRIDE 2 | :160-164 |
| 床 | CRAFT 3 + CLOTH 6 + SLOTH 4 | :168-169 |
| 末影之眼 | SENSES 4 + ELDRITCH 4 + MAGIC 3 + ENVY 4 | :172-174 |
| 蛋糕 | GLUTTONY 7 | :178-180 |
| 曲奇 | GLUTTONY 1 | :182-184 |
| 火焰弹 | WRATH 1 | :186-188 |
| 比较器 | MECHANISM 2 + ORDER 2 + ENVY 2 | :192-193 |
培根(矿物词典 itemBacon) |
FLESH 6 + LIFE 6 + ENERGY 6 + BEAST 4 + GLUTTONY 6 | :201-203 |
鞍(!noLust) |
LUST 2 | :205-208 |
拴绳(!noLust) |
BEAST 2 + CLOTH 2 + SLIME 1 + LUST 2 | :211-213 |
[!WARNING] 金色装备与床、比较器等项用的是
getAspectList(...)的追加语义(:134-164、:168-169、:192-193),而末影之眼、比较器、培根、拴绳这几项中有的用的是新建 AspectList 覆盖语义(:172、:192、:201、:211)。因此被覆盖的物品会丢失原版元素——例如末影之眼原版的 MINECRAFT/SENSES 被整条替换。
本 mod 自身物品
| 目标 | 元素 |
|---|---|
| 致命碎片 meta 0 | NETHER 1 + WRATH 2 + CRYSTAL 1 |
| 致命碎片 meta 1 | NETHER 1 + ENVY 2 + CRYSTAL 1 |
| 致命碎片 meta 2 | TAINT 3 + CRYSTAL 1 |
| 致命碎片 meta 3 | NETHER 1 + PRIDE 2 + CRYSTAL 1 |
| 致命碎片 meta 4 | !noLust:NETHER 1 + LUST 2 + CRYSTAL 1;noLust:VOID 1(:283-285) |
| 致命碎片 meta 5 | NETHER 1 + SLOTH 2 + CRYSTAL 1 |
| 致命碎片 meta 6 | NETHER 1 + GREED 2 + CRYSTAL 1 |
| 暴食碎片(全 meta) | NETHER 1 + GLUTTONY 2 + CRYSTAL 1 |
| FMResource meta 0 | CRYSTAL 1 |
| FMResource meta 1 | DARKNESS 1 |
| 墨之花(全 meta) | PLANT 1 + LIFE 1 + SENSES 1 + DARKNESS 1 |
骑乘作物(!noLust) |
TREE 2 + CLOTH 2 + BEAST 1 + LUST 1 + WEAPON 1 |
| 污秽果 | TAINT 2 + POISON 1 |
| 污秽煤 | TAINT 2 + ENTROPY 2 |
| 污秽树叶 | TAINT 1 + PLANT 1 |
| 污秽原木 | TAINT 1 + TREE 3 |
| 污秽木板 | TREE 1 |
| 污秽石(仅 meta 1) | EARTH 1 |
来源:DarkAspects.java:268-326。
生物标签
addAspects() 遍历 ThaumcraftApi.scanEntities 追加元素(:216-265):
| 生物 | 追加元素 |
|---|---|
| BrainyZombie | WRATH 3 |
| GiantBrainyZombie | WRATH 4 |
| Firebat | WRATH 1 + NETHER 2 |
| Skeleton(有 NBT) | NETHER 3 |
| Creeper(无 NBT) | WRATH 2 |
| Creeper(有 NBT) | WRATH 4 |
| WitherBoss | NETHER 7 + WRATH 7 |
| Ozelot | SLOTH 3 |
| Enderman | PRIDE 4 + ENVY 4 |
| Ghast | NETHER 3 + WRATH 3 |
| PigZombie | WRATH 6 |
| EnderDragon | PRIDE 10 |
Taintacle(!noLust) |
LUST 3 |
| Pig | GLUTTONY 3 |
| LavaSlime | NETHER 1 |
TwilightForest.Forest Bunny(!noLust) |
LUST 5 |
| TwilightForest.Mini Ghast | NETHER 1 + WRATH 1 |
| TwilightForest.Tower Boss | NETHER 10 + WRATH 10 |
| TwilightForest.Tower Ghast | NETHER 3 + WRATH 3 |
| TwilightForest.Twilight Lich | PRIDE 10 |
TwilightForest.Pinch Beetle(!noLust) |
LUST 3 |
| TwilightForest.King Spider | PRIDE 4 |
| witchery.demon | NETHER 8 |
[!NOTE] 另有
Config.java:325-345的spawnerMobs映射表(14 个原版生物 → 精华类型),把刷怪笼生成物关联到精华,其中"Ghast" → DarkAspects.NETHER(:333)。它作用于刷怪笼而非普通生成,与上面的scanEntities追加是两套独立机制。
研究触发
只有 3 条研究用 setAspectTriggers 把本 mod 元素作为研究解锁条件(ForbiddenResearch.java):
| 研究 | 触发元素 | 源码 |
|---|---|---|
HELLFIRE |
DarkAspects.NETHER |
:187-188 |
SUBCOLLAR |
DarkAspects.LUST |
:212 |
ARCANECAKE |
DarkAspects.GLUTTONY |
:251 |
其余 WRATH / ENVY / PRIDE / SLOTH 4 个元素没有任何研究以其为解锁条件——它们只能通过上面的对象标签与生物标签被动获得。
源码缺陷
- 7 个元素的第 5 个构造参数只有两个取值:
LUST/PRIDE/GLUTTONY/ENVY传入 1,NETHER/SLOTH/WRATH传入 771(DarkAspects.java:30-73)。无法核实:该参数在 Thaumcraft
Aspect构造器中的确切语义(是否为元素 ID、重复值如何处理)无法从本仓库确认。已检查/Users/evlos/a/mirror/下仅有ThaumcraftMobAspects,无 Thaumcraft 本体源码(find /Users/evlos/a/mirror/Thaumcraft* -path '*api/aspects/Aspect.java'无结果)。此处仅记录源码字面值,不推断其运行时后果。 LUST关闭后元素数与引用不对齐:Config.noLust = true时LUST字段保持null(:20声明、:29-36整段跳过),但addAspects()中 6 处LUST引用必须靠if (!Config.noLust)逐个包住(:205、:243、:249、:259、:280),漏掉任一处会直接 NPE。- 注释掉的标签仍有部分保留:
oreNetherQuartz(:92-95)、enderPearl(:126-128)、bed的追加式写法(:166-167)、comparator的registerComplexObjectTag旧 API(:194-199)、eyeOfEnder的registerComplexObjectTag(:175-176)均已注释但保留在源码中。
相关条目
- 研究 —— 54 条研究的 4 个来源拆分;
HELLFIRE/SUBCOLLAR/ARCANECAKE三条的触发元素见上表 - 通用物品 —— 致命碎片 7 种 meta 与 FMResource 2 种 meta 的元素来源
- 污秽树 —— 污秽原木 / 木板 / 树叶的元素标签
- 配置项 ——
No Lust开关与其余spawnerMobs映射 - WandOverlord —— 唯一直接消费
HELLFIRE研究的研究机制