Fix some streams not being closed, clean up the mod reobfuscater, fix runClient task
parent
356a7c4d00
commit
30a71c133d
|
@ -79,6 +79,7 @@ public class MixinServiceGradle extends MixinServiceLaunchWrapper implements ICl
|
|||
public byte[] getClassBytes(String name, String transformedName) throws IOException {
|
||||
InputStream inputStream = getResourceAsStream(name.replace(".", "/") + ".class");
|
||||
byte[] classBytes = ByteStreams.toByteArray(inputStream);
|
||||
inputStream.close();
|
||||
if(classBytes == null){
|
||||
return super.getClassBytes(name, transformedName);
|
||||
}
|
||||
|
|
|
@ -66,7 +66,6 @@ public class RunClientTask extends JavaExec {
|
|||
|
||||
//Removes the deobf jars
|
||||
libs.removeIf(s -> s.contains(Constants.MINECRAFT_FINAL_JAR.get(extension).getName()));
|
||||
libs.removeIf(s -> s.contains(getProject().getName() + "-" + getProject().getVersion() + "-deobf.jar"));
|
||||
|
||||
classpath(libs);
|
||||
|
||||
|
@ -77,6 +76,14 @@ public class RunClientTask extends JavaExec {
|
|||
super.exec();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWorkingDir(File dir) {
|
||||
if(!dir.exists()){
|
||||
dir.mkdirs();
|
||||
}
|
||||
super.setWorkingDir(dir);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMain() {
|
||||
return "net.minecraft.launchwrapper.Launch";
|
||||
|
|
|
@ -77,6 +77,14 @@ public class RunServerTask extends JavaExec {
|
|||
return "net.minecraft.launchwrapper.Launch";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWorkingDir(File dir) {
|
||||
if(!dir.exists()){
|
||||
dir.mkdirs();
|
||||
}
|
||||
super.setWorkingDir(dir);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getJvmArgs() {
|
||||
LoomGradleExtension extension = this.getProject().getExtensions().getByType(LoomGradleExtension.class);
|
||||
|
|
|
@ -125,6 +125,7 @@ public class ModProcessor {
|
|||
remapper.read(mcDeps);
|
||||
remapper.apply(input.toPath(), outputConsumer);
|
||||
outputConsumer.finish();
|
||||
remapper.finish();
|
||||
} catch (Exception e){
|
||||
remapper.finish();
|
||||
throw new RuntimeException("Failed to remap JAR to " + toM, e);
|
||||
|
@ -141,7 +142,10 @@ public class ModProcessor {
|
|||
if (!entry.isDirectory() && entry.getName().endsWith(".json") && !entry.getName().contains("/") && !entry.getName().contains("\\")) {
|
||||
// JSON file in root directory
|
||||
try {
|
||||
JsonObject json = gson.fromJson(new InputStreamReader(stream), JsonObject.class);
|
||||
InputStreamReader inputStreamReader = new InputStreamReader(stream);
|
||||
JsonObject json = gson.fromJson(inputStreamReader, JsonObject.class);
|
||||
inputStreamReader.close();
|
||||
stream.close();
|
||||
if (json != null && json.has("refmap")) {
|
||||
mixinRefmapFilenames.add(json.get("refmap").getAsString());
|
||||
}
|
||||
|
|
|
@ -43,25 +43,13 @@ public class ModRemapper {
|
|||
LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class);
|
||||
// TODO: What's the proper way of doing this?
|
||||
File libsDir = new File(project.getBuildDir(), "libs");
|
||||
File deobfJar = new File(libsDir, project.getName() + "-" + project.getVersion() + "-deobf.jar");
|
||||
File modJar = new File(libsDir, project.getName() + "-" + project.getVersion() + ".jar");
|
||||
|
||||
if (!modJar.exists()) {
|
||||
project.getLogger().error("Could not find mod .JAR at" + deobfJar.getAbsolutePath());
|
||||
project.getLogger().error("This is can be fixed by adding a 'settings.gradle' file specifying 'rootProject.name'");
|
||||
return;
|
||||
}
|
||||
|
||||
if (deobfJar.exists()) {
|
||||
deobfJar.delete();
|
||||
}
|
||||
|
||||
FileUtils.touch(modJar); //Done to ensure that the file can be moved
|
||||
//Move the pre existing mod jar to the deobf jar
|
||||
if(!modJar.renameTo(deobfJar)){
|
||||
throw new RuntimeException("Failed to rename " + modJar);
|
||||
}
|
||||
|
||||
Path mappings = Constants.MAPPINGS_TINY.get(extension).toPath();
|
||||
|
||||
String fromM = "named";
|
||||
|
@ -86,10 +74,10 @@ public class ModRemapper {
|
|||
|
||||
try {
|
||||
OutputConsumerPath outputConsumer = new OutputConsumerPath(modJar.toPath());
|
||||
outputConsumer.addNonClassFiles(deobfJar.toPath());
|
||||
remapper.read(deobfJar.toPath());
|
||||
outputConsumer.addNonClassFiles(modJar.toPath());
|
||||
remapper.read(modJar.toPath());
|
||||
remapper.read(classpath);
|
||||
remapper.apply(deobfJar.toPath(), outputConsumer);
|
||||
remapper.apply(modJar.toPath(), outputConsumer);
|
||||
outputConsumer.finish();
|
||||
remapper.finish();
|
||||
} catch (Exception e){
|
||||
|
@ -97,11 +85,9 @@ public class ModRemapper {
|
|||
throw new RuntimeException("Failed to remap JAR", e);
|
||||
}
|
||||
|
||||
if(!deobfJar.exists() || !modJar.exists()){
|
||||
if(!modJar.exists()){
|
||||
throw new RuntimeException("Failed to reobfuscate JAR");
|
||||
}
|
||||
|
||||
deobfJar.delete();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue