Skip to content

FG Legacy#29

Draft
LexManos wants to merge 12 commits into
MinecraftForge:masterfrom
LexManos:FGLegacy
Draft

FG Legacy#29
LexManos wants to merge 12 commits into
MinecraftForge:masterfrom
LexManos:FGLegacy

Conversation

@LexManos
Copy link
Copy Markdown
Member

@LexManos LexManos commented Jun 2, 2026

Just opening this up for chat if anyone wants to.
MC 1.7.2->1.12.2 support is functional (FG 1.1->2.3)
I have my bulk tests locally updated. Will push when I push to production.

Gunna work on 1.6.4's 4 FG 1.0 builds
Then work on legacy python versions when possible.

Once thats done, bulk tests need to be done before merging.

LexManos added 7 commits May 19, 2026 15:54
Forge 1.8->1.12.2
Add 'srg' mapping channel
Refactor mappings to support non-mcpconfig based versions
Add support for version ranges in MavenTask
Add default mappings for ranged processes
Remove FGVersion dependency in MCPLegacy, make decisions purely based on Minecraft Version
@LexManos
Copy link
Copy Markdown
Member Author

LexManos commented Jun 3, 2026

FG 1.0 is now supported, which means Literally EVERY legacy gradle version is supported!
Minecraft 1.6.4 -> 1.12.2

Will add them to my bulk MDKExample tests later tonight.

Next phase is python support, but that will be in a different branch, after this one is pulled to production.

@zeng-github01

This comment was marked as duplicate.

Copy link
Copy Markdown
Collaborator

@PaintNinja PaintNinja left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please provide an example to test this, I've tried a few different combinations and they're all failing...

For all:

  1. Published this PR to maven local
  2. Grabbed the obfuscation MDKExample
  3. Changed Java version to 8
  4. Added mavenLocal() to top of repositories block
  5. Forced published maven local Mavenizer version with fgtools { configure('mavenizer') { version = ... } }

For 1.11.2:

minecraft {
    mappings channel: 'snapshot', version: '20161220'
}

dependencies {
    implementation minecraft.dependency('net.minecraftforge:forge:1.11.2-13.20.1.2588')
}

Fails with:

> Configure project :
Minecraft Mavenizer 0.5.5 by Forge Development LLC
  Output:             C:\Users\oscar\Desktop\fg7\.gradle\mavenizer\repo
  Output JSON:        C:\Users\oscar\Desktop\fg7\.gradle\mavenizer\dependencies\default.json
  Dependencies Only:  false
  Cache:              C:\Users\oscar\.gradle\caches\minecraftforge\forgegradle\mavenizer\caches
  JDK Cache:          C:\Users\oscar\.gradle\caches\minecraftforge\forgegradle\mavenizer\caches
  Offline:            false
  Cache Only:         false
  Ignore Cache:       false
  Mappings:           snapshot-20161220
  Foreign Repos:      [https://maven.minecraftforge.net/, file:/C:/Users/oscar/.m2/repository/, https://libraries.minecraft.net/]
  GradleVariantHack:  true
  Disable Gradle:     false
  Stub Jars:          false

Processing Minecraft dependency: net.minecraftforge:forge:1.11.2-13.20.1.2588
Processing Minecraft Forge (userdev): 1.11.2-13.20.1.2588
  extract[merged_at.cfg]
Mappings Zip
  srg2names[snapshot-20161220]
    Cache miss!
    java.lang.Exception: Cache miss! Stacktrace for Information Only
    	at net.minecraftforge.mcmaven.impl.Mavenizer.assertNotCacheOnly(Mavenizer.java:60)
    	at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:267)
    	at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:100)
    	at net.minecraftforge.mcmaven.impl.mappings.MCPMappings.lambda$downloadCsv$0(MCPMappings.java:83)
    	at net.minecraftforge.mcmaven.impl.util.Task$Simple.execute(Task.java:145)
    	at net.minecraftforge.mcmaven.impl.repo.Repo$PendingArtifact.get(Repo.java:243)
    	at net.minecraftforge.mcmaven.impl.MinecraftMaven.finalize(MinecraftMaven.java:392)
    	at net.minecraftforge.mcmaven.impl.MinecraftMaven.createForge(MinecraftMaven.java:224)
    	at net.minecraftforge.mcmaven.impl.MinecraftMaven.run(MinecraftMaven.java:120)
    	at net.minecraftforge.mcmaven.cli.MavenTask.run(MavenTask.java:217)
    	at net.minecraftforge.mcmaven.cli.Main.run(Main.java:70)
    	at net.minecraftforge.mcmaven.cli.Main.main(Main.java:23)
Exception in thread "main" java.lang.RuntimeException: Failed to execute task `srg2names[snapshot-20161220]`
	at net.minecraftforge.mcmaven.impl.util.Task$Simple.execute(Task.java:151)
	at net.minecraftforge.mcmaven.impl.repo.Repo$PendingArtifact.get(Repo.java:243)
	at net.minecraftforge.mcmaven.impl.MinecraftMaven.finalize(MinecraftMaven.java:392)
	at net.minecraftforge.mcmaven.impl.MinecraftMaven.createForge(MinecraftMaven.java:224)
	at net.minecraftforge.mcmaven.impl.MinecraftMaven.run(MinecraftMaven.java:120)
	at net.minecraftforge.mcmaven.cli.MavenTask.run(MavenTask.java:217)
	at net.minecraftforge.mcmaven.cli.Main.run(Main.java:70)
	at net.minecraftforge.mcmaven.cli.Main.main(Main.java:23)
Caused by: java.io.IOException: https://maven.minecraftforge.net/de/oceanlabs/mcp/mcp_snapshot/20161220/mcp_snapshot-20161220.zip
	at net.minecraftforge.util.download.DownloadUtils.downloadFile(DownloadUtils.java:98)
	at net.minecraftforge.mcmaven.impl.cache.MavenCache.downloadFile(MavenCache.java:283)
	at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:269)
	at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:100)
	at net.minecraftforge.mcmaven.impl.mappings.MCPMappings.lambda$downloadCsv$0(MCPMappings.java:83)
	at net.minecraftforge.mcmaven.impl.util.Task$Simple.execute(Task.java:145)
	... 7 more
	Suppressed: java.io.IOException: https://maven.minecraftforge.net/de/oceanlabs/mcp/mcp_snapshot/20161220/mcp_snapshot-20161220.zip
		at net.minecraftforge.util.download.DownloadUtils.downloadFile(DownloadUtils.java:98)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.downloadFile(MavenCache.java:283)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:269)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:100)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:105)
		... 9 more
	Caused by: java.io.FileNotFoundException: Returned 404: https://maven.minecraftforge.net/de/oceanlabs/mcp/mcp_snapshot/20161220/mcp_snapshot-20161220.zip
		at net.minecraftforge.util.download.DownloadUtilsImpl.connect(DownloadUtilsImpl.java:81)
		at net.minecraftforge.util.download.DownloadUtils.downloadFile(DownloadUtils.java:92)
		... 13 more
	Suppressed: java.io.IOException: file:/C:/Users/oscar/.m2/repository/de/oceanlabs/mcp/mcp_snapshot/20161220/mcp_snapshot-20161220.zip
		at net.minecraftforge.util.download.DownloadUtils.downloadFile(DownloadUtils.java:98)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.downloadFile(MavenCache.java:283)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:269)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:100)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:105)
		... 9 more
	Caused by: java.io.FileNotFoundException: C:\Users\oscar\.m2\repository\de\oceanlabs\mcp\mcp_snapshot\20161220\mcp_snapshot-20161220.zip (The system cannot find the path specified)
		at java.base/java.io.FileInputStream.open0(Native Method)
		at java.base/java.io.FileInputStream.open(FileInputStream.java:185)
		at java.base/java.io.FileInputStream.<init>(FileInputStream.java:139)
		at java.base/java.io.FileInputStream.<init>(FileInputStream.java:109)
		at java.base/sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:86)
		at java.base/sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:183)
		at java.base/java.net.URL.openStream(URL.java:1263)
		at net.minecraftforge.util.download.DownloadUtilsImpl.connect(DownloadUtilsImpl.java:49)
		at net.minecraftforge.util.download.DownloadUtils.downloadFile(DownloadUtils.java:92)
		... 13 more
	Suppressed: java.io.IOException: https://libraries.minecraft.net/de/oceanlabs/mcp/mcp_snapshot/20161220/mcp_snapshot-20161220.zip
		at net.minecraftforge.util.download.DownloadUtils.downloadFile(DownloadUtils.java:98)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.downloadFile(MavenCache.java:283)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:269)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:100)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:105)
		... 9 more
	Caused by: java.io.FileNotFoundException: Returned 404: https://libraries.minecraft.net/de/oceanlabs/mcp/mcp_snapshot/20161220/mcp_snapshot-20161220.zip
		at net.minecraftforge.util.download.DownloadUtilsImpl.connect(DownloadUtilsImpl.java:81)
		at net.minecraftforge.util.download.DownloadUtils.downloadFile(DownloadUtils.java:92)
		... 13 more
Caused by: java.io.FileNotFoundException: Returned 404: https://maven.minecraftforge.net/de/oceanlabs/mcp/mcp_snapshot/20161220/mcp_snapshot-20161220.zip
	at net.minecraftforge.util.download.DownloadUtilsImpl.connect(DownloadUtilsImpl.java:81)
	at net.minecraftforge.util.download.DownloadUtils.downloadFile(DownloadUtils.java:92)
	... 12 more

FAILURE: Build failed with an exception.

Deleting the mappings line fails with:

Processing Minecraft Forge (userdev): 1.11.2-13.20.1.2588
  extract[merged_at.cfg]
Exception in thread "main" java.lang.IllegalStateException: Official mappings does not support Legacy: net.minecraftforge:forge:1.11.2-13.20.1.2588:userdev
	at net.minecraftforge.mcmaven.impl.mappings.OfficialMappings.withContext(OfficialMappings.java:66)
	at net.minecraftforge.mcmaven.impl.repo.forge.ForgeRepo.processV2(ForgeRepo.java:172)
	at net.minecraftforge.mcmaven.impl.repo.forge.ForgeRepo.process(ForgeRepo.java:126)
	at net.minecraftforge.mcmaven.impl.MinecraftMaven.createForge(MinecraftMaven.java:223)
	at net.minecraftforge.mcmaven.impl.MinecraftMaven.run(MinecraftMaven.java:120)
	at net.minecraftforge.mcmaven.cli.MavenTask.run(MavenTask.java:217)
	at net.minecraftforge.mcmaven.cli.Main.run(Main.java:70)
	at net.minecraftforge.mcmaven.cli.Main.main(Main.java:23)

Should probably have FG7 default to 'auto' instead of 'official' and have Mavenizer account for that.

For 1.8.9:

minecraft {
    mappings channel: 'stable', version: '20'
}

dependencies {
    implementation minecraft.dependency('net.minecraftforge:forge:1.8.9-11.15.1.2318-1.8.9')
}

Fails with:

> Configure project :
Minecraft Mavenizer 0.5.5 by Forge Development LLC
  Output:             C:\Users\oscar\Desktop\fg7\.gradle\mavenizer\repo
  Output JSON:        C:\Users\oscar\Desktop\fg7\.gradle\mavenizer\dependencies\default.json
  Dependencies Only:  false
  Cache:              C:\Users\oscar\.gradle\caches\minecraftforge\forgegradle\mavenizer\caches
  JDK Cache:          C:\Users\oscar\.gradle\caches\minecraftforge\forgegradle\mavenizer\caches
  Offline:            false
  Cache Only:         false
  Ignore Cache:       false
  Mappings:           stable-20
  Foreign Repos:      [https://maven.minecraftforge.net/, file:/C:/Users/oscar/.m2/repository/, https://libraries.minecraft.net/]
  GradleVariantHack:  true
  Disable Gradle:     false
  Stub Jars:          false

Processing Minecraft dependency: net.minecraftforge:forge:1.8.9-11.15.1.2318-1.8.9
Processing Minecraft Forge (userdev): 1.8.9-11.15.1.2318-1.8.9
  Cache miss!
  java.lang.Exception: Cache miss! Stacktrace for Information Only
  	at net.minecraftforge.mcmaven.impl.Mavenizer.assertNotCacheOnly(Mavenizer.java:60)
  	at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:267)
  	at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:100)
  	at net.minecraftforge.mcmaven.impl.repo.forge.FG2Userdev.<init>(FG2Userdev.java:75)
  	at net.minecraftforge.mcmaven.impl.repo.forge.ForgeRepo.processV2(ForgeRepo.java:167)
  	at net.minecraftforge.mcmaven.impl.repo.forge.ForgeRepo.process(ForgeRepo.java:126)
  	at net.minecraftforge.mcmaven.impl.MinecraftMaven.createForge(MinecraftMaven.java:223)
  	at net.minecraftforge.mcmaven.impl.MinecraftMaven.run(MinecraftMaven.java:120)
  	at net.minecraftforge.mcmaven.cli.MavenTask.run(MavenTask.java:217)
  	at net.minecraftforge.mcmaven.cli.Main.run(Main.java:70)
  	at net.minecraftforge.mcmaven.cli.Main.main(Main.java:23)
  extract[merged_at.cfg]
Mappings Zip
  srg2names[stable-20]
Exception in thread "main" java.lang.RuntimeException: Failed to execute task `srg2names[stable-20]`
	at net.minecraftforge.mcmaven.impl.util.Task$Simple.execute(Task.java:151)
	at net.minecraftforge.mcmaven.impl.repo.Repo$PendingArtifact.get(Repo.java:243)
	at net.minecraftforge.mcmaven.impl.MinecraftMaven.finalize(MinecraftMaven.java:392)
	at net.minecraftforge.mcmaven.impl.MinecraftMaven.createForge(MinecraftMaven.java:224)
	at net.minecraftforge.mcmaven.impl.MinecraftMaven.run(MinecraftMaven.java:120)
	at net.minecraftforge.mcmaven.cli.MavenTask.run(MavenTask.java:217)
	at net.minecraftforge.mcmaven.cli.Main.run(Main.java:70)
	at net.minecraftforge.mcmaven.cli.Main.main(Main.java:23)
Caused by: java.io.IOException: https://maven.minecraftforge.net/de/oceanlabs/mcp/mcp_stable/20/mcp_stable-20.zip
	at net.minecraftforge.util.download.DownloadUtils.downloadFile(DownloadUtils.java:98)
	at net.minecraftforge.mcmaven.impl.cache.MavenCache.downloadFile(MavenCache.java:283)
	at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:269)
	at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:100)
	at net.minecraftforge.mcmaven.impl.mappings.MCPMappings.lambda$downloadCsv$0(MCPMappings.java:83)
	at net.minecraftforge.mcmaven.impl.util.Task$Simple.execute(Task.java:145)
	... 7 more
	Suppressed: java.io.IOException: https://maven.minecraftforge.net/de/oceanlabs/mcp/mcp_stable/20/mcp_stable-20.zip
		at net.minecraftforge.util.download.DownloadUtils.downloadFile(DownloadUtils.java:98)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.downloadFile(MavenCache.java:283)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:269)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:100)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:105)
		... 9 more
	Caused by: java.io.FileNotFoundException: Returned 404: https://maven.minecraftforge.net/de/oceanlabs/mcp/mcp_stable/20/mcp_stable-20.zip
		at net.minecraftforge.util.download.DownloadUtilsImpl.connect(DownloadUtilsImpl.java:81)
		at net.minecraftforge.util.download.DownloadUtils.downloadFile(DownloadUtils.java:92)
		... 13 more
	Suppressed: java.io.IOException: file:/C:/Users/oscar/.m2/repository/de/oceanlabs/mcp/mcp_stable/20/mcp_stable-20.zip
		at net.minecraftforge.util.download.DownloadUtils.downloadFile(DownloadUtils.java:98)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.downloadFile(MavenCache.java:283)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:269)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:100)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:105)
		... 9 more
	Caused by: java.io.FileNotFoundException: C:\Users\oscar\.m2\repository\de\oceanlabs\mcp\mcp_stable\20\mcp_stable-20.zip (The system cannot find the path specified)
		at java.base/java.io.FileInputStream.open0(Native Method)
		at java.base/java.io.FileInputStream.open(FileInputStream.java:185)
		at java.base/java.io.FileInputStream.<init>(FileInputStream.java:139)
		at java.base/java.io.FileInputStream.<init>(FileInputStream.java:109)
		at java.base/sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:86)
		at java.base/sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:183)
		at java.base/java.net.URL.openStream(URL.java:1263)
		at net.minecraftforge.util.download.DownloadUtilsImpl.connect(DownloadUtilsImpl.java:49)
		at net.minecraftforge.util.download.DownloadUtils.downloadFile(DownloadUtils.java:92)
		... 13 more
	Suppressed: java.io.IOException: https://libraries.minecraft.net/de/oceanlabs/mcp/mcp_stable/20/mcp_stable-20.zip
		at net.minecraftforge.util.download.DownloadUtils.downloadFile(DownloadUtils.java:98)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.downloadFile(MavenCache.java:283)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:269)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:100)
		at net.minecraftforge.mcmaven.impl.cache.MavenCache.download(MavenCache.java:105)
		... 9 more
	Caused by: java.io.FileNotFoundException: Returned 404: https://libraries.minecraft.net/de/oceanlabs/mcp/mcp_stable/20/mcp_stable-20.zip
		at net.minecraftforge.util.download.DownloadUtilsImpl.connect(DownloadUtilsImpl.java:81)
		at net.minecraftforge.util.download.DownloadUtils.downloadFile(DownloadUtils.java:92)
		... 13 more
Caused by: java.io.FileNotFoundException: Returned 404: https://maven.minecraftforge.net/de/oceanlabs/mcp/mcp_stable/20/mcp_stable-20.zip
	at net.minecraftforge.util.download.DownloadUtilsImpl.connect(DownloadUtilsImpl.java:81)
	at net.minecraftforge.util.download.DownloadUtils.downloadFile(DownloadUtils.java:92)
	... 12 more

FAILURE: Build failed with an exception.

Deleting the mappings line fails with:

> Configure project :
Minecraft Mavenizer 0.5.5 by Forge Development LLC
  Output:             C:\Users\oscar\Desktop\fg7\.gradle\mavenizer\repo
  Output JSON:        C:\Users\oscar\Desktop\fg7\.gradle\mavenizer\dependencies\default.json
  Dependencies Only:  false
  Cache:              C:\Users\oscar\.gradle\caches\minecraftforge\forgegradle\mavenizer\caches
  JDK Cache:          C:\Users\oscar\.gradle\caches\minecraftforge\forgegradle\mavenizer\caches
  Offline:            false
  Cache Only:         false
  Ignore Cache:       false
  Mappings:           official
  Foreign Repos:      [https://maven.minecraftforge.net/, file:/C:/Users/oscar/.m2/repository/, https://libraries.minecraft.net/]
  GradleVariantHack:  true
  Disable Gradle:     false
  Stub Jars:          false

Processing Minecraft dependency: net.minecraftforge:forge:1.8.9-11.15.1.2318-1.8.9
Processing Minecraft Forge (userdev): 1.8.9-11.15.1.2318-1.8.9
  extract[merged_at.cfg]
Exception in thread "main" java.lang.IllegalStateException: Official mappings does not support Legacy: net.minecraftforge:forge:1.8.9-11.15.1.2318-1.8.9:userdev
	at net.minecraftforge.mcmaven.impl.mappings.OfficialMappings.withContext(OfficialMappings.java:66)
	at net.minecraftforge.mcmaven.impl.repo.forge.ForgeRepo.processV2(ForgeRepo.java:172)
	at net.minecraftforge.mcmaven.impl.repo.forge.ForgeRepo.process(ForgeRepo.java:126)
	at net.minecraftforge.mcmaven.impl.MinecraftMaven.createForge(MinecraftMaven.java:223)
	at net.minecraftforge.mcmaven.impl.MinecraftMaven.run(MinecraftMaven.java:120)
	at net.minecraftforge.mcmaven.cli.MavenTask.run(MavenTask.java:217)
	at net.minecraftforge.mcmaven.cli.Main.run(Main.java:70)
	at net.minecraftforge.mcmaven.cli.Main.main(Main.java:23)

FAILURE: Build failed with an exception.

@LexManos
Copy link
Copy Markdown
Member Author

LexManos commented Jun 3, 2026

Will do when i get back to a computer, ended up getting busy last night and didnt get around to the mdks.

https://github.com/LexManos/MinecraftMavenizer/blob/9910c24a9e6b028d4f4e5615bc6fa91dadcfaa01/src/main/java/net/minecraftforge/mcmaven/impl/util/StupidHacks.java#L152

Due to legacy versions not shipping srg named patches. Old versions are required to use specific mapping files. See the above linked map.

I thought i made it automatically map from "official" to those specific ones so you could just delete the mappings line.

But that may of only been for the bulk tests. Will look into it.

Edit: indeed, that was the case https://github.com/LexManos/MinecraftMavenizer/blob/9910c24a9e6b028d4f4e5615bc6fa91dadcfaa01/src/main/java/net/minecraftforge/mcmaven/impl/MinecraftMaven.java#L196

Comment thread .github/workflows/test.yml Outdated
@zeng-github01
Copy link
Copy Markdown

zeng-github01 commented Jun 3, 2026

@LexManos build failed

mappings

mapping_version=20130918-1.6.3`

minecraft and forge version

minecraft_version=1.6.4
forge_version=9.11.1.964

Fix: This issue can be fixed by importing argo 3.4.

@zeng-github01
Copy link
Copy Markdown

@LexManos It compiles normally, but AccessTransformer isn't working. I've tried several configuration methods, but none of them work.

@LexManos
Copy link
Copy Markdown
Member Author

LexManos commented Jun 4, 2026

Working on it more today.
But the access transformers need to be in mapped names in FG7

@zeng-github01
Copy link
Copy Markdown

Working on it more today. But the access transformers need to be in mapped names in FG7

That means we need to use the deobfuscated name, right? I remember that in modern versions like 1.20, the obfuscation layer for func_ was also removed.

@zeng-github01
Copy link
Copy Markdown

Working on it more today. But the access transformers need to be in mapped names in FG7

The AT test passed, but a transformation layer may need to be designed because removing obfuscation might cause runtime errors in AT.

@LexManos
Copy link
Copy Markdown
Member Author

LexManos commented Jun 4, 2026

Obfuscation is not removed, so yes for runtime you will have to use obfed AT names.
In Fg7 Access Transformers are ran at the very end (much like facades) and thus work in mapped names.

@zeng-github01
Copy link
Copy Markdown

zeng-github01 commented Jun 4, 2026

Obfuscation is not removed, so yes for runtime you will have to use obfed AT names. In Fg7 Access Transformers are ran at the very end (much like facades) and thus work in mapped names.

Does this mean we need to prepare two AT CFGs, since the development environment requires the mapped name but the runtime requires the obf name? In the past, the searge name was generally used as a bridge

@LexManos
Copy link
Copy Markdown
Member Author

LexManos commented Jun 4, 2026

Welcome to the world of legacy software. You sometimes have to do weird things.
For versions that use SRG runtime, renamer already supports remappings at files
However, FG 1.6.4 doesn't use modern AT file formatting. And thus needs to be converted differently
I haven't gotten around to adding a flag to Renamer to use the 'legacy' format.

So yes, for now you have to provide two AT files.

@zeng-github01
Copy link
Copy Markdown

zeng-github01 commented Jun 4, 2026

Welcome to the world of legacy software. You sometimes have to do weird things. For versions that use SRG runtime, renamer already supports remappings at files However, FG 1.6.4 doesn't use modern AT file formatting. And thus needs to be converted differently I haven't gotten around to adding a flag to Renamer to use the 'legacy' format.

So yes, for now you have to provide two AT files.

Thanks for the explanation. But there’s also a middle‑ground approach: we can put both obfuscated names and mapped names in the same AT cfg and use whichever one applies. After all, if one of them doesn’t match, it simply gets ignored without causing any errors.

@LexManos
Copy link
Copy Markdown
Member Author

LexManos commented Jun 4, 2026

@zeng-github01
Copy link
Copy Markdown

zeng-github01 commented Jun 4, 2026

That would be true, IF 1.6.4 didn't use the legacy format: https://github.com/MinecraftForge/FML/blob/f1b3381e61fac1a0ae90f521223c6bc613eb4888/common/cpw/mods/fml/common/asm/transformers/AccessTransformer.java#L127-L131

It's a bit awkward, but it's not a big issue for my development environment right now because my runtime AT is all split into a separate coremod. My previous configuration excluded AT cfg from the build

@zeng-github01
Copy link
Copy Markdown

That would be true, IF 1.6.4 didn't use the legacy format: https://github.com/MinecraftForge/FML/blob/f1b3381e61fac1a0ae90f521223c6bc613eb4888/common/cpw/mods/fml/common/asm/transformers/AccessTransformer.java#L127-L131

Speaking of which, I added a space after the # symbol when writing comments in my previous configuration file, but the configuration still works, which is strange.

Like this: public-f ni.a # net/minecraft/potion/Potion/field_76425_a

@LexManos
Copy link
Copy Markdown
Member Author

LexManos commented Jun 4, 2026

You really should hop on discord if you're gunna use this as a chat.
But yes, the code is there, you can clearly see that it strips the entire comment and trims the string before trying to parse it. It would be dumb to have comments effect the actual parsing.

@zeng-github01
Copy link
Copy Markdown

zeng-github01 commented Jun 4, 2026

You really should hop on discord if you're gunna use this as a chat.
But yes, the code is there, you can clearly see that it strips the entire comment and trims the string before trying to parse it. It would be dumb to have comments effect the actual parsing.

Actually, it's because registering for Discord is inconvenient for me. I'd also like to use Discord. sad

@LexManos
Copy link
Copy Markdown
Member Author

LexManos commented Jun 4, 2026

Alright, well i'm not trying to be rude. But github isn't really the place to have rapid fire conversations.

Especially for simple things like "look 2 lines above the code I linked you", which is essentially what the entire AT conversation has been.
So please take a little bit of time, and actually look into/test things between messages.

@zeng-github01
Copy link
Copy Markdown

Alright, well i'm not trying to be rude. But github isn't really the place to have rapid fire conversations.

Especially for simple things like "look 2 lines above the code I linked you", which is essentially what the entire AT conversation has been. So please take a little bit of time, and actually look into/test things between messages.

I later discovered that the comment exclusion was located above the highlighted code, but I hadn't noticed it. Sorry.

@zeng-github01
Copy link
Copy Markdown

@LexManos Another problem is that although it can compile, the output is not obfuscated with SRG.

@LexManos
Copy link
Copy Markdown
Member Author

LexManos commented Jun 4, 2026

Again, not to be rude, but this is yet another case of you need to spend some time looking into things before posting.
We've vastly simplified what FG does by default.
You need to reobf your mods using the renamer plugin as our examples show.
Hell FG even tells you what the problem is

@zeng-github01
Copy link
Copy Markdown

zeng-github01 commented Jun 4, 2026

Again, not to be rude, but this is yet another case of you need to spend some time looking into things before posting. We've vastly simplified what FG does by default. You need to reobf your mods using the renamer plugin as our examples show. Hell FG even tells you what the problem is

There were no errors or warning during compilation, which is why it seems so strange.
If I get a hint, I'll figure it out myself.

Initially, I received a warning that net.minecraftforge.renamer was not installed. Later, I added it to the beginning of my build.gradle file: id "net.minecraftforge.renamer" version "1.1.0". While the warning disappeared, but it also wasn't obfuscated.

@LexManos
Copy link
Copy Markdown
Member Author

LexManos commented Jun 4, 2026

Initially, I received a warning that net.minecraftforge.renamer was not installed. Later, I added it to the beginning of my build.gradle file: id "net.minecraftforge.renamer" version "1.1.0". While the warning disappeared, but it also wasn't obfuscated.

FG:

Review MDKExamples to cross-reference your setup with a working example using Renamer Gradle.

Basically, you did 1/2 of what FG told you to do, and didn't actually tell it to reobf your jar.
But did just enough to make FG THINK you knew what you were doing, thus disabling the warning.

@zeng-github01
Copy link
Copy Markdown

zeng-github01 commented Jun 4, 2026

@LexManos It worked! The reference configuration I couldn't be found; I had to use the repository search to find it.

LexManos added 4 commits June 4, 2026 10:05
Fix 1.8.8 cleanup
Add mappings translation to single invocation
Simplify patching.
Blacklist broken 1.8.8 builds
@LexManos
Copy link
Copy Markdown
Member Author

LexManos commented Jun 5, 2026

Alright, github action tests run fine. I've added bulk tests to MDKExamples in this pr and fixed issues related to 1.6.4/older java versions.

There is a little work that needs to be done on the user's end, either setting their gradle to compile to java 6, Or bumping ASM themselves.
As well as including the LegacyJavaFixer.
You can see all of this illustrated in the mdk pr

Going to run a bulk 1.6.4->1.12.2 test of mavenizer with a clean cache tonight.
Then if that goes well I think this will be ready to go.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants