我使用 Forge 反编译了 Minecraft 1.8。在源代码中,我看到添加的 Forge 方法和修改都已正确注释。但是,Minecraft 的原版代码根本没有注释。我知道 MCP 用于反编译 Minecraft,但我认为它在所有方法中添加了 javadoc 注释。我想知道是否有办法找到 javadoc 并将其附加到我的项目中。
2 回答
编译后的字节码中根本不存在注释。因此,反编译器能做的最好的事情就是根据方法签名自动生成一个无用的 Javadoc,但大多数人甚至不会打扰,因为这样的 Javadoc 显然是无用的。
编辑:我查看了 MCP,显然,在反编译之后,它应用了一堆手动选择的重命名,并且它们有描述。
例如,一个条目fields.csv
说
field_100013_f,isPotionDurationMax,0,"True if potion effect duration is at maximum, false otherwise."
因此,据推测,这意味着它将重命名field_100013_f
并isPotionDurationMax
生成带有描述“如果药水效果持续时间为最大则为真,否则为假”的评论。所以在这种情况下,它不会神奇地恢复原始评论和名称,因为那是不可能的。相反,它显示已作为 MCP 的一部分提供的用户选择的名称和评论。
当然,由于这依赖于手动提供的信息,它只会修复人们提供了描述的方法和字段。
MCP 中还有一个选项可以完全删除注释。我不确定何时会发生这种情况,但大概是为了让补丁更可靠地应用。您(即 Forge)可能一直在使用此选项。
我找到了解决方案。MCP 是一个正在进行的项目,团队还没有完全找到所有的领域和方法,但是他们每天晚上都会发布映射和 CSV(Antimony 所指的)。使用 Forge 设置工作区时,我在 build.gradle 中的“minecraft”下指定:
mappings = "snapshot_20141224" // originally some 'nodoc' version :(
这指定了我想粘贴在我的 minecraft 源中的 MCP 映射的版本。当我再次反编译时,MCP 获取了正确的映射,瞧,之前未注释的方法随后被注释了。
您可以在此处找到所有映射快照和 CSV 导出的列表:http: //export.mcpbot.bspk.rs/