Skip to content

Commit 233e639

Browse files
committed
fixed reobf excepting
1 parent 96a39ed commit 233e639

File tree

6 files changed

+95
-44
lines changed

6 files changed

+95
-44
lines changed

src/main/java/net/minecraftforge/gradle/extrastuff/ReobfExceptor.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -45,24 +45,17 @@ public class ReobfExceptor
4545
// info supplied.
4646
public File toReobfJar;
4747
public File deobfJar;
48-
public File inSrg;
49-
public File outSrg;
5048
public File methodCSV;
5149
public File fieldCSV;
5250
public File excConfig;
5351

54-
// state data
55-
private JarInfo oldInfo;
56-
final Map<String, String> csvData = Maps.newHashMap();
52+
// state stuff
53+
Map<String, String> clsMap = Maps.newHashMap();
54+
Map<String, String> access = Maps.newHashMap();
5755

5856

59-
public void buildSrg() throws IOException
57+
public void buildSrg(File inSrg, File outSrg) throws IOException
6058
{
61-
JarInfo new_info = readJar(toReobfJar);
62-
Map<String, String> clsMap = createClassMap(new_info.map, new_info.interfaces);
63-
renameAccess(oldInfo.access);
64-
Map<String, String> access = mergeAccess(new_info.access, oldInfo.access);
65-
6659
// build the SRG
6760

6861
// delete if existing
@@ -81,13 +74,18 @@ public void buildSrg() throws IOException
8174
*/
8275
public void doFirstThings() throws IOException
8376
{
84-
readCSVs();
85-
oldInfo = readJar(deobfJar);
77+
Map<String, String> csvData = readCSVs();
78+
JarInfo oldInfo = readJar(deobfJar);
79+
JarInfo newInfo = readJar(toReobfJar);
80+
81+
clsMap = createClassMap(newInfo.map, newInfo.interfaces);
82+
renameAccess(oldInfo.access, csvData);
83+
access = mergeAccess(newInfo.access, oldInfo.access);
8684
}
8785

8886
// Preliminary things here
8987

90-
private void readCSVs() throws IOException
88+
private Map<String, String> readCSVs() throws IOException
9189
{
9290
final Map<String, String> csvData = Maps.newHashMap();
9391
File[] csvs = new File[]
@@ -112,11 +110,13 @@ public boolean processLine(String line) throws IOException
112110
@Override public Object getResult() { return null; }
113111
});
114112
}
113+
114+
return csvData;
115115
}
116116

117117
// ACTUAL things here...
118118

119-
private void renameAccess(Map<String, AccessInfo> data) throws IOException
119+
private void renameAccess(Map<String, AccessInfo> data, Map<String, String> csvData) throws IOException
120120
{
121121
for (Entry<String, AccessInfo> e : data.entrySet())
122122
{

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,16 +72,16 @@ public void doTask() throws IOException
7272
ReobfExceptor exceptor = new ReobfExceptor();
7373
exceptor.toReobfJar = inJar;
7474
exceptor.deobfJar = getPreFFJar();
75-
exceptor.inSrg = srg;
76-
exceptor.outSrg = new File(this.getTemporaryDir(), "reobf_cls.srg");
7775
exceptor.excConfig = getExc();
7876
exceptor.fieldCSV = getFieldsCsv();
7977
exceptor.methodCSV = getMethodsCsv();
8078

79+
File outSrg = new File(this.getTemporaryDir(), "reobf_cls.srg");
80+
8181
exceptor.doFirstThings();
82-
exceptor.buildSrg();
82+
exceptor.buildSrg(srg, outSrg);
8383

84-
srg = exceptor.outSrg;
84+
srg = outSrg;
8585
}
8686

8787
// append SRG

src/main/java/net/minecraftforge/gradle/tasks/user/reobf/ObfArtifact.java

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ public void setClasspath(FileCollection classpath)
303303
* @throws IOException
304304
* @throws org.gradle.api.InvalidUserDataException if the there is insufficient information available to generate the signature.
305305
*/
306-
void generate(ReobfExceptor exc, File extraSrg) throws Exception
306+
void generate(ReobfExceptor exc, File defaultSrg, File extraSrg) throws Exception
307307
{
308308
File toObf = getToObf();
309309
if (toObf == null)
@@ -313,35 +313,31 @@ void generate(ReobfExceptor exc, File extraSrg) throws Exception
313313

314314
// ready artifacts
315315
File output = getFile();
316-
File excepted = File.createTempFile("reobfed", ".jar", caller.getTemporaryDir());
317-
Files.copy(toObf, excepted);
316+
File toObfTemp = File.createTempFile("reobfed", ".jar", caller.getTemporaryDir());
317+
Files.copy(toObf, toObfTemp);
318318

319319
// ready Srg
320-
File srg = (File) (spec.srg == null ? caller.getSrg() : spec.srg);
321-
boolean isTemp = false;
322-
if (exc != null)
320+
File srg = (File) (spec.srg == null ? defaultSrg : spec.srg);
321+
boolean isTempSrg = false;
322+
if (exc != null && srg != defaultSrg) // defualt SRG is already passed through this.
323323
{
324324
File tempSrg = File.createTempFile("reobf", ".srg", caller.getTemporaryDir());
325-
isTemp = true;
325+
isTempSrg = true;
326326

327-
if (!srg.equals(caller.getSrg()))
328-
exc = caller.prepareSrg(srg, tempSrg);
329-
330-
exc.toReobfJar = toObf;
331-
exc.buildSrg();
332-
srg = exc.outSrg;
327+
exc.buildSrg(srg, tempSrg);
328+
srg = tempSrg;
333329

334330
}
335331

336332
// obfuscate!
337333
if (caller.getUseRetroGuard())
338-
applyRetroGuard(excepted, output, srg, extraSrg);
334+
applyRetroGuard(toObfTemp, output, srg, extraSrg);
339335
else
340-
applySpecialSource(excepted, output, srg, extraSrg);
336+
applySpecialSource(toObfTemp, output, srg, extraSrg);
341337

342338
// delete temporary files
343-
excepted.delete();
344-
if (isTemp)
339+
toObfTemp.delete();
340+
if (isTempSrg)
345341
srg.delete();
346342

347343
System.gc(); // clean anything out.. I hope..

src/main/java/net/minecraftforge/gradle/tasks/user/reobf/ReobfTask.java

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,12 @@
2828
import org.gradle.api.internal.file.collections.SimpleFileCollection;
2929
import org.gradle.api.tasks.Input;
3030
import org.gradle.api.tasks.InputFile;
31+
import org.gradle.api.tasks.Optional;
3132
import org.gradle.api.tasks.TaskAction;
3233
import org.gradle.api.tasks.bundling.AbstractArchiveTask;
3334

35+
import com.google.common.io.Files;
36+
3437
public class ReobfTask extends DefaultTask
3538
{
3639
final private DefaultDomainObjectSet<ObfArtifact> obfOutput = new DefaultDomainObjectSet<ObfArtifact>(ObfArtifact.class);
@@ -41,10 +44,21 @@ public class ReobfTask extends DefaultTask
4144
@InputFile
4245
private DelayedFile srg;
4346

47+
@Optional
48+
@InputFile
4449
private DelayedFile fieldCsv;
50+
@Optional
51+
@InputFile
4552
private DelayedFile methodCsv;
53+
@Optional
54+
@InputFile
4655
private DelayedFile exceptorCfg;
56+
@Optional
57+
@InputFile
4758
private DelayedFile deobfFile;
59+
@Optional
60+
@InputFile
61+
private DelayedFile recompFile;
4862

4963
@Input
5064
private LinkedList<String> extraSrg = new LinkedList<String>();
@@ -245,13 +259,18 @@ public void doTask() throws Exception
245259
{
246260
// do stuff.
247261
ReobfExceptor exc = null;
248-
File srg = new File(getTemporaryDir(), "reobf.srg");
249-
File extraSrg = new File(getTemporaryDir(), "extra.srg");
262+
File srg = File.createTempFile("reobf-default", ".srg", getTemporaryDir());
263+
File extraSrg = File.createTempFile("reobf-extra", ".srg", getTemporaryDir());;
250264

251265
UserExtension ext = (UserExtension) getProject().getExtensions().getByName(Constants.EXT_NAME_MC);
252266

253267
if (ext.isDecomp())
254-
exc = prepareSrg(getSrg(), srg);
268+
{
269+
exc = getExceptor();
270+
exc.buildSrg(getSrg(), srg);
271+
}
272+
else
273+
Files.copy(getSrg(), srg);
255274

256275
// generate extraSrg
257276
{
@@ -272,16 +291,15 @@ public void doTask() throws Exception
272291
}
273292

274293
for (ObfArtifact obf : getObfuscated())
275-
obf.generate(exc, extraSrg);
294+
obf.generate(exc, srg, extraSrg);
276295
}
277296

278-
protected ReobfExceptor prepareSrg(File inSrg, File outSrg) throws IOException
297+
private ReobfExceptor getExceptor() throws IOException
279298
{
280299
ReobfExceptor exc = new ReobfExceptor();
281300
exc.deobfJar = getDeobfFile();
301+
exc.toReobfJar = getRecompFile();
282302
exc.excConfig = getExceptorCfg();
283-
exc.inSrg = inSrg;
284-
exc.outSrg = outSrg;
285303
exc.fieldCSV = getFieldCsv();
286304
exc.methodCSV = getMethodCsv();
287305

@@ -373,8 +391,19 @@ public File getDeobfFile()
373391

374392
public void setDeobfFile(DelayedFile deobfFile)
375393
{
394+
System.out.println("DEOBF IS SET!");
376395
this.deobfFile = deobfFile;
377396
}
397+
398+
public File getRecompFile()
399+
{
400+
return recompFile == null ? null : recompFile.call();
401+
}
402+
403+
public void setRecompFile(DelayedFile recompFile)
404+
{
405+
this.recompFile = recompFile;
406+
}
378407

379408
public File getExceptorCfg()
380409
{

src/main/java/net/minecraftforge/gradle/user/FmlUserPlugin.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import net.minecraftforge.gradle.tasks.ProcessJarTask;
1010
import net.minecraftforge.gradle.tasks.RemapSourcesTask;
1111
import net.minecraftforge.gradle.tasks.abstractutil.ExtractTask;
12+
import net.minecraftforge.gradle.tasks.user.reobf.ReobfTask;
1213

1314
import org.gradle.api.Action;
1415
import org.gradle.api.Project;
@@ -100,6 +101,18 @@ public void execute(Project proj)
100101
else
101102
depHandler.add(depConfig, project.files(delayedFile(prefix + FML_BINPATCHED)));
102103
}
104+
105+
@Override
106+
public void finalCall()
107+
{
108+
super.finalCall();
109+
110+
if (getExtension().isDecomp)
111+
{
112+
boolean isClean = ((ProcessJarTask) project.getTasks().getByName("deobfuscateJar")).isClean();
113+
((ReobfTask) project.getTasks().getByName("reobf")).setRecompFile(delayedFile((isClean ? FML_CACHE : DIRTY_DIR) + FML_RECOMP));
114+
}
115+
}
103116

104117
@SuppressWarnings({ "rawtypes", "unchecked" })
105118
@Override

src/main/java/net/minecraftforge/gradle/user/ForgeUserPlugin.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import net.minecraftforge.gradle.tasks.RemapSourcesTask;
1111
import net.minecraftforge.gradle.tasks.abstractutil.DownloadTask;
1212
import net.minecraftforge.gradle.tasks.abstractutil.ExtractTask;
13+
import net.minecraftforge.gradle.tasks.user.reobf.ReobfTask;
1314

1415
import org.gradle.api.Action;
1516
import org.gradle.api.Project;
@@ -111,8 +112,20 @@ public void execute(Project proj)
111112
else
112113
depHandler.add(depConfig, ImmutableMap.of("name", "forgeBin", "version", getExtension().getApiVersion()));
113114
}
115+
116+
@Override
117+
public void finalCall()
118+
{
119+
super.finalCall();
120+
121+
if (getExtension().isDecomp)
122+
{
123+
boolean isClean = ((ProcessJarTask) project.getTasks().getByName("deobfuscateJar")).isClean();
124+
((ReobfTask) project.getTasks().getByName("reobf")).setRecompFile(delayedFile((isClean ? FORGE_CACHE : DIRTY_DIR) + FORGE_RECOMP));
125+
}
126+
}
114127

115-
@SuppressWarnings({ "rawtypes", "unchecked"})
128+
@SuppressWarnings({ "rawtypes", "unchecked" })
116129
@Override
117130
protected void doPostDecompTasks(boolean isClean, DelayedFile decompOut)
118131
{

0 commit comments

Comments
 (0)