Type object
Schema URL https://catalog.lintel.tools/schemas/schemastore/quilt-mod-json/_shared/latest--schema_version_1.json
Parent schema quilt-mod-json
Type: object

The QuiltMC mod metadata. Utilized by the Quilt Loader in order to load mods. The format specification may be seen here.

Properties

schema_version integer required

The quilt mod file schema version to be used for parsing this file. Currently, the only valid version is 1.

Default: 1
Constant: 1
quilt_loader object required

Information necessary for the mod loading process.

14 nested properties
group string required

A unique identifier for the organization behind or developers of the mod. The group string must match the ^[a-zA-Z0-9-_.]+$ regular expression, and must not begin with the reserved namespace loader.plugin. It is recommended, but not required, to follow Maven's guide to naming conventions.

pattern=^[a-zA-Z0-9-_.]+$
id string required
One of: variant, placeholder string
version string required
One of: variant, placeholder string

An array of ProvidesObjects describing other mods/APIs that this package provides.

entrypoints Record<string, entrypoint_value_container | object>

A collection of key: value pairs, where each key is the type of the entrypoints specified and each values is either a single entrypoint or an array of entrypoints. An entrypoint is an object with the following keys:

  • adapter — Language adapter to use for this entrypoint. By default this is default and tells loader to parse using the JVM entrypoint notation.
  • value — Points to an implementation of the entrypoint. See below for the default JVM notation.

If an entrypoint does not need to specify a language adapter other than the default language adapter, the entrypoint can be represented simply as the value string instead.

JVM entrypoint notation

When referring to a class, the [binary name] is used. An example of a binary name is my.mod.MyClass$Inner.

One of the following value notations may be used in the JVM notation:

  • Implementation onto a class
    • The value must contain a fully qualified binary name to the class.
    • Implementing class must extend or implement the entrypoint interface.
    • Class must have a no-argument public constructor.
    • Example: example.mod.MainModClass
  • A field inside of a class.
    • The value must contain a fully qualified binary name to the class followed by :: and a field name.
    • The field must be static.
    • The type of the field must be assignable from the field's class.
    • Example: example.mod.MainModClass::THE_INSTANCE
    • If there is ambiguity with a method's name, an exception will be thrown.
  • A method inside of a class.
    • The value must contain a fully qualified binary name to the class followed by :: and a method name.
    • The method must be capable to implement the entrypoint type as a method reference. Generally this means classes which are functional interfaces.
    • Constructor requirement varies based on the method being static or instance level:
      • A static method does not require a public no-argument constructor.
      • An instance method requires a public no-argument constructor.
    • Example: example.mod.MainModClass::init
    • If there is ambiguity with a fields's name or other method, an exception will be thrown.

Other notations

Some language providers may extend the capabilities of the JVM language notation or provide additional notations. For notation rules for other language adapters, consult the capabilities of the language adapter.

plugins plugin_value_container | object[]

An array of loader plugins. A plugin is an object with the following keys:

  • adapter — Language adapter to use for this plugin
  • value — Points to an implementation of the LoaderPlugin interface. Can be in either of the following forms:
    • my.package.MyClass — A class to be instantiated and used
    • my.package.MyClass::thing — A static field containing an instance of a LoaderPlugin

If a plugin does not need to specify a language adapter other than the default language adapter, the plugin can be represented simply as the value string instead.

jars string[]

A list of paths to nested JAR files to load, relative to the root directory inside of the mods JAR.

language_adapters Record<string, string>

A collection of key: value pairs, where each key is the namespace of a language adapter and the value is an implementation of the LanguageAdapter interface.

load_type enum

Influences whether or not a mod candidate should be loaded or not. May be any of these values

  • "always" (default for mods directly in the mods folder)
  • "if_possible"
  • "if_required" (default for jar-in-jar mods)

This doesn't affect mods directly placed in the mods folder.

Always

If any versions of this mod are present, then one of them will be loaded.

Due to how mod loading actually works if any of the different versions of this mod are present, and one of them has "load_type" set to "always", then all of them are treated as it being set to "always".

If Possible

If this mod can be loaded, then it will - otherwise it will silently not be loaded.

If Required

If this mod is in another mods "depends" field then it will be loaded, otherwise it will silently not be loaded.

Values: "always" "if_possible" "if_required"
repositories string[]

A list of Maven repository url strings where dependencies can be looked for in addition to Quilt's central repository.

intermediate_mappings enum | string

The intermediate mappings used for this mod. The intermediate mappings string must be a valid maven coordinate and match the ^[a-zA-Z0-9-_.]+:[a-zA-Z0-9-_.]+$ regular expression. This field currently only officially supports org.quiltmc:hashed and net.fabricmc:intermediary.

Default: "org.quiltmc:hashed"
metadata object

Optional metadata that can be used by mods to display information about the mods installed.

6 nested properties
name string

A human-readable name for this mod.

description string

A human-readable description of this mod. This description should be plain text, with the exception of line breaks, which can be represented with the newline character \n.

contributors Record<string, string | string[]>

A collection of key: value pairs denoting the persons or organizations that contributed to this project. The key should be the name of the person or organization, while the value can be either a string representing a single role or an array of strings each one representing a single role. A role can be any valid string. The "Owner" role is defined as being the person(s) or organization in charge of the project.

contact object

A collection of key: value pairs denoting various contact information for the people behind this mod, with all values being strings. The following keys are officially defined, though mods can provide as many additional values as they wish:

  • email — Valid e-mail address for the organization/developers
  • homepage — Valid HTTP/HTTPS address for the project or the organization/developers behind it
  • issues — Valid HTTP/HTTPS address for the project issue tracker
  • sources — Valid HTTP/HTTPS address for a source code repository
4 nested properties
email string

Valid e-mail address for the organization/developers.

format=email
homepage string

Valid HTTP/HTTPS address for the project or the organization/developers behind it.

format=uri
issues string

Valid HTTP/HTTPS address for the project issue tracker.

format=uri
sources string

Valid HTTP/HTTPS address for a source code repository.

format=uri

The license or array of licenses this project operates under.

A license is defined as either an SPDX identifier string or an object in the following form:

{
	"name": "Perfectly Awesome License v1.0",
	"id": "PAL-1.0",
	"url": "https://theperfectlyawesomelicense.com/",
	"description": "This license does things and stuff and says that you can do things and stuff too!"
}

The "description" field is optional.

icon string | object

One or more paths to a square .PNG file. If an object is provided, the keys must be the resolution of the corresponding file. For example:

"icon": {
	"32": "path/to/icon32.png",
	"64": "path/to/icon64.png",
	"4096": "path/to/icon4096.png"
}

A single or array of mixin configuration entries.

An entry can either be an object or a string. The mixin configuration entry object has one required field config and an optional field environment. The config field is a path to the mixin config file relative to the root of the mod JAR. The environment field is the environment in which the config should be loaded. If no environment or '*' is set, the mixin config is loaded on both environments.

Providing a string is the same as providing a mixin configuration entry with a config field and no environment field.

Examples:

"mixin": {
	"config": "modid.mixins.json",
	"environment": "client"
}
"mixin": "modid.mixins.json"
"mixin": [
	{
		"config": "modid_client.mixins.json",
		"environment": "client"
	},
	"modid.mixins.json"
]
access_widener string | string[]

A single or array of paths to accesswidener files relative to the root of the mod JAR.

minecraft object
1 nested properties
environment enum

Defines the environment(s) that this mod should be loaded on. Valid values are:

  • "*" — All environments (default)
  • "client" — The physical client
  • "dedicated_server" — The dedicated server
Default: "*"
Values: "*" "client" "dedicated_server"

Definitions

placeholder string
mod_id string
semver_version string
entrypoint_value string

Points to an implementation of the entrypoint. For the default JVM language adapter, this can be in either of the following forms:

  • my.package.MyClass — A class to be instantiated and used
  • my.package.MyClass::thing — A static field containing an instance of the entrypoint or a method handle for entrypoints that are functional interfaces
entrypoint_value_container entrypoint_value[] | entrypoint_value
plugin_value string

Points to an implementation of the LoaderPlugin interface. Can be in either of the following forms:

  • my.package.MyClass — A class to be instantiated and used
  • my.package.MyClass::thing — A static field containing an instance of a LoaderPlugin
plugin_value_container plugin_value[] | plugin_value
version_specifier string

Defines a range of versions. It can make use of any of the following patterns:

  • * — Matches any version. Will fetch the latest version available if needed
  • 1.0.0 — Matches the most recent version greater than or equal to version 1.0.0 and less than 2.0.0
  • =1.0.0 — Matches exactly version 1.0.0 and no other versions
  • >=1.0.0 — Matches any version greater than or equal to 1.0.0
  • >1.0.0 — Matches any version greater than version 1.0.0
  • <=1.0.0 — Matches any version less than or equal to version 1.0.0
  • <1.0.0 — Matches any version less than version 1.0.0
  • 1.0.x — Matches any version with major version 1 and minor version 0.
  • ~1.0.0 — Matches the most recent version greater than or equal to version 1.0.0 and less than 1.1.0
  • ^1.0.0 — Matches the most recent version greater than or equal to version 1.0.0 and less than 2.0.0
version_specifier_container version_specifier | version_specifier[]
mod_id_with_maven_group string
dependency_object_with_description mod_id_with_maven_group | dependency_object_array
dependency_object mod_id_with_maven_group | dependency_object_array
dependency_object_array dependency_object_with_description[]
provides_object_with_description object | mod_id_with_maven_group
provides_object object | mod_id_with_maven_group
minecraft_game_provider_options object
environment enum

Defines the environment(s) that this mod should be loaded on. Valid values are:

  • "*" — All environments (default)
  • "client" — The physical client
  • "dedicated_server" — The dedicated server
Default: "*"
Values: "*" "client" "dedicated_server"
license_object string | object
mixin_configuration_entry string | object