末影龙崩服原理详解源码分析 #1 清祭坛法【1.9 - 1.14.4】-一次就好漫画

注:关于节点放置法的分析专栏要等段时间再出,因为涉及到龙的寻路需要实时debug亿会,等我有时间先把主世界冻龙术的教程视频出了再说罢(笑)。专栏里涉及到的代码由MCP-Reborn及fabric-yarn生成。

注1:该崩服法严格来讲应该叫"冻服法",服务器只不过是卡住了。

注2:该崩服法已在19w36a(1.15的一个快照)版本中修复。链接:https://bugs.mojang.com/browse/MC-158677

一、起因

起因是我在B站上搜索看有没有人发现了其他的末影龙崩服法,接着看到了这个视频:

生电服务器迫害可怜的末影龙,竟只为确定黑曜石柱位置! 终遭崩服之"报应"[doge]

1.14.4?起初我以为是龙卡在了起飞态且麻将暗改过龙的寻路(例如说1.9-1.10就无法使用节点法崩服)

于是我跑了个本地1.14.4服务器,将主岛清光后在祭坛不远处放了个生存模式下的假人。

Bot:又迫害我?崩服重现成功二、翻代码

我换用MCP-Reborn跑1.14.4的服务端来重新崩服,得到的崩溃报告如下:

反混淆后崩服起因简介明了

FlamingSittingPhase是啥?当然是龙在祭坛吐龙息时调用到的类。

让我们直奔FlamingSittingPhase.serverTick方法:

//lmao

乍一看这一块代码是不是没毛病?无非就是在龙该吐龙息时,通过某些计算算出药水云该吐在哪个坐标。

要不咱打几个breakpoints实时debug下?

y=-220641790三、结论

游戏先会通过计算算出龙头前面某处方块的xyz坐标(通常是x=aaa, y=67, z=bbb)

随后,游戏会开始往下找最高的非空气方块生成龙息

由于该xz坐标上的方块全是空气,游戏就会卡在这一直循环找方块,导致服务器整个卡住

结果watchdog发现1tick花了60s强行关闭服务器

英文带语病版解释

四、其他的话

我并不是第一个翻代码找清祭坛法崩服原因的人,第一个翻代码的人似乎是智乃,并且也是他汇报给了麻将

的确是本人

我此刻的表情不亚于机器被人抢先发概念早被人确定轮子已经被造过发现的零日漏洞被修刚建完初代更新跳略器就有压缩版守望2的堡垒被移除

谈到守望2的堡垒,它的无限炮弹bug和这个清祭坛法崩服也有点类似,都没有加变量限制,如图:

卡-1?轻轻松松!

更详细的解释可见Marblr的视频:【中字】为什么堡垒会发生无限火炮的大招

如专栏开头的注释,清祭坛法崩服bug已在1.15的快照19w36a中修复,现在关于循环找最高方块放龙息的代码部分如下:

g指的是计算得出的龙身体高度(也是h原值)

这篇专栏很水(因为原理的确很简单,我不想像某些人拿到源码就把事情讲得太复杂),各位看个乐呵就好(doge)

1.9-1.14.4环境下可以崩服,也许你们可以试着用这个方法崩2b2t? idk

兔子Zzz不吃胡萝卜 明公主的茶会[35P-046MB]
2023-05-21
萌娘资源专业站点,致力于传播二次元文化,万物皆可萌
2023-05-19
【Penkarui】 D.Va [86P 327MB]
2023-02-21
目的:熟练掌握自上而下的语法分析方法,并能用程序实现。 要求:使用的文法如下:E TE’E + TE’ | εT FT’T * FT’ | εF (E) | id对于任意给定的输入串(词法记号流)进行语法分析,递归下降方法实现。要有一定的错误处理功能。即对错误能提示,并且能在一定程度上忽略尽量少的记号来进行接下来的分析。可以参考书上介绍的同步记号集合来处理。可能的出错情况:idid*id, id**id, (id+id, +id*+id ……输入串以#结尾,输出推导过程中使用到的产生式。
2022-10-17
【PingPing】 Chizuru Ichinose [52P 327MB]
2022-05-20
「Mikomi Hokina」明日香 #新世纪福音战士
2021-03-14
钢琴家与调音师
2022-09-28
【Andrasta】 Ada Wong [15P 27MB]
2023-06-14
萌娘资源专业站点,致力于传播二次元文化,万物皆可萌
2023-05-21
语子酱Rae白桃慕斯别致绝美上衣女内搭蕾丝带胸垫小吊带背心外穿
2022-10-13