Skip to content

Instantly share code, notes, and snippets.

@makamys
Last active November 20, 2021 21:53
Show Gist options
  • Save makamys/1945b1a448c90b8bbeda775c86b3d3be to your computer and use it in GitHub Desktop.
Save makamys/1945b1a448c90b8bbeda775c86b3d3be to your computer and use it in GitHub Desktop.
import sys
from pathlib import Path
import csv
if len(sys.argv) != 2:
sys.exit(r'''Usage: {} MCP_CONF_DIR
Dumps every method name in an MCP mapping, in a format ready to use in Mixin
annotations.
MCP_CONF_DIR is the MCP directory, containing packaged.srg and methods.srg.
Example: {} "C:\Users\<You>\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1614-1.7.10\unpacked\conf"'''.format(sys.argv[0], sys.argv[0]))
confDir = Path(sys.argv[1])
packaged = [x.strip().split(' ') for x in open(confDir / "packaged.srg")]
methods = list(csv.reader(open(confDir / "methods.csv"), delimiter=',', quotechar='"'))
srg2deobf_method = dict([x[:2] for x in methods])
for packagedElem in packaged:
if packagedElem[0] == "MD:":
type, obfFull, obfDesc, srgFull, srgDesc = packagedElem
lastSlash = srgFull.rindex('/')
srgMethod = srgFull[(lastSlash + 1):]
print("L{};{}{}".format(srgFull[:lastSlash], srg2deobf_method.get(srgMethod) or srgMethod, srgDesc))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment