Skip to content

Commit 8f148c5

Browse files
committed
Pass obfuscation mappings to Slime Launcher
Update SlimeLauncher for LegacyDev(1.12.2) support Update Mavenizer to fix some natives not being listed correctly
1 parent 8c386f5 commit 8f148c5

8 files changed

Lines changed: 60 additions & 14 deletions

File tree

build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ description = "Forge's Gradle plugin for Mod development"
1818
group = 'net.minecraftforge'
1919
version = gitversion.tagOffset
2020

21-
println "Version: $version"
21+
logger.lifecycle("Version: $version")
2222

2323
java {
2424
toolchain.languageVersion = JavaLanguageVersion.of(17)
@@ -63,6 +63,7 @@ dependencies {
6363
// Utils
6464
implementation libs.maven.artifact
6565
implementation libs.bundles.utils
66+
implementation libs.srgutils
6667
}
6768

6869
license {

settings.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,5 +53,8 @@ dependencyResolutionManagement.versionCatalogs.register('libs') {
5353
library 'utils-hash', 'net.minecraftforge', 'hash-utils' version '0.1.12' // https://files.minecraftforge.net/net/minecraftforge/hash-utils/index.html
5454
library 'utils-download', 'net.minecraftforge', 'download-utils' version '0.4.0' // https://files.minecraftforge.net/net/minecraftforge/download-utils/index.html
5555
bundle 'utils', ['utils-data', 'utils-os', 'utils-hash', 'utils-download']
56+
57+
// Used to compare Minecraft Versions
58+
library 'srgutils', 'net.minecraftforge', 'srgutils' version '0.6.5'
5659
}
5760
//@formatter:on

src/main/java/net/minecraftforge/gradle/internal/SlimeLauncherEclipseConfiguration.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,8 @@ static TaskProvider<SlimeLauncherEclipseConfiguration> register(Project project,
179179
public abstract @Input @Override Property<String> getMCPVersion();
180180
public abstract @Input @Override Property<String> getMappingChannel();
181181
public abstract @Input @Override Property<String> getMappingVersion();
182-
//protected abstract @InputFile @Override RegularFileProperty getSrgToMcp();
182+
public abstract @InputFile @Override @Optional RegularFileProperty getMcpToSrg();
183+
public abstract @InputFile @Override @Optional RegularFileProperty getMcpToObf();
183184

184185
protected abstract @InputFile @Optional RegularFileProperty getRunsJson();
185186

@@ -227,9 +228,17 @@ protected void exec() {
227228
var args = new ArrayList<>(List.of(
228229
"--main", options.getMainClass().get(),
229230
"--cache", this.getCacheDir().get().getAsFile().getAbsolutePath(),
230-
"--metadata", this.getMetadata().getSingleFile().getAbsolutePath(),
231-
"--"
231+
"--metadata", this.getMetadata().getSingleFile().getAbsolutePath()
232232
));
233+
if (this.getMcpToSrg().isPresent()) {
234+
args.add("--to-srg");
235+
args.add(this.getMcpToSrg().get().getAsFile().getAbsolutePath());
236+
}
237+
if (this.getMcpToObf().isPresent()) {
238+
args.add("--to-obf");
239+
args.add(this.getMcpToObf().get().getAsFile().getAbsolutePath());
240+
}
241+
args.add("--");
233242
for (var arg : options.getArgs().getOrElse(List.of()))
234243
args.add(Util.replaceTokens(tokens, arg, unknown));
235244

@@ -255,7 +264,7 @@ protected void exec() {
255264
//endregion
256265

257266
for (var token : unknown)
258-
getLogger().debug("Unknown Run Token: {}", token);
267+
getLogger().lifecycle("Unknown Run Token: {}", token);
259268

260269
//region Slime Launcher setup
261270
try {

src/main/java/net/minecraftforge/gradle/internal/SlimeLauncherExec.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,8 @@ static TaskProvider<SlimeLauncherExec> register(Project project, SourceSet sourc
8686
public abstract @Input @Override Property<String> getMCPVersion();
8787
public abstract @Input @Override Property<String> getMappingChannel();
8888
public abstract @Input @Override Property<String> getMappingVersion();
89-
//protected abstract @InputFile @Override RegularFileProperty getSrgToMcp();
89+
public abstract @InputFile @Override @Optional RegularFileProperty getMcpToSrg();
90+
public abstract @InputFile @Override @Optional RegularFileProperty getMcpToObf();
9091

9192
protected abstract @InputFile @Optional RegularFileProperty getRunsJson();
9293

@@ -137,11 +138,20 @@ public void exec() {
137138
var slimeArgs = List.of(
138139
"--main", mainClass.get(),
139140
"--cache", this.getCacheDir().get().getAsFile().getAbsolutePath(),
140-
"--metadata", this.getMetadata().getSingleFile().getAbsolutePath(),
141-
"--"
141+
"--metadata", this.getMetadata().getSingleFile().getAbsolutePath()
142142
);
143143
// Set need to add slime args first, so grab a copy and reset
144144
var args = new ArrayList<>(slimeArgs);
145+
if (this.getMcpToSrg().isPresent()) {
146+
args.add("--to-srg");
147+
args.add(this.getMcpToSrg().get().getAsFile().getAbsolutePath());
148+
}
149+
if (this.getMcpToObf().isPresent()) {
150+
args.add("--to-obf");
151+
args.add(this.getMcpToObf().get().getAsFile().getAbsolutePath());
152+
}
153+
args.add("--");
154+
// Add the rest
145155
args.addAll(this.getArgs());
146156
this.setArgs(args);
147157
}

src/main/java/net/minecraftforge/gradle/internal/SlimeLauncherRunHelper.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ static Map<String, Supplier<String>> buildTokens(SlimeLauncherRunTask task, Slim
4444
ret.put("mcp_version", task.getMCPVersion()::get);
4545
ret.put("source_roots", getSourceRoots(task, options, defaultSourceSets, sourceOutputs));
4646
// Despite the name this is set to createSrgToMcp.getOutput().get().getAsFile().getAbsolutePath() so.. Srg -> MCP .srg mapping file.
47-
//ret.put("mcp_to_srg", getSrgToMcp().getAsFile().map(File::getAbsolutePath)::get);
47+
// This is taken care of in SlimeLauncher, because I don't want to teach FG about SRG files.
48+
// So add a passthrough to make it not output a warning
49+
ret.put("mcp_to_srg", () -> "{mcp_to_srg}");
4850
return ret;
4951
}
5052

@@ -146,7 +148,10 @@ static void configure(SlimeLauncherRunTask task, MinecraftDependencyInternal mcd
146148
task.getMCPVersion().set(inst.getMCPVersion());
147149
task.getMappingChannel().set(inst.getMappingChannel());
148150
task.getMappingVersion().set(inst.getMappingVersion());
149-
// We need a way to reverse this file, cuz we want srg->mcp and this is mcp->srg
150-
//task.getSrgToMcp().set(project.file(inst.getToSrgFile()));
151+
152+
if (Util.isObfuscated(inst.getMinecraftVersion().get())) {
153+
task.getMcpToObf().fileProvider(inst.getToObfFile());
154+
task.getMcpToSrg().fileProvider(inst.getToSrgFile());
155+
}
151156
}
152157
}

src/main/java/net/minecraftforge/gradle/internal/SlimeLauncherRunTask.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,13 @@
77
import org.gradle.api.Task;
88
import org.gradle.api.file.ConfigurableFileCollection;
99
import org.gradle.api.file.DirectoryProperty;
10+
import org.gradle.api.file.RegularFileProperty;
1011
import org.gradle.api.provider.Property;
1112
import org.gradle.api.tasks.Input;
13+
import org.gradle.api.tasks.InputFile;
1214
import org.gradle.api.tasks.InputFiles;
1315
import org.gradle.api.tasks.Internal;
16+
import org.gradle.api.tasks.Optional;
1417

1518
public interface SlimeLauncherRunTask extends Task {
1619
@Input Property<String> getSourceSetName();
@@ -23,5 +26,6 @@ public interface SlimeLauncherRunTask extends Task {
2326
@Input Property<String> getMCPVersion();
2427
@Input Property<String> getMappingChannel();
2528
@Input Property<String> getMappingVersion();
26-
//@InputFile RegularFileProperty getSrgToMcp();
29+
@InputFile @Optional RegularFileProperty getMcpToSrg();
30+
@InputFile @Optional RegularFileProperty getMcpToObf();
2731
}

src/main/java/net/minecraftforge/gradle/internal/Tools.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
final class Tools {
1010
private Tools() { }
1111

12-
static final Tool SLIMELAUNCHER = Tool.ofForge("slimelauncher", "net.minecraftforge:slime-launcher:0.1.14", 8, "net.minecraftforge.launcher.Main");
12+
static final Tool SLIMELAUNCHER = Tool.ofForge("slimelauncher", "net.minecraftforge:slime-launcher:0.1.15", 8, "net.minecraftforge.launcher.Main");
1313

14-
static final Tool MAVENIZER = Tool.ofForge("mavenizer", "net.minecraftforge:minecraft-mavenizer:0.4.65", 25, "net.minecraftforge.mcmaven.cli.Main");
14+
static final Tool MAVENIZER = Tool.ofForge("mavenizer", "net.minecraftforge:minecraft-mavenizer:0.4.66", 25, "net.minecraftforge.mcmaven.cli.Main");
1515
}

src/main/java/net/minecraftforge/gradle/internal/Util.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,14 @@
55
package net.minecraftforge.gradle.internal;
66

77
import net.minecraftforge.gradleutils.shared.SharedUtil;
8+
import net.minecraftforge.srgutils.MinecraftVersion;
89
import org.codehaus.groovy.runtime.StringGroovyMethods;
910
import org.gradle.api.NamedDomainObjectSet;
1011
import org.gradle.api.artifacts.Configuration;
1112
import org.gradle.api.artifacts.Dependency;
1213
import org.gradle.api.artifacts.ModuleIdentifier;
14+
import org.gradle.api.logging.Logger;
15+
import org.gradle.api.logging.Logging;
1316
import org.gradle.api.tasks.SourceSet;
1417
import org.gradle.api.tasks.SourceSetContainer;
1518
import org.jspecify.annotations.Nullable;
@@ -21,6 +24,8 @@
2124
import java.util.function.Supplier;
2225

2326
final class Util extends SharedUtil {
27+
private static final Logger LOGGER = Logging.getLogger(Util.class);
28+
2429
static String checkMappingsParam(ForgeGradleProblems problems, @Nullable Object param, String name) {
2530
if (param == null || param.toString().isEmpty())
2631
throw problems.nullMappingsParam(name);
@@ -123,4 +128,13 @@ static String replaceTokens(Map<String, ?> tokens, String value, @Nullable Set<S
123128
return buf.toString();
124129
}
125130

131+
private static final MinecraftVersion UNOBFED_START = MinecraftVersion.from("26.1-snapshot-1");
132+
public static boolean isObfuscated(String version) {
133+
try {
134+
return MinecraftVersion.from(version).compareTo(UNOBFED_START) < 0;
135+
} catch (Exception e) {
136+
LOGGER.info("Failed to parse MC Version: {} Defaulting to not obfuscated", version);
137+
return false;
138+
}
139+
}
126140
}

0 commit comments

Comments
 (0)