Remove conditions

Will be replaced by another feature
This commit is contained in:
Timo Ley 2022-06-09 23:05:45 +02:00
parent f976226b20
commit 44372968e6
5 changed files with 3 additions and 169 deletions

View file

@ -13,7 +13,6 @@
- [File Object](schema/file.md)
- [Install Object](schema/install.md)
- [Relation Object](schema/relation.md)
- [Conditions Object](schema/conditions.md)
- [Repository Object](schema/repository.md)
- [Meta Object](schema/meta.md)

View file

@ -24,8 +24,7 @@ or [files](../schema/file.md).
- `required` This flag specifies, that the related addon or file is required for the addon. If the addon gets installed,
than any relation or file, which has this flag set, also has to be installed.
- `optional` This flag specifies, that the related addon or file is optional for this addon. If the addon gets installed,
the user should be able to choose, whether he wants to install the relation or file with this flag, or not. This flag
can be used in combination with the [conditions](../schema/conditions.md) property.
the user should be able to choose, whether he wants to install the relation or file with this flag, or not.
### Relation specific

View file

@ -1,154 +0,0 @@
# Conditions Object
```json
{
"require": ["some-addon"],
"companion": ["another-addon"],
"exclude": ["incompatible-addon"]
}
```
## Optional properties
All addons in the arrays are specified as addon IDs or namespaced addon IDs. They all need to be specified
as optional relations in this version.
### require
This is an array of addon IDs, which are required for this relation or file and must be present.
### companion
This is an array of addon IDs which go together with this relation/file.
This field is fairly complex.
The `companion` field is used to represent a relation between an optional file/relation, and an optional relation.
This means, if one of them isn't optional, an error occurs.
The behaviour can be summarized as such:
1. The relation/file that declares companions is only installed if all companions are also installed.
2. A relation that is a companion also will not be installed, unless **all** files/relations of that
relation declare it as a companion are also installed.
This can be described as the relation and the relation/file that is a companion of the relation requiring **eachother**.
The reason this isn't done by declaring a `require` condition both on the addon/file and the file, is that files
cannot be referenced, as only addon-ids are used.
<!--this table has to be in HTML and without indentation to allow markdown code blocks-->
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Installed if</th>
<th>Flags</th>
<th>Conditions</th>
</tr>
</thead>
<tbody>
<tr>
<td>companion-relation</td>
<td>relation</td>
<td><em>example-file</em> is installed</td>
<td>
```json
["optional"]
```
</td>
<td>
```json
{}
```
</td>
</tr>
<tr>
<td>example-file</td>
<td>file</td>
<td><em>companion-relation</em> is installed</td>
<td>
```json
["optional"]
```
</td>
<td>
<!-- prettier-ignore -->
```json
{
"companion": [
"companion-relation"
]
}
```
</td>
</tr>
</tbody>
</table>
An example of this would be to present alternative files for different modloaders in the case of a mod.
Let's consider this example addon:
```json
{
"addonscript": { "version": 2 },
"id": "example-addon",
"version": "0.1.0",
"relations": [
{
"id": "forge",
"version": "37.0",
"flags": ["optional"]
},
{
"id": "fabric",
"version": "9.0",
"flags": ["optional"]
},
{
"id": "fabric-api",
"version": "0.42.1",
"flags": ["optional"],
"conditions": {
"companion": ["fabric"]
}
}
],
"files": [
{
"id": "example-addon-forge",
"url": "./example_addon_forge.jar",
"conditions": {
"companion": ["forge"]
},
"flags": ["optional"]
},
{
"id": "example-addon-fabric",
"url": "./example_addon_fabric.jar",
"conditions": {
"companion": ["fabric"]
},
"flags": ["optional"]
}
]
}
```
This example addon provides files for forge and fabric, the files both having their
respective modloaders as companions. This allows a mod to ship files for both modloaders
without using different addons.
Also note that the addon also adds the `fabric` relation to the `fabric-api` relation.
Thus it will also be installed if the fabric version of the mod is used.
### exclude
This is an array of addon IDs, which can't be installed together with this relation or file.

View file

@ -7,8 +7,7 @@
"flags": [],
"maven": {},
"install": [],
"sha1": "somesha1checksum",
"conditions": {}
"sha1": "somesha1checksum"
}
```
@ -46,10 +45,6 @@ inherit the [side flags](../concepts/flags.md#side-flags) from the [version](add
This is the sha1 checksum of the file. Although the checksum is optional, it is strongly recommended.
### conditions
This is a [conditions object](conditions.md). It can only be used, if the [optional flag](../concepts/flags.md) was set.
### maven
```json

View file

@ -6,8 +6,7 @@
"namespace": "com.example",
"version": "[1.0]",
"repositories": ["repo1"],
"flags": [],
"conditions": {}
"flags": []
}
```
@ -44,7 +43,3 @@ the namespace from all defined repositories.
This is an array of [flags](../concepts/flags.md) for this relation. If this property is not present in a relation object, the relation will
inherit the [side flags](../concepts/flags.md#side-flags) from the [version](addon.md) and have the `required` flag set by default.
### conditions
This is a [conditions object](conditions.md). It can only be used, if the [optional flag](../concepts/flags.md) was set.