documentation:fabric_mod_json
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
documentation:fabric_mod_json [2019/05/26 12:21] – [Dependency resolution] falseresync | documentation:fabric_mod_json [2023/12/27 12:53] – removed - external edit (Unknown date) 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== fabric.mod.json ====== | ||
- | ===== Mandatory fields ===== | ||
- | |||
- | * **schemaVersion** Needed for internal mechanisms. Must always be '' | ||
- | * **id** Defines the mod's identifier - a string of Latin letters, digits, underscores with length from 1 to 63. | ||
- | * **version** Defines the mod's version - a string value, optionally matching the [[https:// | ||
- | |||
- | ===== Optional fields ===== | ||
- | |||
- | ==== Mod loading ==== | ||
- | |||
- | * **environment**: | ||
- | * **'' | ||
- | * **client** Runs on the client side. | ||
- | * **server** Runs on the server side. | ||
- | * **entrypoints** Defines main classes of your mod, that will be loaded. | ||
- | * There are 3 entry points for your mod: | ||
- | * **main** Will be run first. For classes implementing '' | ||
- | * **client** Will be run second and only on the client side. For classes implementing '' | ||
- | * **server** Will be run second and only on the server side. For classes implementing '' | ||
- | * Each entry point can contain any number of classes to load. Classes (or methods or static fields) could be defined in two ways: | ||
- | * If you're using Java, then just list the classes (or else) full names. For example: <code json> | ||
- | " | ||
- | " | ||
- | " | ||
- | ] | ||
- | </ | ||
- | * If you're using any other language, that is compatible with Java and has a Fabric adapter, then you should use following syntax: <code json> | ||
- | " | ||
- | { | ||
- | " | ||
- | " | ||
- | } | ||
- | ] | ||
- | </ | ||
- | * **jars** A list of nested JARs inside your mod's JAR to load. Before using the field, check out [[tutorial: | ||
- | " | ||
- | { | ||
- | " | ||
- | } | ||
- | ] | ||
- | </ | ||
- | * **languageAdapters** A dictionary of adapters for used languages to their adapter classes full names. For example: <code json> | ||
- | " | ||
- | " | ||
- | } | ||
- | </ | ||
- | * **mixins** A list of mixin configuration files. Each entry is the path to the mixin configuration file inside your mod's JAR or an object containing following fields: | ||
- | * **config** The path to the mixin configuration file inside your mod's JAR. | ||
- | * **environment** The same as upper level **environment** field. See above. For example: <code json> | ||
- | " | ||
- | " | ||
- | { | ||
- | " | ||
- | " | ||
- | } | ||
- | ] | ||
- | </ | ||
- | |||
- | ==== Dependency resolution ==== | ||
- | The key of each entry of the objects below is a Mod ID of the dependency. | ||
- | |||
- | The value of each key is a string or array of strings declaring supported version ranges. In the case of an array, an “OR” relationship is assumed - that is, only one range has to match for the collective range to be satisfied. | ||
- | |||
- | In the case of all versions, * is a special string declaring that any version is matched by the range. In addition, exact string matches must be possible regardless of the version type. | ||
- | |||
- | * **depends** For dependencies required to run. Without them a game will crash. | ||
- | * **recommends** For dependencies not required to run. Without them a game will log a warning. | ||
- | * **suggests** For dependencies not required to run. Use this as a kind of metadata. | ||
- | * **breaks** For mods whose together with yours might cause a game crash. With them a game will crash. | ||
- | * **conflicts** For mods whose together with yours cause some kind of bugs, etc. With them a game will log a warning. | ||
- | ==== Metadata ==== | ||
- | |||
- | * **name** Defines the user-friendly mod's name. If not present, assume it matches **id**. | ||
- | * **description** Defines the mod's description. If not present, assume empty string. | ||
- | * **contact** Defines the contact information for the project. It is an object of the following fields: | ||
- | * **email** Contact e-mail pertaining to the mod. Must be a valid e-mail address. | ||
- | * **irc** IRC channel pertaining to the mod. Must be of a valid URL format - for example: '' | ||
- | * **homepage** Project or user homepage. Must be a valid HTTP/HTTPS address. | ||
- | * **issues** Project issue tracker. Must be a valid HTTP/HTTPS address. | ||
- | * **sources** Project source code repository. Must be a valid URL - it can, however, be a specialized URL for a given VCS (such as Git or Mercurial). | ||
- | * The list is not exhaustive - mods may provide additional, non-standard keys (such as **discord**, | ||
- | * **authors** A list of authors of the mod. Each entry is a single name or an object containing following fields: | ||
- | * **name** The real name, or username, of the person. Mandatory. | ||
- | * **contact** Person' | ||
- | * **contributors** A list of contributors to the mod. Each entry is the same as in **author** field. See above. | ||
- | * **license** Defines the licensing information. Can either be a single license string or a list of them. | ||
- | * This should provide the complete set of preferred licenses conveying the entire mod package. In other words, compliance with all listed licenses should be sufficient for usage, redistribution, | ||
- | * For cases where a part of code is dual-licensed, | ||
- | * To aid automated tools, it is recommended to use [[https:// | ||
- | * **icon** Defines the mod's icon. Icons are square PNG files. (Minecraft resource packs use 128×128, but that is not a hard requirement - a power of two is, however, recommended.) Can be provided in one of two forms: | ||
- | * A path to a single PNG file. | ||
- | * A dictionary of images widths to their files' paths. | ||
- | |||
- | ===== Custom fields ===== | ||
- | |||
- | You can add any field you want to add. Loader would ignore them. However //it's highly recommended to namespace your fields// to avoid conflicts if your fields (names) would be added to the standard specification. |
documentation/fabric_mod_json.txt · Last modified: 2023/12/27 12:53 by mineblock11