写在前面
剧透警告!!!
本教程已过时!!!
本教程不会更新新版的解密,请自行探索!!!
本教程使用了大量非常规方法——包括但不限于反编译、资源分析等手段
如果你对此介意/不满,或是希望通过自己的努力解谜,请关闭本页面
本人使用此方法纯属个人兴趣,本教程只作为经验分享
本教程经模组作者许可发布
省流/快速解谜
(这是我写完整篇教程才发现的……就放开头吧)
首先在游戏中进入你的存档,然后用记事本(或者类似工具)打开 /<版本文件夹>/logs/debug.log 这个文件
然后搜索“RevelationFix”,如果不出意外,你就能看到以下内容:
这就是这个存档的谜题物品了估计是baka程序员忘记删掉调试用的输出了
准备工作
首先,我们需要以下工具:
一个可用的Minecraft Forge 1.20.1游戏实例一个可以启动的游戏:无需多言
jadx-gui:用于反编译模组文件
vscode、forge mdk(可选):避免频繁查询映射(见谜题仪式破解-详细过程)
作为一个开源模组,为什么不直接查其码而使用反编译呢?因为我懒
因为启示录的源码分散在两个不同平台的仓库中,查询起来十分不便说白了还是懒
本教程得到了模组作者的许可,所以会放出反编译后的结果(见文末-轶事一节)
谜题物品破解
详细过程
用jadx打开启示录的jar文件,十分顺利地加载了出来
熟悉mc开发的话,大概会想到打开本模组的配方数据看看——假设你这么做了,然后一眼就看到了这个有点引人注目的 the_end_ritual.json (箭头所指),并打开了它——
emm,输出物品是 goety_revelation:halo_of_the_end ,也就是终末之环,显然是这次解谜的核心——看来我们找对地方了
再一看,作为材料的输入也很令人在意:“puzzle”有“谜题”的意思,多半就是终末之谜的对应物品了
使用jadx的搜索功能,找到 com.mega.revelationfix.common.init.GRItems 这个类,随即就能看到这些tag在代码中的定义:
以“THE_END_PUZZLES4”为搜索关键词继续搜索,发现结果只有不到10个,一个个看过去——
在 com.mega.revelationfix.common.event.ClientEventHandler.addTECraftingTooltip 中,我们看到:
出现了又一个值得在意我想不出别的词了的类:com.mega.revelationfix.common.odamane.common.TheEndPuzzleItems (红框所指)
点开,然后我们看到:
可以开香槟了,我们找到了所有的谜题物品的ID——
等一下!我怎么知道哪个谜面对应哪个物品?
不用担心,回到代码中看看,发现蓝框所指的地方就是谜面的本地化键(不知道是啥的去这里看看),只要我们搜索……
怎么啥也没有?!
作为对比,这是对晋升之环描述的搜索:
可以看到是有assets中的搜索结果的……不应该啊,语言文件里没有的话,游戏内又是怎么显示文本的?
不要着急,回头看前面的代码,我们会在部分代码的开头看到jadx给我们的一条提示:
可以看到,这段代码来着模组jar文件中的一个jar文件——有点绕?理解为这模组内置了另一个模组就行
(这是forge的jar-in-jar技术,详情见此)
显然缺少的语言文件应该来自这个内置的模组,而jadx并没有扫到这个内置的模组
解决办法很简单,把这个内置模组拉出来单独反编译就行——jar文件的本质其实就是个压缩包,随便哪个压缩软件都能解压
再次查找,我们果然找到了想要的东西:
接下来的事情很简单,把它们和代码中的物品ID一一对应起来就行了
结果
序号
谜面
物品ID
物品名称
0
未曾绽放的末路之花
minecraft:chorus_flower
紫颂花 (Chorus Flower) - [MC] 我的世界原版 (Minecraft)
1
呼唤往昔之号
goety:blazing_horn
炽烈号角 (Blazing Horn) - 诡厄巫法 (Goety)
2
幽暗处摇曳的暗焰
goety:shadow_essence
暗影精粹 (Shadow Of Essence) - 诡厄巫法 (Goety)
3
往昔之事的残败记叙
goety:withered_manuscript
凋零手稿 (Withered Manuscript) - 诡厄巫法 (Goety)
4
远古灭绝之生灵
minecraft:sniffer_egg
嗅探兽蛋 (Sniffer Egg) - [MC] 我的世界原版 (Minecraft)
5
诓骗死神之物
minecraft:totem_of_undying
不死图腾 (Totem of Undying) - [MC] 我的世界原版 (Minecraft)
6
炼金的终点
goety:philosophers_stone
贤者之石 (Philosopher's Stone) - 诡厄巫法 (Goety)
7
空岛之基
minecraft:end_stone
末地石 (End Stone) - [MC] 我的世界原版 (Minecraft)
8
世界之暗的伊始
goety:night_beacon
暗夜信标 (Night Beacon) - 诡厄巫法 (Goety)
9
墓穴主人的沉眠之所
goety:pithos
陶瓷坛 (Pithos) - 诡厄巫法 (Goety)
10
幽深黑暗的回忆
minecraft:echo_shard
回响碎片 (Echo Shard) - [MC] 我的世界原版 (Minecraft)
11
生者安息之所
minecraft:bed
床 (Bed) - [MC] 我的世界原版 (Minecraft)
12
恒世的不死不灭
goety:arca
灵魂方舟 (Arca) - 诡厄巫法 (Goety)
13
生机本源的连接者
goety:animation_core
活力核心 (Animation Core) - 诡厄巫法 (Goety)
14
幽暗之中的明光
minecraft:glow_lichen
发光地衣 (Glow Lichen) - [MC] 我的世界原版 (Minecraft)
15
忤逆指令的力量
goety:totem_of_souls
灵魂图腾 (Totem of Souls) - 诡厄巫法 (Goety)
16
归家之引
minecraft:beacon
信标 (Beacon) - [MC] 我的世界原版 (Minecraft)
17
暗影猎手之魂
goety:howling_soul
咆哮之魂 (Howling Soul) - 诡厄巫法 (Goety)
18
先古回音的碎片
goety:forbidden_piece
禁书碎片 (Forbidden Piece) - 诡厄巫法 (Goety)
19
终末永恒之伴
minecraft:end_crystal
末影水晶 (End Crystal) - [MC] 我的世界原版 (Minecraft)
20
最初挚友的心爱之物
minecraft:bone
骨头 (Bone) - [MC] 我的世界原版 (Minecraft)
21
守护者的遗志
minecraft:iron_ingot
铁锭 (IronIngot) - [MC] 我的世界原版 (Minecraft)
22
守护者的忠情
minecraft:red_flower
虞美人 (Poppy) - [MC] 我的世界原版 (Minecraft)
23
群死排衙累白骨,幽邃晦暝止鬼哭
goety:shriek_obelisk
尖啸方尖碑 (Shrieking Obelisk) - 诡厄巫法 (Goety)
24
创生塑魂烦抟土,深影为始束身无
goety:animator
赋魂器 (Animator) - 诡厄巫法 (Goety)
25
黑暗魔法的起源
goety:ectoplasm
灵质 (Ectoplasm) - 诡厄巫法 (Goety)
26
深埋于高山之下的奇异珍宝
minecraft:deepslate_emerald_ore
深层绿宝石矿石 (Deepslate Emerald Ore) - [MC] 我的世界原版 (Minecraft)
27
层嶂存于虚无,吾将开辟道路
goety:tunnel_focus
隧穿聚晶 (Tunnel Focus) - 诡厄巫法 (Goety)
28
无所不知,无所不说
goety:black_book
黑暗之书 (Black Book) - 诡厄巫法 (Goety)
29
以身紫烛引世久,颂炎驱火净尘沙
goety:infernal_tome
炼狱魔典 (Infernal Tome) - 诡厄巫法 (Goety)
30
迷于尘世者的忿怒
goety:raging_matter
愤怒之质 (Raging Matter) - 诡厄巫法 (Goety)
31
荒芜生机的遗迹
minecraft:deadbush
枯萎的灌木 (Dead Bush) - [MC] 我的世界原版 (Minecraft)
32
追随死亡
minecraft:recovery_compass
追溯指针 (Recovery Compass) - [MC] 我的世界原版 (Minecraft)
33
破败的神性冠冕
irons_spellbooks:tarnished_helmet
黯淡皇冠 (Tarnished Crown) - [ISS] Iron的法术与魔法书 (Iron's Spells 'n Spellbooks)
34
神明的黄金冠冕
irons_spellbooks:gold_crown
Iron的皇冠 (Iron's Crown) - [ISS] Iron的法术与魔法书 (Iron's Spells 'n Spellbooks)
35
匿踪商队的埋没之物
irons_spellbooks:permafrost_shard
永冻碎片 (Permafrost Shard) - [ISS] Iron的法术与魔法书 (Iron's Spells 'n Spellbooks)
36
不可视之物
irons_spellbooks:invisibility_ring
隐形之戒 (Ring of Invisibility) - [ISS] Iron的法术与魔法书 (Iron's Spells 'n Spellbooks)
37
不见光明的遗忘金属
irons_spellbooks:arcane_debris
奥术残骸 (Arcane Debris) - [ISS] Iron的法术与魔法书 (Iron's Spells 'n Spellbooks)
38
深埋黑暗的不语之书
irons_spellbooks:ruined_book
残破的书 (Ruined Book) - [ISS] Iron的法术与魔法书 (Iron's Spells 'n Spellbooks)
39
炽焰魔神的固化力量
cataclysm:ignitium_block
腾炎块 (Ignitium Block) - 灾变 (L_Ender 's Cataclysm)
40
诅咒守卫的惨白头颅
cataclysm:aptrgangr_head
武弁的头 (Aptrgangr Head) - 灾变 (L_Ender 's Cataclysm)
41
终界堡垒的明灯
cataclysm:void_lantern_block
虚空灯 (Void Lantern Block) - 灾变 (L_Ender 's Cataclysm)
42
听闻壁外苍天语
alexsmobs:bear_dust
熊尘 (Bear Dust) - [AM] Alex 的生物 (Alex's Mobs)
43
远古天灾的媒介
alexscaves:ominous_catalyst
灾厄触媒 (Ominous Catalyst) - Alex 的洞穴 (Alex's Caves)
44
荒野挑战之证
ars_nouveau:wilden_tribute
荒野供物 (Wilden Tribute) - 新生魔艺 (Ars Nouveau)
45
寂静之冰下的孤独遗物
aquamirae:rune_of_the_storm
风暴符文 (Rune Of The Storm) - 海灵物语 (Aquamirae)
46
世间谬误集所,永无止境的亵渎之书
enigmaticlegacy:the_infinitum
无止之言 (The Infinitum) - 神秘遗物 (Enigmatic Legacy)
47
恃其无尽之力,凌驾死亡之上
enigmaticlegacy:the_cube
非欧立方 (Non-Euclidean Cube) - 神秘遗物 (Enigmatic Legacy)
48
逆行时间的谎言
enigmaticlegacy:cosmic_cake
永恒蛋糕 (The Eternal Cake) - 神秘遗物 (Enigmatic Legacy)
49
铸就饕餮的恶意
enigmaticlegacy:evil_ingot
极恶锭 (Nefarious Ingot) - 神秘遗物 (Enigmatic Legacy)
50
刻下诅咒的匕首
enigmaticaddons.evil_dagger
刻咒者 (The Curse Carver) - 神秘遗物扩展 (Enigmatic Addons)
51
亘古未来之树
twilightforest:twilight_sapling
(疑为错误,这是低版本暮色树苗的ID)
52
巨人国的通路
twilightforest:magic_beans
魔豆 (Magic Beans) - [TF] 暮色森林 (The Twilight Forest)
53
奔雷淬其脆如酥,琼液如玉甘似梦
iceandfire:cannoli
奶油甜馅煎饼卷 (Cannoli) - [IAF] 冰火传说 (Ice and Fire)
54
传说巨兽蓬勃的能量之源
jerotesvillage:bright_land_heart
明路之心 (Bright Land Heart) - Jerotes村庄 (Jerotes Village)
55
你的噩梦,关乎你所爱之人的死亡。你醒来,直面愈加疯狂的噩梦。
fantasy_ending:uom_spawn_egg
召唤 「终焉秩序维系者」 (Spawn 「The Ultimate Order Manager」) - [FE] 梦幻终焉 (FantasyEnding)
56
虚空之中的末影之眼
l2complements:void_eye
虚空之眼 (Void Eye) - 莱特兰-扩充 (L2 Complements)
57
深渊死灵之王的无上冠冕
alexsmobs:novelty_hat
汽水帽 (Novelty Hat) - [AM] Alex 的生物 (Alex's Mobs)
58
渊海大镖客之枪
alexscaves:game_controller
游戏手柄 (Game Controller) - Alex 的洞穴 (Alex's Caves)
59
凡人的创世权柄
create:schematicannon
蓝图加农炮 (Schematicannon) - 机械动力 (Create)
谜题仪式破解
详细过程
回到我们发现的那个配方文件,里面还有一个Tag材料:revelationfix:te_craft
在内置的jar文件中可以发现它指向ID为 goety_revelation:random_display 的物品
再次搜索这物品,找到如下配方文件:
材料仍然是谜题物品,没什么好说的……但如果你试图在游戏内直接合成,你只会得到一个提示:无效的仪式
回到配方文件,框出的地方代表了这个配方所需的仪式
再度在代码中搜索,找到 com.mega.revelationfix.common.ritual.ModRitualTypes ,这里有两种仪式:
一种是我们最上面找到的终末之环所需的仪式,另一种是我们刚刚找到的这个配方的仪式
继续搜索,来到 com.mega.revelationfix.mixin.goety.ritual.RitualRequirementsMixin.revelationfix$getStructuresTheEnd ,我们看到:
不难看出来,这里是在合成时检查是否满足仪式要求,我们上面找到的两种仪式都在这里……
等会儿,虽然我看得懂代码,但是这些 f_50259_ 之类的是什么玩意?
事实上,这些是Searge名——下面这张来自SpongeDocs的截图说明了这是什么:
所以,这就是为什么我在前面提到可以使用vscode、forge mdk这两个工具了——尽管有不少工具可以查询Searge名对应的MCP名,但是只要导入到开发环境,开发工具就会自动帮我们翻译成MCP名,就像下面这样(然而是真正源码的图):
嗯,这下看懂了
值得在意的是, the_end 仪式中需要一个满足特定要求的箱子,而检测箱子的方法如下:
最后整理一下,我们就能得到两种仪式的具体要求了
结果
物品
仪式ID
仪式需求
goety_revelation:random_display
te_magic
周边方块提供的附魔等级大于 16
讲台 × 1(必须非空)
附魔台 × 1
终末之环(goety_revelation:halo_of_the_end)
the_end
末地烛 × 4
紫珀块 × 8
末地石砖 × 16
末地石 × 4800(多少?!)
箱子 × 1 (内含:
金锭 × 1
铁锭 × 1
钻石 × 1
甜菜种子 × 1
鞍 × 1
绿宝石 × 1
铁马铠、金马铠、钻石马铠 其中至少一件
)
必须位于末地
顺便一提,终末之环还需要献祭一个末影人,别忘了
作业
如果你真的按照上面的内容去做终末之环,会发现提示物品缺失
事实上,启动 the_end 仪式还有一个隐藏的条件因为某人忘记在游戏里尝试合成所以没发现
这个条件就作为这篇教程的作业吧(笑
轶事
最初这篇教程在审核时被站长拦下,然后模组作者来找我,于是我就撤回了这篇教程
然而不到两天时间……不想说了,自己看百科评论区吧
总之,现在这篇教程是经过作者同意,在百科发布了
下面几张图是启示录内测群的截图,也作为我对此事的评价
总结
比起解谜的结果,过程更值得令我们去体会
希望你也能在这次解谜中得到自己想要的东西——是什么?我不知道,只有你自己知道,不是吗?