Class SlimeLauncherOptions

java.lang.Object
net.minecraftforge.gradle.SlimeLauncherOptions
All Implemented Interfaces:
org.gradle.api.Named

public abstract sealed class SlimeLauncherOptions extends Object implements org.gradle.api.Named

The configuration options for Slime Launcher tasks.

The launch tasks generated by the Minecraft extension are specialized JavaExec tasks that are designed to work with Slime Launcher, Minecraft Forge's dedicated launcher for the development environment. While the implementing task class remains internal (can still be configured as type JavaExec), these options exist to allow consumers to alter or add pre-defined attributes to the run configurations as needed.

For example, changing the main class of the launch task as a JavaExec task will cause it to not use Slime Launcher and skip its configurations for it. If a consumer wishes to use Slime Launcher but change the main class it delegates to after initial setup, that can be done using setMainClass(String) or setMainClass(Provider).

API Note:
This class is public-facing as a class instead of an interface to satisfy the requirement that Gradle's NamedDomainObjectContainer must house a class that implements the Named interface. Like the other public-facing interface APIs in ForgeGradle, this class remains sealed and is implemented by a package-private class that cannot be directly accessed.
  • Method Details

    • getName

      public final String getName()

      The name of the Slime Launcher configuration.

      Note that this is not the same as the resulting task name. This is what you see when you declare a run configuration in your buildscript.

      Specified by:
      getName in interface org.gradle.api.Named
      Returns:
      The name of this configuration
    • getTaskName

      @Input public final org.gradle.api.provider.Property<String> getTaskName()

      The name to use for the Gradle task.

      By default, this will be this configuration's name, capitalized, appended to "run" (i.e. "client" -> "runClient").

      Returns:
      A property for the name of the task
    • getMainClass

      @Input @Optional public final org.gradle.api.provider.Property<String> getMainClass()

      The main class for Slime Launcher to use.

      This is the class that will be invoked by Slime Launcher, not the main class of the JavaExec task that will be produced from these options.

      Returns:
      A property for the main class
    • getArgs

      @Input @Optional public final org.gradle.api.provider.ListProperty<String> getArgs()

      The arguments to pass to the main class.

      This is the arguments that will be passed to the main class through Slime Launcher, not the arguments for Slime Launcher itself.

      Returns:
      A property for the arguments to pass to the main class
    • getJvmArgs

      @Input @Optional public final org.gradle.api.provider.ListProperty<String> getJvmArgs()

      The JVM arguments to use.

      These are applied immediately when Slime Launcher is executed. A reminder that Slime Launcher is not a re-launcher but a dev-environment bootstrapper.

      Returns:
      A property for the JVM arguments
    • getClasspath

      @InputFiles @Optional @Classpath public final org.gradle.api.file.FileCollection getClasspath()

      The classpath to use.

      The classpath in question must include Slime Launcher in it. By default, the minecraft extension adds Slime Launcher as a dependency to the consuming project's runtimeClasspath configuration.

      Keep in mind that if the JavaExec task is configured to have a different main class, the classpath does not need to include Slime Launcher.

      Returns:
      The classpath to use
    • getMinHeapSize

      @Input @Optional public final org.gradle.api.provider.Property<String> getMinHeapSize()

      The minimum memory heap size to use.

      Working with this property is preferred over manually using the -Xms argument in the JVM arguments.

      Returns:
      A property for the minimum heap size
    • getMaxHeapSize

      @Input @Optional public final org.gradle.api.provider.Property<String> getMaxHeapSize()

      The maximum memory heap size to use.

      Working with this property is preferred over manually using the -Xmx argument in the JVM arguments.

      Returns:
      A property for the maximum heap size
    • getSystemProperties

      @Input @Optional public final org.gradle.api.provider.MapProperty<String,Object> getSystemProperties()
      The system properties to use.
      Returns:
      A property for the system properties
    • getEnvironment

      @Input @Optional public final org.gradle.api.provider.MapProperty<String,Object> getEnvironment()
      The environment variables to use.
      Returns:
      A property for the environment variables
    • getWorkingDir

      @InputDirectory public final org.gradle.api.file.DirectoryProperty getWorkingDir()

      The working directory to use.

      By default, this will be run/name.

      To clarify: this is the working directory of the Java process. Slime Launcher uses absolute file locations to place its caches and metadata, which do not interfere with the working directory.

      Returns:
      A property for the working directory
    • setTaskName

      public final void setTaskName(String taskName)
      Sets the name to use for the Gradle task.
      Parameters:
      taskName - The name
      See Also:
    • setTaskName

      public final void setTaskName(org.gradle.api.provider.Provider<String> taskName)
      Sets the name to use for the Gradle task.
      Parameters:
      taskName - The name
      See Also:
    • setMainClass

      public final void setMainClass(String mainClass)
      Sets the main class for Slime Launcher to use.
      Parameters:
      mainClass - The main class
      See Also:
    • setMainClass

      public final void setMainClass(org.gradle.api.provider.Provider<String> mainClass)
      Sets the main class for Slime Launcher to use.
      Parameters:
      mainClass - The main class
      See Also:
    • args

      public final void args(String args)
      Adds to the arguments to pass to the main class.
      Parameters:
      args - The arguments to add
      See Also:
      API Note:
      To add multiple arguments, use args(String...)
    • args

      public final void args(String... args)
      Adds to the arguments to pass to the main class.
      Parameters:
      args - The arguments to add
      See Also:
      API Note:
      Unlike setArgs(String...), this method does not replace the existing arguments.
    • args

      public final void args(Iterable<String> args)
      Adds to the arguments to pass to the main class.
      Parameters:
      args - The arguments to add
      See Also:
      API Note:
      Unlike setArgs(Iterable), this method does not replace the existing arguments.
    • args

      public final void args(org.gradle.api.provider.Provider<? extends Iterable<String>> args)
      Adds to the arguments to pass to the main class.
      Parameters:
      args - The arguments to add
      See Also:
      API Note:
      Unlike setArgs(Provider), this method does not replace the existing arguments.
    • setArgs

      public final void setArgs(String... args)
      Sets the arguments to pass to the main class.
      Parameters:
      args - The arguments
      See Also:
      API Note:
      This method will replace any existing arguments. To add to existing arguments, use args(String...).
    • setArgs

      public final void setArgs(Iterable<String> args)
      Sets the arguments to pass to the main class.
      Parameters:
      args - The arguments
      See Also:
      API Note:
      This method will replace any existing arguments. To add to existing arguments, use args(Iterable).
    • setArgs

      public final void setArgs(org.gradle.api.provider.Provider<? extends Iterable<String>> args)
      Sets the arguments to pass to the main class.
      Parameters:
      args - The arguments
      See Also:
      API Note:
      This method will replace any existing arguments. To add to existing arguments, use args(Provider).
    • jvmArgs

      public final void jvmArgs(String jvmArgs)
      Adds to the JVM arguments to use.
      Parameters:
      jvmArgs - The JVM argument to add
      See Also:
      API Note:
      To add multiple arguments, use jvmArgs(String...)
    • jvmArgs

      public final void jvmArgs(String... jvmArgs)
      Adds to the JVM arguments to use.
      Parameters:
      jvmArgs - The JVM arguments to add
      See Also:
      API Note:
      Unlike setJvmArgs(String...), this method does not replace the existing arguments.
    • jvmArgs

      public final void jvmArgs(Iterable<String> jvmArgs)
      Adds to the JVM arguments to use.
      Parameters:
      jvmArgs - The JVM arguments to add
      See Also:
      API Note:
      Unlike setJvmArgs(Iterable), this method does not replace the existing arguments.
    • jvmArgs

      public final void jvmArgs(org.gradle.api.provider.Provider<? extends Iterable<String>> jvmArgs)
      Adds to the JVM arguments to use.
      Parameters:
      jvmArgs - The JVM arguments to add
      See Also:
      API Note:
      Unlike setJvmArgs(Provider), this method does not replace the existing arguments.
    • setJvmArgs

      public final void setJvmArgs(String... jvmArgs)
      Sets the JVM arguments to use.
      Parameters:
      jvmArgs - The arguments
      See Also:
      API Note:
      This method will replace any existing arguments. To add to existing arguments, use jvmArgs(String...).
    • setJvmArgs

      public final void setJvmArgs(Iterable<String> jvmArgs)
      Sets the JVM arguments to use.
      Parameters:
      jvmArgs - The arguments
      See Also:
      API Note:
      This method will replace any existing arguments. To add to existing arguments, use jvmArgs(Iterable).
    • setJvmArgs

      public final void setJvmArgs(org.gradle.api.provider.Provider<? extends Iterable<String>> jvmArgs)
      Sets the JVM arguments to use.
      Parameters:
      jvmArgs - The arguments
      See Also:
      API Note:
      This method will replace any existing arguments. To add to existing arguments, use jvmArgs(Provider).
    • classpath

      public final void classpath(Object... classpath)
      Adds to the classpath to use.
      Parameters:
      classpath - The classpath to include with the existing classpath
      See Also:
      API Note:
      Unlike setClasspath(Object...), this method does not replace the existing classpath.
    • classpath

      public final void classpath(Iterable<?> classpath)
      Adds to the classpath to use.
      Parameters:
      classpath - The classpath to include with the existing classpath
      See Also:
      API Note:
      Unlike setClasspath(Iterable), this method does not replace the existing classpath.
    • classpath

      public final void classpath(org.gradle.api.provider.Provider<? extends Iterable<?>> classpath)
      Adds to the classpath to use.
      Parameters:
      classpath - The classpath to include with the existing classpath
      See Also:
      API Note:
      Unlike setClasspath(Provider), this method does not replace the existing classpath.
    • classpath

      public final void classpath(org.gradle.api.file.FileCollection classpath)
      Adds to the classpath to use.
      Parameters:
      classpath - The classpath to include with the existing classpath
      See Also:
      API Note:
      Unlike setClasspath(FileCollection), this method does not replace the existing classpath.
    • setClasspath

      public final void setClasspath(Object... classpath)
      Sets the classpath to use.
      Parameters:
      classpath - The classpath
      See Also:
      API Note:
      This method will replace the existing classpath. To add to it, use classpath(Object...).
    • setClasspath

      public final void setClasspath(Iterable<?> classpath)
      Sets the classpath to use.
      Parameters:
      classpath - The classpath
      See Also:
      API Note:
      This method will replace the existing classpath. To add to it, use classpath(Iterable).
    • setClasspath

      public final void setClasspath(org.gradle.api.provider.Provider<? extends Iterable<?>> classpath)
      Sets the classpath to use.
      Parameters:
      classpath - The classpath
      See Also:
      API Note:
      This method will replace the existing classpath. To add to it, use classpath(Provider).
    • setClasspath

      public final void setClasspath(org.gradle.api.file.FileCollection classpath)
      Sets the classpath to use.
      Parameters:
      classpath - The classpath
      See Also:
      API Note:
      This method will replace the existing classpath. To add to it, use classpath(FileCollection).
    • setMinHeapSize

      public final void setMinHeapSize(String minHeapSize)
      Sets the minimum memory heap size to use.
      Parameters:
      minHeapSize - The minimum heap size
      See Also:
    • setMinHeapSize

      public final void setMinHeapSize(org.gradle.api.provider.Property<String> minHeapSize)
      Sets the minimum memory heap size to use.
      Parameters:
      minHeapSize - The minimum heap size
      See Also:
    • setMaxHeapSize

      public final void setMaxHeapSize(String maxHeapSize)
      Sets the maximum memory heap size to use.
      Parameters:
      maxHeapSize - The maximum heap size
      See Also:
    • setMaxHeapSize

      public final void setMaxHeapSize(org.gradle.api.provider.Property<String> maxHeapSize)
      Sets the maximum memory heap size to use.
      Parameters:
      maxHeapSize - The maximum heap size
      See Also:
    • systemProperty

      public final void systemProperty(String name, Object value)
      Adds a single system property to use.
      Parameters:
      name - The name
      value - The value
      See Also:
      API Note:
      To add multiple system properties at once, use systemProperties(Provider).
    • systemProperties

      public final void systemProperties(Map<String,?> properties)
      Adds to the system properties to use.
      Parameters:
      properties - The system properties
      See Also:
      API Note:
      Unlike setSystemProperties(Map), this method does not replace the existing system properties. To add a single property, use systemProperty(String,Object).
    • systemProperties

      public final void systemProperties(org.gradle.api.provider.Provider<? extends Map<String,?>> properties)
      Adds to the system properties to use.
      Parameters:
      properties - The system properties
      See Also:
      API Note:
      Unlike setSystemProperties(Provider), this method does not replace the existing system properties. To add a single property, use systemProperty(String,Object).
    • setSystemProperties

      public final void setSystemProperties(Map<String,?> properties)
      Sets the system properties to use.
      Parameters:
      properties - The system properties
      See Also:
      API Note:
      This method will replace any existing system properties. To add to them, use systemProperties(Map) or systemProperty(String,Object).
    • setSystemProperties

      public final void setSystemProperties(org.gradle.api.provider.Provider<? extends Map<String,?>> properties)
      Sets the system properties to use.
      Parameters:
      properties - The system properties
      See Also:
      API Note:
      This method will replace any existing system properties. To add to them, use systemProperties(Provider) or systemProperty(String,Object).
    • environment

      public final void environment(String name, Object value)
      Adds a single environment variable to use.
      Parameters:
      name - The name
      value - The value
      See Also:
      API Note:
      To add multiple environment variables at once, use environment(Provider).
    • environment

      public final void environment(Map<String,?> properties)
      Adds to the environment variables to use.
      Parameters:
      properties - The environment variables
      See Also:
      API Note:
      Unlike setEnvironment(Map), this method does not replace the existing environment variables. To add a single variable, use environment(String,Object).
    • environment

      public final void environment(org.gradle.api.provider.Provider<? extends Map<String,?>> properties)
      Adds to the environment variables to use.
      Parameters:
      properties - The environment variables
      See Also:
      API Note:
      Unlike setEnvironment(Provider), this method does not replace the existing environment variables. To add a single variable, use environment(String,Object).
    • setEnvironment

      public final void setEnvironment(Map<String,?> environment)
      Sets the environment variables to use.
      Parameters:
      environment - The environment variables
      See Also:
      API Note:
      This method will replace any existing environment variables. To add to them, use environment(Map) or environment(String,Object).
    • setEnvironment

      public final void setEnvironment(org.gradle.api.provider.Provider<? extends Map<String,?>> environment)
      Sets the environment variables to use.
      Parameters:
      environment - The environment variables
      See Also:
      API Note:
      This method will replace any existing environment variables. To add to them, use environment(Provider) or environment(String,Object).
    • setWorkingDir

      public final void setWorkingDir(File workingDir)

      Sets the working directory to use.

      The given file must be a directory.

      Parameters:
      workingDir - The working directory
      See Also:
    • setWorkingDir

      public final void setWorkingDir(org.gradle.api.file.Directory workingDir)
      Sets the working directory to use.
      Parameters:
      workingDir - The working directory
      See Also:
    • setWorkingDir

      public final void setWorkingDir(org.gradle.api.provider.Provider<? extends org.gradle.api.file.Directory> workingDir)
      Sets the working directory to use.
      Parameters:
      workingDir - The working directory
      See Also:
      API Note:
      Note that the provider given must hold a Directory, not a standard File. If you must use a standard file object, use setWorkingDir(File).