Skip to content

Commit c5a0258

Browse files
committed
Make publishing patcher plugins work for non-obfed minecraft versions
1 parent 0d4eec0 commit c5a0258

File tree

5 files changed

+62
-19
lines changed

5 files changed

+62
-19
lines changed

src/mcp/java/net/minecraftforge/gradle/mcp/MCPRepo.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,8 @@ private File findRaw(String side, String version) throws IOException {
295295

296296
@Nullable
297297
private File findSrg(String side, String version) throws IOException {
298+
if (!Utils.isObfuscated(MinecraftRepo.getMCVersion(version)))
299+
return findRaw(side, version);
298300
return findStepOutput(side, version, "srg", "jar", STEP_RENAME);
299301
}
300302

src/mcp/java/net/minecraftforge/gradle/mcp/util/MCPRuntime.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,10 @@ public File execute(Logger logger, @Nullable String stop) throws Exception {
136136
}
137137
}
138138

139+
if (stop != null) {
140+
logger.lifecycle("Stopping at requested step failed, could not find: " + stop);
141+
}
142+
139143
logger.lifecycle("MCP environment setup is complete");
140144
return ret;
141145
}

src/patcher/java/net/minecraftforge/gradle/patcher/PatcherPlugin.java

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -240,9 +240,6 @@ public void apply(Project project) {
240240
* patches in /patches/
241241
*/
242242
sourcesJar.configure(task -> {
243-
task.setOnlyIf(t -> applyRangeConfig.flatMap(ApplyRangeMap::getOutput).map(rf -> rf.getAsFile().exists()).getOrElse(false));
244-
task.dependsOn(applyRangeConfig);
245-
task.from(project.zipTree(applyRangeConfig.flatMap(ApplyRangeMap::getOutput)));
246243
task.getArchiveClassifier().set("sources");
247244
});
248245

@@ -310,6 +307,21 @@ public void apply(Project project) {
310307
//}); //TODO: Asset downloading, needs asset index from json.
311308
//javaConv.getSourceSets().stream().forEach(s -> extractRangeConfig.get().addSources(s.getJava().getSrcDirs()));
312309

310+
/*
311+
* All sources in SRG names.
312+
* patches in /patches/
313+
*/
314+
if (Utils.isObfuscated(extension.getMcVersion().get())) {
315+
sourcesJar.configure(task -> {
316+
task.setOnlyIf(t -> applyRangeConfig.flatMap(ApplyRangeMap::getOutput).map(rf -> rf.getAsFile().exists()).getOrElse(false));
317+
task.dependsOn(applyRangeConfig);
318+
task.from(project.zipTree(applyRangeConfig.flatMap(ApplyRangeMap::getOutput)));
319+
});
320+
} else {
321+
sourcesJar.configure(task -> {
322+
task.from(applyRangeConfig.get().getSources());
323+
});
324+
}
313325

314326
// Automatically create the patches folder if it does not exist
315327
if (extension.getPatches().isPresent()) {
@@ -595,7 +607,8 @@ public void apply(Project project) {
595607
genServerBinPatches.configure(t -> t.getCleanJar().convention(project.getLayout().file(serverJar)));
596608
for (TaskProvider<GenerateBinPatches> binPatchesTask : Lists.newArrayList(genJoinedBinPatches, genClientBinPatches, genServerBinPatches)) {
597609
binPatchesTask.configure(task -> {
598-
task.getSrg().set(srg.flatMap(GenerateSRG::getOutput));
610+
if (Utils.isObfuscated(extension.getMcVersion().get()))
611+
task.getSrg().set(srg.flatMap(GenerateSRG::getOutput));
599612
if (extension.getPatches().isPresent()) {
600613
task.mustRunAfter(genPatches);
601614
task.getPatchSets().from(extension.getPatches());
@@ -604,7 +617,8 @@ public void apply(Project project) {
604617
}
605618

606619
filterNew.configure(t -> {
607-
t.getSrg().set(srg.flatMap(GenerateSRG::getOutput));
620+
if (Utils.isObfuscated(extension.getMcVersion().get()))
621+
t.getSrg().set(srg.flatMap(GenerateSRG::getOutput));
608622
t.getBlacklist().from(joinedJar);
609623
});
610624
}

src/patcher/java/net/minecraftforge/gradle/patcher/tasks/FilterNewJar.java

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@
1111
import org.gradle.api.DefaultTask;
1212
import org.gradle.api.file.ConfigurableFileCollection;
1313
import org.gradle.api.file.RegularFileProperty;
14+
import org.gradle.api.provider.Property;
15+
import org.gradle.api.tasks.Input;
1416
import org.gradle.api.tasks.InputFile;
1517
import org.gradle.api.tasks.InputFiles;
18+
import org.gradle.api.tasks.Optional;
1619
import org.gradle.api.tasks.OutputFile;
1720
import org.gradle.api.tasks.TaskAction;
1821

@@ -28,20 +31,29 @@
2831
public abstract class FilterNewJar extends DefaultTask { //TODO: Copy task?
2932
public FilterNewJar() {
3033
getOutput().convention(getProject().getLayout().getBuildDirectory().dir(getName()).map(d -> d.file("output.jar")));
34+
getFilterInners().convention(false);
3135
}
3236

3337
@TaskAction
3438
public void apply() throws IOException {
3539
Set<String> filter = new HashSet<>();
40+
Set<String> classes = new HashSet<>();
3641
for (File file : getBlacklist()) {
3742
try (ZipFile zip = new ZipFile(file)) {
38-
Utils.forZip(zip, entry -> filter.add(entry.getName()));
43+
Utils.forZip(zip, entry -> {
44+
filter.add(entry.getName());
45+
if (getFilterInners().get() && entry.getName().endsWith(".class"))
46+
classes.add(entry.getName().substring(0, entry.getName().length() - 6));
47+
});
3948
}
4049
}
4150

42-
Set<String> classes = IMappingFile.load(getSrg().get().getAsFile()).getClasses().stream()
43-
.map(IMappingFile.IClass::getMapped)
44-
.collect(Collectors.toSet());
51+
if (getSrg().isPresent()) {
52+
IMappingFile map = IMappingFile.load(getSrg().getAsFile().get());
53+
for (IMappingFile.IClass cls : map.getClasses()) {
54+
classes.add(cls.getMapped());
55+
}
56+
}
4557

4658
try (ZipFile zin = new ZipFile(getInput().get().getAsFile());
4759
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(getOutput().get().getAsFile()))){
@@ -71,8 +83,12 @@ private boolean isVanilla(Set<String> classes, String cls) {
7183
public abstract RegularFileProperty getInput();
7284

7385
@InputFile
86+
@Optional
7487
public abstract RegularFileProperty getSrg();
7588

89+
@Input
90+
public abstract Property<Boolean> getFilterInners();
91+
7692
@InputFiles
7793
public abstract ConfigurableFileCollection getBlacklist();
7894

src/patcher/java/net/minecraftforge/gradle/patcher/tasks/GenerateBinPatches.java

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,13 @@
1717
import org.gradle.api.tasks.Optional;
1818
import org.gradle.api.tasks.OutputFile;
1919

20+
import java.io.File;
21+
import java.util.Arrays;
22+
import java.util.Collection;
23+
import java.util.Collections;
24+
import java.util.HashMap;
2025
import java.util.List;
26+
import java.util.Map;
2127

2228
public abstract class GenerateBinPatches extends JarExec {
2329
public GenerateBinPatches() {
@@ -31,16 +37,17 @@ public GenerateBinPatches() {
3137

3238
@Override
3339
protected List<String> filterArgs(List<String> args) {
34-
final List<String> newArgs = replaceArgs(args, ImmutableMap.of(
35-
"{clean}", getCleanJar().get().getAsFile(),
36-
"{dirty}", getDirtyJar().get().getAsFile(),
37-
"{output}", getOutput().get().getAsFile(),
38-
"{srg}", getSrg().get().getAsFile()
39-
), ImmutableMap.of(
40-
"{patches}", getPatchSets().getFiles()
41-
)
40+
final Map<String, File> tokens = new HashMap<>(ImmutableMap.of(
41+
"{clean}", getCleanJar().get().getAsFile(),
42+
"{dirty}", getDirtyJar().get().getAsFile(),
43+
"{output}", getOutput().get().getAsFile()
44+
));
45+
46+
final Map<String, ? extends Collection<?>> multi = ImmutableMap.of(
47+
"{patches}", getPatchSets().getFiles(),
48+
"{srg}", getSrg().isPresent() ? Collections.singletonList(getSrg().get().getAsFile()) : Collections.emptyList()
4249
);
43-
return newArgs;
50+
return replaceArgs(args, tokens, multi);
4451
}
4552

4653
@InputFile
@@ -53,10 +60,10 @@ protected List<String> filterArgs(List<String> args) {
5360
public abstract ConfigurableFileCollection getPatchSets();
5461

5562
@InputFile
63+
@Optional
5664
public abstract RegularFileProperty getSrg();
5765

5866
@Input
59-
@Optional
6067
public abstract Property<String> getSide();
6168

6269
@OutputFile

0 commit comments

Comments
 (0)