Merge remote-tracking branch 'origin/master'

This commit is contained in:
Timo Ley 2021-07-30 13:42:56 +02:00
commit 8617ab8159
10 changed files with 76 additions and 70 deletions

View file

@ -5,30 +5,30 @@ This repository contains the AddonScript specification.
## What is AddonScript?
AddonScript is a format to distribute Minecraft addons. An addon could be anything, which is installed
to the Minecraft game, like a mod, modpack, modloader, texturepack or even a world could be an addon.
AddonScript can be used for example to define, how addons should be installed or to specify dependencies
for addons. This way addon creators just have to publish the AddonScript file for their addon and let
into the Minecraft game, like a mod, modpack, modloader, texturepack or even a world.
AddonScript can be used for example to define how addons are installed, or to specify dependencies
for addons. This way, addon creators just have to publish the AddonScript file for their addon and let
AddonScript compatible tools (for example launchers) install them.
## The values of AddonScript
### Open
AddonScript can be used by everyone. There is no company or economic interest behind AddonScript,
it is intended to be an open standard, which can be implemented by anyone who like to. Anyone can
AddonScript can be used by everyone. There is no company or economic interest behind AddonScript.
It is intended to be an open standard, which can be implemented by anyone who likes to. Anyone can
contribute ideas to the AddonScript specification.
### Independent
AddonScript depends on nothing, except Minecraft itself (and Java). This means, that the specification
does not depend on existing APIs and formats like Curseforge and it also does not reference any specific
modloader like Forge or Fabric, instead they are itself addons, which can be defined using AddonScript.
AddonScript depends on nothing, except Minecraft itself (and Java). This means that the specification
does not depend on existing APIs and formats like Curseforge. It also does not reference any specific
modloader like Forge or Fabric, instead they are themselves addons, which can be defined using AddonScript.
This means, that AddonScript is not bound to a specific set of modloaders, instead you can use any
modloader you want.
modloader.
### Universal
AddonScript is not bound to any specific use case like just for modpack or just for mods. Instead it
is considered to be a universal format, which could handle anything, that should be installed into
the Minecraft game. AddonScript could handle modloaders, mods, modpacks, texturepacks and even worlds
and maybe other things, we can't think of.
AddonScript is not bound to any specific use case like just for modpacks or just for mods. Instead it
is considered to be a universal format, which can handle anything, that is installed into
the Minecraft game. AddonScript can handle modloaders, mods, modpacks, texturepacks and even worlds
and maybe other things as well.

View file

@ -3,39 +3,44 @@
## Install steps
### move
```move [location]``` \
move is simplest install step of all. It just moves the selected file to
`move [location]`
`move` is simplest install step of all. It just moves the selected file to
the given location.
### extract
```extract [location]``` \
extract can be used with zip files, to extract the contents of the zip file
`extract [location]`
`extract` can be used with zip files, to extract the contents of the zip file
to the given location.
### rename
```rename [new name]``` \
rename renames the selected file to the new given filename.
`rename [new name]`
`rename` renames the selected file to the new given filename.
### execute
```execute [location] [arguments]```
execute can be used with an executable jar file. The jar file will be executed with the given arguments and
`execute [location] [arguments]`
`execute` can be used with an executable jar file. The jar file will be executed with the given arguments and
the given location as working directory. A client should inform the user before just executing the file and
ask him for permission to do so and/or it should execute the jar in a closed environment, like a container,
to prevent viruses from being installed.
ask them for permission to do so and/or it should execute the jar in a closed environment like a container
to prevent malicous code from running.
### select
```select [filename]```
select is used to select the file with the given file name for other installation steps.
`select [filename]`
`select` is used to select the file with the given file name for other installation steps.
The file name can also be a relative path, if the file is not directly in the Minecraft directory.
If no file name is given, the selection resets to the original file itself, also if it was already moved to another location.
## Locations
Locations are specified as a relative path from the Minecraft directory. For example `./mods`
would point to the mods directory of the Minecraft instance, to which the file should be installed.
Locations are specified as a relative path from the Minecraft directory to which the file should be installed.
For example `./mods` would point to the mods directory of the Minecraft instance.
## Directories
If the selected file is a directory, then it is treated like a zip file, which means, that you can move and
rename it like normal files, but also use the `extract` install step, to move all contents of the directory
rename it like a normal file, but also use the `extract` install step to move all contents of the directory
to the specified location.

View file

@ -2,9 +2,9 @@
``` json
{
"version": 2
"version": 2
}
```
Currently the AddonScript object only contains the version of AddonScript, the file ist using.
In future versions there may be other information in this.
Currently the AddonScript object only contains the version of AddonScript the file uses.
In future versions, there may be other information added to this.

View file

@ -2,13 +2,13 @@
``` json
{
"id": "modfile",
"url": "https://example.com/mymod.jar",
"flags": [],
"install": [
"move mods"
],
"sha1": "somesha1checksum"
"id": "modfile",
"url": "https://example.com/mymod.jar",
"flags": [],
"install": [
"move mods"
],
"sha1": "somesha1checksum"
}
```
@ -16,10 +16,11 @@
### id
This is the ID of the file. It should only contain lowercase letters, numbers and dashes.
This is the ID of the file. It should only contain **lowercase letters, numbers and dashes**.
If multiple file objects in the same array have the same ID, they are treated as the same file,
which means, that the first one of them in the array will be used unless it can't be retrieved from the URL,
in which case the next one will be used as fallback.
which means that the first one of them in the array will be used unless it can't be retrieved from the URL,
in which case the next one will be used as a fallback.
### url
@ -27,15 +28,15 @@ This is URL, which points to the actual file. The URL can have one of the scheme
### install
This is an array of [install steps](../install.md). They describe, how the file should be installed to the game.
The order in the array correspond to the order, in which the install steps should be applied.
This is an array of [install steps](../install.md). They describe how the file should be installed to the game.
The order in the array corresponds to the order in which the install steps should be applied.
## Optional properties
### flags
This is an array of [flags](../flags.md) for this file. If this property is not present in a file object, the file
will have the flags, which are set as default for files or, if no default was set, it will inherit the flags from the
will have the flags which are set as default for files, or if no default was set, it will inherit the flags from the
associated version, which are applicable for files.
### sha1

View file

@ -15,11 +15,11 @@
### versions
This is a map, with version numbers as keys and URLs to AddonScript files as values. The AddonScript file, to which the URL
points, must include the version number, which is the key in the map, and its addon ID must match the addon ID of the AddonScript
file, which includes the index object.
This is an object, with version numbers as keys and URLs to AddonScript files as values. The AddonScript file which the URL
points to must include the version number, which is the key in the map, and its addon ID must match the addon ID of the AddonScript
file which includes the index object.
### addons
This is a map, with addon IDs as keys and URLs to AddonScript files as values. The addon ID of the AddonScript file, to
This is an object, with addon IDs as keys and URLs to AddonScript files as values. The addon ID of the AddonScript file, to
which the URL points, must match the key in the map.

View file

@ -1,7 +1,7 @@
# Meta Object
Meta objects can be included in [addon](root.md) and [version](version.md) objects.
They should be used, to give information about the addon or the version, like a name,
a description or a changelog. The specification does not require a specific format
for meta objects, therefore you can add any property you want to it. It is however
recommended, to follow conventions for it.
They should be used to give information about the addon or the version, like a **name**,
a **description** or a **changelog**. The specification does not require a specific format
for meta objects, therefore you can add any property to it.
It is however recommended to follow conventions for it.

View file

@ -12,7 +12,7 @@
### id
This is the ID or namespaced ID of the addon, this relation refers to.
This is the ID or namespaced ID of the addon this relation refers to.
### version
@ -23,5 +23,5 @@ This is a [maven version range](https://maven.apache.org/enforcer/enforcer-rules
### flags
This is an array of [flags](../flags.md) for this relation. If this property is not present in a relation object, the relation
will have the flags, which are set as default for relations or, if no default was set, it will inherit the flags from the
associated version, which are applicable for relations.
will have the flags which are set as default for relations or, if no default was set, it will inherit the flags
which are applicable for relations from the associated version.

View file

@ -16,7 +16,7 @@ This is the ID of the repository. It has to be unique to the AddonScript file.
### type
This is the type of the repository. Possible values are ```api``` or ```maven```.
This is the type of the repository. Possible values are `api` or `maven`.
### link

View file

@ -2,13 +2,13 @@
``` json
{
"addonscript": {},
"id": "myaddon",
"versions": [],
"repositories": [],
"index": {},
"flags": {},
"meta": {}
"addonscript": {},
"id": "myaddon",
"versions": [],
"repositories": [],
"index": {},
"flags": {},
"meta": {}
}
```
@ -20,24 +20,24 @@ This is an [AddonScript object](addonscript.md) containing information about the
### id
This is the ID of your addon. It should only contain lowercase letters, numbers and dashes.
This is the ID of your addon. It should only contain **lowercase letters, numbers and dashes**.
## Optional properties
### versions
This is an array of [version objects](version.md). It is possible to define multiple versions of the addon in one AddonScript file,
but in the most cases, there should be just one version per file. Although this property is optional, as you can define versions
but in the most cases there should be just one version per file. Athough this property is optional, as you can define versions
in the [index](index.md), it can be used to define a list of versions, which can be found in the index.
### repositories
This is an array of [repository objects](repository.md). Each repository object defines one repository, from which files or
This is an array of [repository objects](repository.md). Each repository object defines one repository from which files or
addons can be retrieved.
### index
This is an [index object](index.md), which includes links to other versions of this addon or to other related addons.
This is an [index object](index.md) which includes links to other versions of this addon, or to other related addons.
### flags

View file

@ -21,16 +21,16 @@ as they are used to comparing versions.
### files
This is an array of [file objects](file.md), including the files, belonging to this version.
This is an array of [file objects](file.md) including the files belonging to this version.
### relations
This is an array of [relation objects](relation.md), which represents related addons.
This is an array of [relation objects](relation.md) which represents related addons.
### flags
This is an array of [flags](../flags.md) for this version. If this property is not present in a version object, the version
will have the flags, which are set as default for versions.
will have the flags which are set as default for versions.
### meta