
Mojang漏洞追踪器(亦称 Mojira)是一个面向玩家的Minecraft官方漏洞反馈网站。与反馈站点类似,其主要由社区玩家来管理。漏洞追踪器的网址为bugs.mojang.com ——Minecraft wiki
Minecraft 一向以 bug 众多而闻名,因此,Mojang 使用 Jira 来管理数不胜数的漏洞,同时给玩家提供了一个报告游戏bug和漏洞的平台。
也是因此,Mojira 上汇集了形形色色的 bug,其中许多 bug 并不具有价值——那么,如何从浩如烟海的 bug 报告中找到我们关心的 bug 呢?

相信大家都是从 av 号时代走过来的吧(笑)?B站曾经使用 av 号来管理投稿视频,从第一个视频 av1 开始,按照投稿顺序依次排列。
类似的,Mojira 也按照报告时间对 bug 报告进行编号管理,对于 Java 版来说,第一个报告的 bug 是 MC-1。秉承B站优良的考古传统,大家可以打开这个链接查看:https://bugs.mojang.com/browse/MC-1

Mojira中Java版Minecraft最古老的bug——MC-1
这就是一个典型的 bug 报告界面了。如果你没有选择语言的话,可能会看到一个满是英文的界面。你可以通过注册一个 Jira 账号来选择语言。
我们来看一看其中有用的信息:

标题
标题会简明扼要地描述bug现象。

MC-1的标题,当僵尸尝试破门时被打断,破坏门的裂纹会一直保持

详情

MC-1的详情部分
类型:故障,说明这个漏洞追踪器里追踪的是一个故障(bug)。暂时还没有看到其它的类型。
影响版本:这里详细记载了哪些版本的 Minecraft 受到这个 bug 的影响。这一项大概是手动添加的,所以有时会漏掉几个版本。某些远古bug会有超多的影响版本,比如 https://bugs.mojang.com/browse/MC-1。

MC-14,影响版本囊括从远古的1.4.1到最近的1.16rc1
标签:给 bug 报告的简单分类,比如 sound(声音),redstone(红石),等等。
环境:bug 报告者运行 Minecraft 的环境,通常不用关心。
Confirmation Status(确认状态):并不是所有 bug 报告都是真实的 bug,有些 bug 报告无法复现,有些 bug 报告别人已经提交过了,有些 bug 报告刚刚才提交,开发人员还没来得及确认。这些 bug 报告的 Confirmation Status 都是 Unconfirmed(未确认)。(不太明白为啥MC-1 这个 bug 还在未确认状态,或许 MC-1 修复好后 Mojira 才有 Confirmation Status 的功能?)对于确实是 Minecraft 中的游戏 bug,或者报告的 bug 是游戏刻意为之的特性,这里会显示Confirmed(已确认)。
状态:这里会显示这个漏洞目前的状态。一个漏洞有这些状态:开放(Open),关闭(Closed),重新打开(Reopen),已解决(Resolved)。一个漏洞刚刚提交时会处于“开放”状态;被解决、认定为重复提交,或者无效的提交会被“关闭”或者“已解决”;不同意开发者的处置方式,或者一个已经修复的bug又复发了,则会处于“重新打开”状态。
解决结果:显示开发者怎么解决这个 bug 的。通常解决结果有:按照预期运行(Works as intended,也就是常说的WAI),已修复(Fixed),重复提交(Duplicate),无效(Invalid),不会修复(won't fix)。
修复的版本:如果 bug 被修复了,这里会显示是在哪个版本修复的。

描述和附件
这一部分是重头戏,描述了这个bug的现象,以及复现方法。

MC-1的描述和附件
可以看到报告者提供了这些描述:僵尸破门时,门上“破坏”的裂纹会一直保持下来,哪怕门被打掉了。提交者希望门的裂纹在僵尸停止破门后消失(就像玩家撸方块撸到一半停下来时裂纹会消失一样),同时也提供了复现方法:让僵尸破门,杀掉僵尸,打掉门,破坏的裂纹还留在空气中,看起来非常不正常。
附件是一张截图,截下了这有趣的一幕。

问题链接

MC-1的问题链接
其实我认为这里翻译成“相关问题链接”更合适一些……
可以看到 MC-1 被https://bugs.mojang.com/browse/MC-185597复制了,打开 MC-185597 一看,原来这个远古 bug 在 1.15.2 又复活了,bugjang 果然名不虚传。顺便同情一下那些可怜的程序猿,维护这样一座远古屎山,要不出 bug 的同时还要新功能,真是太难了。
同时还能看到这个 bug 被重复提交了很多次,MC-7584,MC-9796,等等,都是在重复提交同一个 bug。为了减轻管理漏洞的压力,这些重复提交的漏洞都会被标记到 MC-1 来统一管理。
这一部分的链接在我们查找漏洞时非常有用,通过这部分链接在相关问题间跳转,可以快速找到我们需要的页面。

活动日志

MC-1的活动日志。可以看到Jeb
活动日志部分记录了这个 bug 的历程,包括状态的更变,相关链接的增加,以及玩家、开发者的评论。刚刚提交时的问题描述和标题可能并不准确,因此可能会被修改,这里会留下修改的历史。
注意这里是很严肃的讨论 bug 及其修复方法的地方,不是类似知乎、微博等带有娱乐性质的评论区,不要在这里发送与解决问题无关的评论。珍惜自己发言的权利,尊重社区规则。

人员与日期

MC-1的人员与日期
从日期可以看出,MC-1 是在 2012 年 10 月 23 日提交的,是比不上B站的 av2 的(笑)。
表决:如果你有 Jira 账号,可以在这里给你认为需要修复的 bug 投票(翻译成“表决”真是让人摸不着头脑)
点击“开始关注这个问题”,你就会在这个问题发生变动时收到 Jira 发给你的邮件,帮助你实时了解 bug 的最新动态。

Jira的更新邮件

实战 Mojira
下面我们来实战一下吧!
首先,我们需要发现 Minecraft 中的一个游戏bug。作为一个以“特性”著称的游戏,找一个还不是轻而易举,比如我在玩 1.13.2 时,就发现我的附魔三叉戟有点 bug:

1.13.2,附魔之后
众所周知,附魔后的物品,表面会出现附魔光泽,而三叉戟附魔后,却还是原样,并没有出现附魔的光泽。我们来 Mojira 上看看有没有人已经提交了 bug 了。我们打开 Mojira 主页:
https://bugs.mojang.com

Mojira主页
看起来这是个登录界面,不过我们完全不用登录,点击右上角的“Search”就能开始搜索了。
几乎所有的漏洞都是用英文提交的,因此我们需要用英文搜索。
现在,我们需要提取问题的关键词:“三叉戟在附魔后没有出现附魔光泽”,提取出这些关键词:“三叉戟”、“附魔”、“附魔光泽”。三叉戟的英文很简单,“trident”;附魔,则是“enchant”。然而“附魔光泽”怎么翻译啊?没关系,我们先用前两个关键词试一试:

看起来没有哪个标题跟附魔光泽有关啊……初战不利,但我们不要放弃,这里只是把最可能的几个 bug 报告列了出来,点一下下面的 View all matching issues,查看所有匹配的bug报告。

查看所有匹配的问题
随后我们会看到一列长长的列表

其中我们需要注意的是,圈起来的 MCPE-66823 是 PE 版的漏洞报告,作为 Java 版的玩家我们只需要关心 Java 版 MC 的漏洞,因此我们忽略掉 MCPE 开头的漏洞,专心看 MC 开头的漏洞。
随后我们就会发现几个非常切题的漏洞,“Glowing effect”,闪烁效果,“enchantment overlay”,附魔饰面,我们点进https://bugs.mojang.com/browse/MC-134475看看:

附魔三叉戟没有闪烁光泽
我们会发现这是一个重复提交的 bug,因此我们应该找到原始提交的页面,这里我们看问题链接,会发现这是 https://bugs.mojang.com/browse/MC-125360 的重复提交。我们打开 MC-125360,就可以看到它的修复进展:

MC-125360
可以看到,这样一个明显影响普通玩家视觉效果的 bug,Mojang 在 19w39a(1.15的一个快照版)才修复,也真是够慢的了。
打开 1.15.2,会发现现在附魔的三叉戟终于能正常展现出它的附魔光泽了:

1.15.2,闪烁着附魔光泽的三叉戟
更复杂的挑战
许多bug也许并不容易描述,因而难以搜索。比如我们来看看Fallen_Breath发现的这个bug:

Fallen_Breath发现的迷惑bug
这怎么描述呢?也许用“中继器”、“故障”、“区块卸载”作为关键词来搜索?我们来试一试:

使用repeater glitch chunk load作为关键词搜索
看起来并没有想要的结果……
当然,这个bug确实非常有迷惑性,因为活塞瞬推、中继器发生奇怪的延时,只是这个bug的表象,真正的bug其实是这个:https://bugs.mojang.com/browse/MC-172307

MC-172307
MC-172307,区块加载时所有计划刻事件会在第一个游戏刻立即执行。中继器的亮起、熄灭是计划刻事件,所以会受到这个bug的影响。
@Fallen_Breath认为这是https://bugs.mojang.com/browse/MC-169919导致的,不过我认为从根本上还是MC-172307导致的,MC-169919也只是表象。
这个神奇的bug成功迷惑了一众大佬,即便是RedCMD一开始也没能认清本质,认为是所有奇数计划刻的时间会在区块加载时+1游戏刻执行。
那么这种神奇的bug该怎么找呢?下面我向大家墙裂推荐:SciCraft Discord的technical-bugs频道
https://discord.gg/SciCraft

SciCraft的一众大佬会找到对生电非常有价值的bug,并在这个频道向大家分享。
这里举几个栗子:

非常生草的bug,矿车可以被旁观者模式的玩家停下来

僵尸增援可以在地狱亮度高于9的地方刷出

从1.13开始,更新铁轨比原来卡3~4倍
对于设计大型机器,这些bug报告可谓珍贵。关注这些有用的bug,也可以在bug修复后第一时间利用新特性设计机器,比如,https://bugs.mojang.com/browse/MC-153787(僵尸增援可以刷在玻璃上)在20w22a修复后,造大叔那种手砍猪人塔就能用玻璃防僵尸增援了。
发掘有价值的bug:https://bugs.mojang.com/browse/MC-164281
前段时间,光照更新抑制开启了生电技术新的研究方向。


然而,最令人懊悔的是,自己那迟钝的神经,以及对问题思考的浅薄:

这是无糖雪梨的一个投稿视频,视频中,1.14 各种光照 bug 真的是屡见不鲜。然而,我就真把它当作娱乐视频来看了(虽然它本来就是),丝毫没有意识到——既然岩浆旁一直没有亮度,既然火把亮着亮着就突然自己灭掉了,那么这就说明——玩家附近的随机光照更新已经不复存在了,如果能深入发掘并利用 1.14 的光照更新的“特性”,完全可以做出能稳定存在亮度为0的地狱门——而这样的研究并不复杂,只需要在 Mojira 上找到 https://bugs.mojang.com/browse/MC-164281,就能找到完整的复现方法,以及用处——Monsters spawning in lit up areas

MC-164281
而看看活动日志,就能看到,早在 2019 年 10 月 22 日,就已经有完整详细的复现、保持光照更新抑制的办法了

可惜世上没有“如果”,只能怪自己太迟钝,缺少联系思考的能力,让vktec摘得了光照更新抑制技术的桂冠。
所以我会说,Mojang 的漏洞追踪器真是亟待挖掘的宝藏啊… …

最后,关于活塞、投掷器与发射器的 bug
许多人可能会发现两种活塞、投掷器与发射器非常容易出 bug,请大家在搜索相关的 bug 时,考虑一下先看看 https://bugs.mojang.com/browse/MC-108(qc激活)与https://bugs.mojang.com/browse/MC-11193(红石线乱序更新)这两个bug,因为绝大部分与活塞、投掷器、发射器相关的 bug 都是 MC-108,或者两者一起作用,进而导致的bug。

感谢观看!

您可以自由地: 共享 — 在任何媒介以任何形式复制、发行本作品 演绎 — 修改、转换或以本作品为基础进行创作 惟须遵守下列条件: 署名、非商业性使用、相同方式共享 https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh