package kcauldron import org.gradle.api.DefaultTask import org.gradle.api.GradleException import org.gradle.api.tasks.InputFile import org.gradle.api.tasks.OutputDirectory import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.incremental.IncrementalTaskInputs class InstallBundle extends DefaultTask { @InputFile def File installer @OutputDirectory def File getInstallLocation() { new File(project.buildDir, 'bundle') } @TaskAction def install() { installLocation.deleteDir() installLocation.mkdirs() for (int i = 0; i < 3; i++) { def result = project.javaexec { workingDir installLocation classpath installer main 'net.minecraftforge.installer.SimpleInstaller' args '--installServer' standardOutput new NopOutputStream() errorOutput new NopOutputStream() } if (result.exitValue == 0) return } throw new GradleException("Failed to install bundle into ${installLocation}") } private static final class NopOutputStream extends OutputStream { @Override void write(byte[] b, int off, int len) throws IOException { } @Override void write(byte[] b) throws IOException { } @Override void write(int b) throws IOException { } } }