From f2ca4f5177403c36719d26dcc5aec1d44452941c Mon Sep 17 00:00:00 2001 From: Timo Ley Date: Fri, 21 Apr 2023 19:56:33 +0200 Subject: [PATCH] launch configuration overhaul --- docs/SUMMARY.md | 1 - docs/api/features/builder.md | 7 ++-- docs/concepts/flags.md | 12 ++++--- docs/concepts/instance.md | 14 ++++---- docs/concepts/minecraft.md | 12 +++++-- docs/schema/api_builder_response.md | 11 ++++-- docs/schema/launch.md | 54 +++++++---------------------- docs/schema/library.md | 24 ------------- docs/schema/manifest.md | 15 +++++--- 9 files changed, 60 insertions(+), 90 deletions(-) delete mode 100644 docs/schema/library.md diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index b4d1c63..6b84375 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -20,7 +20,6 @@ - [Repository Object](schema/repository.md) - [Meta Object](schema/meta.md) - [Launch Config Object](schema/launch.md) - - [Library Object](schema/library.md) - [API Addon Object](schema/api_addon.md) - [API File Object](schema/api_file.md) - [Environment Builder Request Object](schema/api_builder_request.md) diff --git a/docs/api/features/builder.md b/docs/api/features/builder.md index ec5c397..b285c8e 100644 --- a/docs/api/features/builder.md +++ b/docs/api/features/builder.md @@ -35,10 +35,9 @@ RECOMMENDED to have a timeout of at least 5 minutes, better about 10 minutes. After the launch environment was build by the API instance, this endpoint will respond with a list of [file objects](../../schema/api_builder_response.md#files), the AddonScript [schema version](../../schema/api_builder_response.md#addonscript) for the response and the -[launch configuration](../../schema/api_builder_response.md#launch) for this addon. These files MUST be considered -to be part of the [files](../../schema/manifest.md#files) of the addon, from which the request was send -and can then be installed. The launch configuration will override the -[local launch configuration](../../schema/manifest.md#launch) entirely. +[launch configuration](../../concepts/instance.md#launch-configurations) for this addon. +These files MUST be considered to be part of the [files](../../schema/manifest.md#files) of the addon, +from which the request was send and can then be installed. The launch configuration will override the entirely. #### Request Body: diff --git a/docs/concepts/flags.md b/docs/concepts/flags.md index 3b0c19e..3dfb98a 100644 --- a/docs/concepts/flags.md +++ b/docs/concepts/flags.md @@ -33,9 +33,10 @@ addon manifest, including for which side it is available and for which side it i that they can't be installed together in the same instance. For a file this flag specifies, that the file can't be installed on the side which has this flag set. - `launch` This flag is only valid for relations of [instance addons](instance.md). It specifies, that the - [launch configuration](../schema/launch.md) should be inherited from the related addon (which MUST als be an - instance addon or [Minecraft](./minecraft.md) itself). The inherited launch configuration, MAY still be modified - using the [launch object](../schema/launch.md) of this addon. This flag always also implies any effect of `required`. + [launch configuration](../schema/launch.md) should be inherited from the related addon (which MUST also be an + instance addon). The inherited launch configuration, MAY still be modified + using the [launch object](../schema/launch.md) of this addon or by adding libraries with the `library` flag. + This flag always also implies any effect of `required`. - `env` This flag is only valid for relations of [instance addons](instance.md). An addon, that is inheriting the launch configuration from one, which uses the [environment builder](../api/features/builder.md), uses this flag to tell AddonScript, which version of the `expected` @@ -48,4 +49,7 @@ addon manifest, including for which side it is available and for which side it i It is used together with the `required` or `optional` flag to specify, which addons are required for the launch environment, which are optional and which versions of them are valid. If an addon, which uses the [environment builder](../api/features/builder.md), gets manually installed, meaning not as a dependency, the user - SHOULD be asked, which optional `expected` addons and which version of each `expected` addon will be requested. \ No newline at end of file + SHOULD be asked, which optional `expected` addons and which version of each `expected` addon will be requested. +- `library` This flag is only valid for files of [instance addons](instance.md). It specifies, that this file + will be added as a libary to the [launch configuration](../concepts/instance.md#launch-configurations) of this + addon. \ No newline at end of file diff --git a/docs/concepts/instance.md b/docs/concepts/instance.md index 9b83aa0..682c1d9 100644 --- a/docs/concepts/instance.md +++ b/docs/concepts/instance.md @@ -3,7 +3,8 @@ Instance addons represent instances of Minecraft itself, while non-instance addons have to be installed into an existing instance of Minecraft. An instance addon MUST have a launch configuration for each side by inheriting the launch configuration of another -instance addon or [Minecraft](./minecraft.md) itself using the `launch` [flag](flags.md). +instance addon using the `launch` [flag](flags.md) or by modifying the [Minecraft](./minecraft.md) +launch configuration directly using a [launch config object](../schema/launch.md). Inheriting a launch configuration MAY be recursive which means, that an instance addon MAY inherit it's launch configuration from another addon, which itself inherits it. Instance addons MAY modify inherited launch configurations using a @@ -22,11 +23,12 @@ without this restriction. Instance launch configurations are always based on a [Minecraft launch config](./minecraft.md#launch-configuration) and MAY have modifications -applied to it. Modifications are done by [launch config objects](../schema/launch.md) and -can override the main class or main file and include additional libraries and arugments. +applied to it. Modifications are done by [launch config objects](../schema/launch.md), which +can override the main class or main file and include additional arugments, and by adding +libraries using the `library` [flag](flags.md). When launching a Minecraft instance, AddonScript implementations SHOULD take the Minecraft launch configuration as specified [here](./minecraft.md#launch-configuration) and then apply -all modifications by instance addons in the instance stack to it. When overriding the main class -or file, an instance addon has always priority over the instance addon, from which it inherits -the launch config. When adding arguments, they are always appended at the end of those +all modifications by instance addons in the launch inheritance stack to it. +When overriding the main class or file, an instance addon has always priority over the instance addon, +from which it inherits the launch config. When adding arguments, they are always appended at the end of those arguments from the inherited launch config. \ No newline at end of file diff --git a/docs/concepts/minecraft.md b/docs/concepts/minecraft.md index 42d3ec7..18d8c2c 100644 --- a/docs/concepts/minecraft.md +++ b/docs/concepts/minecraft.md @@ -2,9 +2,15 @@ Minecraft itself can be used as a [relation](../schema/relation.md) in AddonScript [manifests](../schema/manifest.md). This way addons MAY define, with which versions -of Minecraft they are compatible. [Instance addons](./instance.md) MUST either -directly or indirectly inherit their launch configuration from Minecraft. This -way it is also defined, on which version of Minecraft an instance is base on. +of Minecraft they are compatible. [Instance addons](./instance.md) MUST have +their [launch configuration](./instance.md#launch-configurations) based on +the launch configuration of a Minecraft version. This way it is also defined, +on which version of Minecraft an instance is base on. The version of Minecraft, +which will be used, MUST be defined either by using the +`included` [relational flag](./flags.md#relational-flags) with an exact Minecraft +version or by using the `expected` [relational flag](./flags.md#relational-flags), +while the exact version later gets defined by the user or by the `env` +[relational flag](./flags.md#relational-flags). There is no AddonScript manifest for Minecraft, AddonScript implementations MUST know the [ID and namespace](#id-and-namespace) of Minecraft and how to handle it as specified below. diff --git a/docs/schema/api_builder_response.md b/docs/schema/api_builder_response.md index 6a71e03..743ea0e 100644 --- a/docs/schema/api_builder_response.md +++ b/docs/schema/api_builder_response.md @@ -4,7 +4,8 @@ { "addonscript": {}, "files": [], - "launch": {} + "launch_client": {}, + "launch_server": {}, } ``` @@ -22,6 +23,10 @@ environment was build, and MUST be treated equal to the [files in the manifest]( ## Optional properties -### launch +### launch_client -This is a [Launch Config object](./launch.md) which can be used, to modify the launch configuration of the instance. \ No newline at end of file +This is a [Launch Config object](./launch.md) for the client, which can be used, to modify the launch configuration of the instance. + +### launch_server + +This is a [Launch Config object](./launch.md) for the server, which can be used, to modify the launch configuration of the instance. \ No newline at end of file diff --git a/docs/schema/launch.md b/docs/schema/launch.md index 783982b..7f416e6 100644 --- a/docs/schema/launch.md +++ b/docs/schema/launch.md @@ -1,46 +1,12 @@ # Launch Config Object -```json -{ - "libraries": [], - "java_version": 8, - "client": {}, - "server": {} -} -``` - -## Optional properties - - -### libraries - -This is an array of [libraries](library.md), which are added to the instance in -addition to those of inherited launch configurations. - -### java_version - -This is the recommended major Java version for this instance. It MAY work on other -Java versions, but there is no guarantee for that. This overrides inherited `java_version` -settings. - -### client - -This is a [side config object](#side-config-object) containing the launch configuration -for the client. - -### server - -This is a [side config object](#side-config-object) containing the launch configuration -for the server. - -# Side Config Object - ```json { "main_file": "somefilequalifier", "main_class": "com.example.SomeClass", "arguments": ["--someArgument"], - "jvm_arguments": ["-Djvmargument"] + "jvm_arguments": ["-Djvmargument"], + "java_version": 8 } ``` @@ -50,10 +16,10 @@ for the server. This is the [qualifier](./file.md#qualifier) of the main jar file for this side. It will override any inherited main file for this side. -That file MUST be specified in the [manifest](./manifest.md), which -uses this library. Setting this to an empty string will indicate, that +That file MUST be specified in the [manifest](./manifest.md) of this +addon. Setting this to an empty string will indicate, that there is no main file for this instance, in which case the -[main_file](#mainfile) MUST be explicitly configured. +[main_class](#mainclass) MUST be explicitly configured. ### main_class @@ -64,7 +30,7 @@ specified in of manifest of the [main jar file](#mainfile) should be used. ### arguments -This is an array of arguments, which will be used to launch the instance +This is an array of game arguments, which will be used to launch the instance in addition to inherited arguments. They will be appended after inherited arguments. @@ -72,4 +38,10 @@ arguments. This is an array of JVM arguments, which will be used to launch the instance in addition to inherited JVM arguments. They will be appended after inherited -JVM arguments. \ No newline at end of file +JVM arguments. + +### java_version + +This is the recommended major Java version for this instance. It MAY work on other +Java versions, but there is no guarantee for that. This overrides inherited `java_version` +settings. \ No newline at end of file diff --git a/docs/schema/library.md b/docs/schema/library.md deleted file mode 100644 index f420af7..0000000 --- a/docs/schema/library.md +++ /dev/null @@ -1,24 +0,0 @@ -# Library Object - -```json -{ - "file": "somequalifier", - "side": "both" -} -``` - -## Required properties - -### file - -This is the [qualifier](./file.md#qualifier) of the file of this library. -That file MUST be specified in the [manifest](./manifest.md), which -uses this library. - -### Optional properties - -### side - -This specifies, for which side this library should be used. Valid values -are `client`, `server` and `both`. If this property is not present, -it defaults to `both`. \ No newline at end of file diff --git a/docs/schema/manifest.md b/docs/schema/manifest.md index 75c4369..1136c55 100644 --- a/docs/schema/manifest.md +++ b/docs/schema/manifest.md @@ -12,7 +12,8 @@ "repositories": [], "instance": false, "use_builder": false, - "launch": {}, + "launch_client": {}, + "launch_server": {}, "meta": {} } ``` @@ -70,10 +71,16 @@ This is a boolean which specifies, if this addon will use the [environment build Only valid if [instance](#instance) is `true`. If this property is not present, it defaults to `false`. -### launch +### launch_client -This is a [launch config object](launch.md) which can be used to modify the -inherited launch configuration of this instance. +This is a [launch config object](launch.md) for the client, +which can be used to modify the launch configuration of this instance. +Only available for [instance addons](../concepts/instance.md). + +### launch_server + +This is a [launch config object](launch.md) for the server, +which can be used to modify the launch configuration of this instance. Only available for [instance addons](../concepts/instance.md). ### meta