查找SRG、MCP、混淆名(主要是SRG、MCP)之间的关系一直是令人头疼的事情,不过其实MCP开发包中早就提供了一个工具MCP Mapping Viewer。不过可惜的是MCP Mapping Viewer实再太不接地气,导致国内访问十分困难。所以我就建了一个小小的镜像服务器,以供国内访问,然后顺手汉化了这个工具。
镜像服务器是自建的: http://mirror.kaaass.net/mcp/
不过,由于作者贫穷的原因,目前服务器
坐标并不在大陆,所以在深夜等特殊时期可能会突然爆炸。如果你发现工具运行很久都不能加载mapping,请取消选择“使用镜像服务器”。
整个程序大致可以分为这5个部分:
使用时,首先需要点击“获取版本列表”以抓取所有mapping的版本。然后,在Mapping版本的下拉框中选择一个mapping,再点击右侧的“加载Mappings”即可读入mapping数据。Mapping数据在下载后会在本地缓存(缓存位置:用户文件夹/.cache/MCPMappingViewer/),再次访问不重新获取。
关于选择合适的Mapping,这里有个提示。镜像服务器并不会缓存所有的mapping,具体缓存情况请查看镜像服务器的页面。所以选择Mapping的时候有如下建议:
另外,由于网络原因,有时下载的mapping是不完整的,若程序检测到文件不完整,则会报错。待网络状况恢复时重试即可。
在搜索框输入后点击旁边的按钮即可,这里需要注意几点:
由于这个搜索逻辑很迷(考虑下个版本直接修改掉),故有以下搜索建议:
搜索到结果后,在类信息(3)点击一个类就能在方法信息(4)和字段信息(5)处看到相关信息了。在方法信息(4)的左侧点击一个方法,右侧就会显示方法的参数。这里要注意的是,所有类型都采用SRG描述符的形式。熟悉java Class文件的应该看得懂,看不懂建议百度,有时间我会填坑写一下。有《深度理解Java虚拟机》的可以查看6.3.5节。
示范下使用昨天的snapshot查找1.12版本下net.minecraft.client.gui.inventory.GuiContainer的类字段draggedStack。
在GitHub的 Release处 可以 下载最新版本。
如果发现程序问题,可以到 汉化版repo 或 原作者repo 处发issue(原作者处建议英语),如果发现镜像服务器有问题,请到 汉化版repo 处发issue。