Skip to content

Commit ef0debe

Browse files
committed
backported extra srg lines
1 parent 0455299 commit ef0debe

File tree

3 files changed

+70
-4
lines changed

3 files changed

+70
-4
lines changed

src/main/java/net/minecraftforge/gradle/common/BaseExtension.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package net.minecraftforge.gradle.common;
22

3+
import java.util.LinkedList;
4+
35
import org.gradle.api.Project;
46

57
public class BaseExtension
@@ -8,6 +10,7 @@ public class BaseExtension
810
protected String version = "null";
911
protected String mcpVersion = "unknown";
1012
protected String assetDir = "eclipse/assets";
13+
private LinkedList<String> srgExtra = new LinkedList<String>();
1114

1215
public BaseExtension(Project project)
1316
{
@@ -43,4 +46,14 @@ public String getAssetDir()
4346
{
4447
return this.assetDir;
4548
}
46-
}
49+
50+
public LinkedList<String> getSrgExtra()
51+
{
52+
return srgExtra;
53+
}
54+
55+
public void srgExtra(String in)
56+
{
57+
srgExtra.add(in);
58+
}
59+
}

src/main/java/net/minecraftforge/gradle/dev/DevBasePlugin.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import net.minecraftforge.gradle.tasks.abstractutil.ExtractTask;
3131
import net.minecraftforge.gradle.tasks.dev.CompressLZMA;
3232
import net.minecraftforge.gradle.tasks.dev.MergeMappingsTask;
33+
import net.minecraftforge.gradle.tasks.dev.ObfuscateTask;
3334

3435
import org.apache.shiro.util.AntPathMatcher;
3536
import org.gradle.api.Action;
@@ -221,6 +222,16 @@ public void afterEvaluate()
221222

222223
configureLaunch4J();
223224

225+
// set obfuscate extras
226+
Task t = project.getTasks().getByName("obfuscateJar");
227+
if (t != null)
228+
{
229+
ObfuscateTask obf = ((ObfuscateTask)t);
230+
obf.setExtraSrg(getExtension().getSrgExtra());
231+
obf.configureProject(getExtension().getSubprojects());
232+
obf.configureProject(getExtension().getDirtyProject());
233+
}
234+
224235
try
225236
{
226237
Copy copyTask = makeTask("extractNatives", Copy.class);

src/main/java/net/minecraftforge/gradle/tasks/dev/ObfuscateTask.java

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package net.minecraftforge.gradle.tasks.dev;
22

3+
import java.io.BufferedWriter;
34
import java.io.File;
45
import java.io.FileNotFoundException;
6+
import java.io.FileWriter;
57
import java.io.IOException;
68
import java.net.MalformedURLException;
79
import java.net.URL;
810
import java.net.URLClassLoader;
911
import java.nio.charset.Charset;
1012
import java.util.ArrayList;
13+
import java.util.LinkedList;
1114

1215
import net.md_5.specialsource.Jar;
1316
import net.md_5.specialsource.JarMapping;
@@ -18,6 +21,7 @@
1821
import net.minecraftforge.gradle.delayed.DelayedFile;
1922
import net.minecraftforge.gradle.dev.FmlDevPlugin;
2023

24+
import org.gradle.api.Action;
2125
import org.gradle.api.DefaultTask;
2226
import org.gradle.api.Project;
2327
import org.gradle.api.file.FileCollection;
@@ -33,21 +37,44 @@ public class ObfuscateTask extends DefaultTask
3337
private DelayedFile srg;
3438
private boolean reverse;
3539
private DelayedFile buildFile;
40+
private LinkedList<Action<Project>> configureProject = new LinkedList<Action<Project>>();
41+
private LinkedList<String> extraSrg = new LinkedList<String>();
3642

3743
@TaskAction
3844
public void doTask() throws IOException
3945
{
4046
getLogger().debug("Building child project model...");
4147
Project childProj = FmlDevPlugin.getProject(getBuildFile(), getProject());
48+
for (Action<Project> act : configureProject)
49+
{
50+
if (act != null)
51+
act.execute(childProj);
52+
}
53+
4254
AbstractTask compileTask = (AbstractTask) childProj.getTasks().getByName("compileJava");
4355
AbstractTask jarTask = (AbstractTask) childProj.getTasks().getByName("jar");
4456

4557
// executing jar task
4658
getLogger().debug("Executing child Jar task...");
4759
executeTask(jarTask);
60+
61+
// copy srg
62+
File tempSrg = File.createTempFile("obf", ".srg", this.getTemporaryDir());
63+
Files.copy(getSrg(), tempSrg);
64+
65+
// append SRG
66+
BufferedWriter writer = new BufferedWriter(new FileWriter(tempSrg, true));
67+
for (String line : extraSrg)
68+
{
69+
writer.write(line);
70+
writer.newLine();
71+
}
72+
writer.flush();
73+
writer.close();
74+
4875

4976
getLogger().debug("Obfuscating jar...");
50-
obfuscate((File)jarTask.property("archivePath"), (FileCollection)compileTask.property("classpath"));
77+
obfuscate((File)jarTask.property("archivePath"),tempSrg, (FileCollection)compileTask.property("classpath"));
5178
}
5279

5380
private void executeTask(AbstractTask task)
@@ -64,11 +91,11 @@ private void executeTask(AbstractTask task)
6491
}
6592
}
6693

67-
private void obfuscate(File inJar, FileCollection classpath) throws FileNotFoundException, IOException
94+
private void obfuscate(File inJar, File srg, FileCollection classpath) throws FileNotFoundException, IOException
6895
{
6996
// load mapping
7097
JarMapping mapping = new JarMapping();
71-
mapping.loadMappings(Files.newReader(getSrg(), Charset.defaultCharset()), null, null, reverse);
98+
mapping.loadMappings(Files.newReader(srg, Charset.defaultCharset()), null, null, reverse);
7299

73100
// make remapper
74101
JarRemapper remapper = new JarRemapper(null, mapping);
@@ -144,6 +171,21 @@ public void setReverse(boolean reverse)
144171
{
145172
this.reverse = reverse;
146173
}
174+
175+
public void configureProject(Action<Project> action)
176+
{
177+
configureProject.add(action);
178+
}
179+
180+
public LinkedList<String> getExtraSrg()
181+
{
182+
return extraSrg;
183+
}
184+
185+
public void setExtraSrg(LinkedList<String> extraSrg)
186+
{
187+
this.extraSrg = extraSrg;
188+
}
147189

148190
public File getBuildFile()
149191
{

0 commit comments

Comments
 (0)