Skip to content

Commit a2c33c7

Browse files
committed
added runClient and runServer tasks
1 parent 6986a5b commit a2c33c7

File tree

1 file changed

+82
-15
lines changed

1 file changed

+82
-15
lines changed

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

Lines changed: 82 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import static net.minecraftforge.gradle.common.Constants.*;
44
import static net.minecraftforge.gradle.user.UserConstants.*;
5-
import groovy.lang.Closure;
65

76
import java.io.File;
87
import java.io.IOException;
@@ -17,19 +16,6 @@
1716
import javax.xml.transform.dom.DOMSource;
1817
import javax.xml.transform.stream.StreamResult;
1918

20-
import net.minecraftforge.gradle.common.BasePlugin;
21-
import net.minecraftforge.gradle.tasks.ApplyFernFlowerTask;
22-
import net.minecraftforge.gradle.tasks.ApplyS2STask;
23-
import net.minecraftforge.gradle.tasks.CreateStartTask;
24-
import net.minecraftforge.gradle.tasks.DeobfuscateJar;
25-
import net.minecraftforge.gradle.tasks.ExtractS2SRangeTask;
26-
import net.minecraftforge.gradle.tasks.GenEclipseRunTask;
27-
import net.minecraftforge.gradle.tasks.PostDecompileTask;
28-
import net.minecraftforge.gradle.tasks.RemapSources;
29-
import net.minecraftforge.gradle.util.GradleConfigurationException;
30-
import net.minecraftforge.gradle.util.delayed.DelayedFile;
31-
import net.minecraftforge.gradle.util.delayed.TokenReplacer;
32-
3319
import org.gradle.api.Action;
3420
import org.gradle.api.DefaultTask;
3521
import org.gradle.api.Project;
@@ -53,6 +39,7 @@
5339
import org.gradle.api.plugins.JavaPluginConvention;
5440
import org.gradle.api.plugins.MavenPluginConvention;
5541
import org.gradle.api.tasks.GroovySourceSet;
42+
import org.gradle.api.tasks.JavaExec;
5643
import org.gradle.api.tasks.ScalaSourceSet;
5744
import org.gradle.api.tasks.SourceSet;
5845
import org.gradle.api.tasks.bundling.Jar;
@@ -73,6 +60,20 @@
7360
import com.google.common.collect.ImmutableMap;
7461
import com.google.common.collect.Maps;
7562

63+
import groovy.lang.Closure;
64+
import net.minecraftforge.gradle.common.BasePlugin;
65+
import net.minecraftforge.gradle.tasks.ApplyFernFlowerTask;
66+
import net.minecraftforge.gradle.tasks.ApplyS2STask;
67+
import net.minecraftforge.gradle.tasks.CreateStartTask;
68+
import net.minecraftforge.gradle.tasks.DeobfuscateJar;
69+
import net.minecraftforge.gradle.tasks.ExtractS2SRangeTask;
70+
import net.minecraftforge.gradle.tasks.GenEclipseRunTask;
71+
import net.minecraftforge.gradle.tasks.PostDecompileTask;
72+
import net.minecraftforge.gradle.tasks.RemapSources;
73+
import net.minecraftforge.gradle.util.GradleConfigurationException;
74+
import net.minecraftforge.gradle.util.delayed.DelayedFile;
75+
import net.minecraftforge.gradle.util.delayed.TokenReplacer;
76+
7677
public abstract class UserBasePlugin<T extends UserBaseExtension> extends BasePlugin<T>
7778
{
7879
private boolean madeDecompTasks = false; // to gaurd against stupid programmers
@@ -112,10 +113,12 @@ public final void applyPlugin()
112113
project.getConfigurations().maybeCreate(CONFIG_DP_RESOLVED);
113114

114115
configureCompilation();
116+
115117
// Quality of life stuff for the users
116118
createSourceCopyTasks();
117119
doDevTimeDeobf();
118120
makeObfSource();
121+
makeRunTasks();
119122

120123
// use zinc for scala compilation
121124
project.getTasks().withType(ScalaCompile.class, new Action<ScalaCompile>() {
@@ -198,6 +201,36 @@ public void execute(TaskSourceCopy t)
198201
project.getDependencies().add(CONFIG_START, col);
199202
}
200203
// TODO: do some GradleStart stuff based on the MC version?
204+
205+
// run task stuff
206+
// Add the mod and stuff to the classpath of the exec tasks.
207+
final Jar jarTask = (Jar) project.getTasks().getByName("jar");
208+
209+
if (this.hasClientRun())
210+
{
211+
JavaExec exec = (JavaExec) project.getTasks().getByName("runClient");
212+
exec.classpath(project.getConfigurations().getByName("runtime"));
213+
exec.classpath(project.getConfigurations().getByName(CONFIG_MC));
214+
exec.classpath(project.getConfigurations().getByName(CONFIG_MC_DEPS));
215+
exec.classpath(project.getConfigurations().getByName(CONFIG_START));
216+
exec.classpath(jarTask.getArchivePath());
217+
exec.dependsOn(jarTask);
218+
exec.jvmArgs(getClientJvmArgs(getExtension()));
219+
exec.args(getClientRunArgs(getExtension()));
220+
}
221+
222+
if (this.hasServerRun())
223+
{
224+
JavaExec exec = (JavaExec) project.getTasks().getByName("runServer");
225+
exec.classpath(project.getConfigurations().getByName("runtime"));
226+
exec.classpath(project.getConfigurations().getByName(CONFIG_MC));
227+
exec.classpath(project.getConfigurations().getByName(CONFIG_MC_DEPS));
228+
exec.classpath(project.getConfigurations().getByName(CONFIG_START));
229+
exec.classpath(jarTask.getArchivePath());
230+
exec.dependsOn(jarTask);
231+
exec.jvmArgs(getServerJvmArgs(getExtension()));
232+
exec.jvmArgs(getServerRunArgs(getExtension()));
233+
}
201234
}
202235

203236
protected abstract void applyUserPlugin();
@@ -285,7 +318,7 @@ protected void makeDecompTasks(final String globalPattern, final String localPat
285318
makeStart.addReplacement("@@ASSETINDEX@@", delayedString(REPLACE_ASSET_INDEX));
286319
makeStart.addReplacement("@@ASSETSDIR@@", delayedFile(REPLACE_CACHE_DIR + "/assets"));
287320
makeStart.addReplacement("@@NATIVESDIR@@", delayedFile(DIR_NATIVES));
288-
makeStart.addReplacement("@@CLIENTTWEAKER@@", delayedString(REPLACE_CLIENT_TWEAKER));
321+
makeStart.addReplacement("@@TWEAKERCLIENT@@", delayedString(REPLACE_CLIENT_TWEAKER));
289322
makeStart.addReplacement("@@BOUNCERCLIENT@@", delayedString(REPLACE_CLIENT_MAIN));
290323

291324
makeStart.dependsOn(TASK_DL_ASSET_INDEX, TASK_DL_ASSETS, TASK_EXTRACT_NATIVES);
@@ -639,6 +672,40 @@ protected void makeObfSource()
639672
sourceJar.dependsOn(main.getCompileJavaTaskName(), main.getProcessResourcesTaskName(), retromap);
640673
}
641674
}
675+
676+
protected void makeRunTasks()
677+
{
678+
if (this.hasClientRun())
679+
{
680+
JavaExec exec = makeTask("runClient", JavaExec.class);
681+
exec.getOutputs().dir(delayedFile(REPLACE_RUN_DIR));
682+
exec.setMain(GRADLE_START_CLIENT);
683+
exec.workingDir(delayedFile(REPLACE_RUN_DIR));
684+
exec.setStandardOutput(System.out);
685+
exec.setErrorOutput(System.err);
686+
687+
exec.setGroup("ForgeGradle");
688+
exec.setDescription("Runs the Minecraft client");
689+
690+
exec.dependsOn("makeStart");
691+
}
692+
693+
if (this.hasClientRun())
694+
{
695+
JavaExec exec = makeTask("runServer", JavaExec.class);
696+
exec.getOutputs().dir(delayedFile(REPLACE_RUN_DIR));
697+
exec.setMain(GRADLE_START_SERVER);
698+
exec.workingDir(delayedFile(REPLACE_RUN_DIR));
699+
exec.setStandardOutput(System.out);
700+
exec.setStandardInput(System.in);
701+
exec.setErrorOutput(System.err);
702+
703+
exec.setGroup("ForgeGradle");
704+
exec.setDescription("Runs the Minecraft Server");
705+
706+
exec.dependsOn("makeStart");
707+
}
708+
}
642709

643710
protected final TaskDepDummy getDummyDep(String config, DelayedFile dummy, String taskName)
644711
{

0 commit comments

Comments
 (0)