3.3 KiB
Conditions Object
{
"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:
- The relation/file that declares companions is only installed if all companions are also installed.
- 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.
Name | Type | Installed if | Flags | Conditions |
---|---|---|---|---|
companion-relation | relation | example-file is installed |
|
|
example-file | file | companion-relation is installed |
|
|
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:
{
"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.