Packmaker Definition Files¶
Minecraft modpacks built using Packmaker are defined in a YAML file, typically
called packmaker.yml
[1].
The packmaker.yml
file defines all of the metadata about a modpack, title,
version, authors, etc, and all of the details about what is needed to be
installed in a Minecraft instance to create the modpack. This include things
like what version of Minecraft, what version of Forge, and any mods and/or
resourcepacks to add to the instance.
There is an simple example of a packmaker.yml
for a simple modpack in the
packmaker git repository.
[1] | packmaker.yml is the default name used for the this yaml file, and
this reference document assumes the default filename is used, but you can
use any filename you like, as long as you provide it on the command line. |
Introduction¶
Packmaker definition files are written in YAML syntax.
YAML is used because it is easier for humans to read and write than other common data formats like XML or JSON.
The definition file can be broken down into a number of different sections:
- metadata
- All the pack metadata, including name, version, author, etc. Most of the metadata is required to properly define a modpack.
- mods
- The list of mods to be installed in the modpack. Mods are optional, and if this section is omitted, no mods will be installed. (But what would a modpack be without mods?)
- resourcepacks
- The list of resourcepacks to be installed in the modpack. Like mods, resourcepacks are optional, and if not are needed, this section can be omitted.
- files
- The list of additional files to be installed in the modpack. Again, files are optional and can this section can be omitted if there are no files to install.
The following example packmaker definition file defines every single element, and every parameter for mods, resourcepacks, and files at least once.
---
name: examplepack
title: Example ModPack
version: 1.0.0
author:
- mcrewson
- crouth
minecraft: 1.12.2
forge: 14.23.5.2854
mods:
- jei:
version: latest
- journeymap
- the-one-probe
ingoreddependencies:
- mantle
- tinkers-construct:
release: TConstruct-1.12.2-2.13.0.183.jar
clientonly: false
serveronly: false
optional: false
recommendation: starred
selected: false
resourcepacks:
- faithful-x32:
release: Faithful 1.15.2-r1
optional: false
recommendation: starred
selected: false
files:
- location: src
clientonly: false
serveronly: false
routhio:
html:
- location: html
launch:
flags:
- "-Dfml.ignoreInvalidMinecraftCertificates=true -XX:+UseG1GC -XX:UseSSE=3"
...
Metadata¶
Modpack metadata is needed to properly identify the modpack
name: | The name of the modpack. Currently used as part of the final filename for the released modpack file. Typically this should be short and simple, with no spaces or punctuation in the name, for better filenames. Required. |
---|---|
title: | The title of the modpack. This should be the full title of the pack. For example, the title is what is used in a curseforge manifest file, so when you import your into twitch or multimc, this is the default name it will appear as. Required. |
version: | The version of the modpack. Can be any string, but would recommend your follow a consistent versioning pattern (semantic versioning is a good example). Incrementing the version of a pack is how launchers are able to detect and upgrade a modpack. Version is also used in building the final filename for the released modpack file. Required. |
authors: | A list of names your want to credit with the creaton of the modpack. If only one name is needed, you can specify this as a string, rather than a list. Some modpack formats, the curseforge format in particular, do not support more than one author in their metadata. When building modpacks in those formats, packmaker only uses the first name in the list. Required. |
minecraft: | This is the version of minecraft this pack is being built for. Any valid version string that Mojang has defined for Minecraft should be valid here, although it is recommended you use some of the more common versions:
This field is required. |
forge: | The version of forge that the pack is being built for. Any valid version string that Forge has defined should be valid here, although it is recommended you use the latest for recommended version as defined by Forge. This is an optoinal field. If not defined, your modpack will not include Forge, most likely resulting in a vanilla minecraft pack, one with no mods loaded in it. |
Environment Variables in Metadata¶
Packdef metadata can be specified using environment variable syntax, and packmaker will use the values of the environment variable when building the pack. For example:
----
name: examplepack
title: Example ModPack
version: ${VERSION:-development}
The version
of this pack will be set at build time to the value of the VERSION
environment
variable. If the VERSION
environment variable is not defined, the value development
will
be used a fallback.
Environment variables are only valid for the metadata items in the packdef files. They will not
be interpolated in other parts of the packdef such as the mods
or resourcepacks
lists.
Mod Definitions¶
mods
is a list of minecraft mod definitions. Each definition requires the slug name of the mod,
as found on the curseforge.com site.
You can find the slug name of a mod using packmaker’s search function. Search results will contain both the full name of a mod and the slug name.
The slug name of a mod on curseforge can also be found in the mod’s address on the site. For example, the curseforge page for the Tinker’s Construct mod is:
https://www.curseforge.com/minecraft/mc-mods/tinkers-construct
The last part of the address, “tinkers-construct”, is the slug name for this mod.
Each mod listed in this packmaker.yml
file can be specified as either a string value, if no additional
parameters are required for the mod, or as a dictionary, where you can supply additional parameters to
control the specific version of the mod and other aspects of it within the modpack.
All of these parameters are optional.
release: | The specific release of the mod to be installed into the modpack. If not defined, packmaker will default to using the latest version of the mod available for the version of minecraft that the pack is built for. The The value |
---|---|
clientonly: | A boolean value, indicating whether this mod is specific to the minecraft client. If true, packmaker will not install this mod into any server builds. Optional, and defaults to false if not specified, meaning the mod will be installed in both client and server builds. |
serveronly: | A boolean value, indicating whether this mod is specific to the minecraft server. If true, packmaker will only install this mod in server builds. Optional, and default to false if not specified, meaning the mod will be installed in both client and server builds. |
ignoreddependencies: | |
Either the string “ Optional, and defaults to an empty list, meaning all dependent mods will be added to the pack automatically. |
|
optional: | An optional parameter, only used for routhio builds. This will mark the mod as optional, and the routhio launcher will present it as an optional mod that can be installed but is not required to launch the modpack. When building servers and other types of modpacks, for example curseforge modpacks, packmaker will ignore this parameter. |
recommendation: | An optional parameter, only used for routhio builds. This will mark an optional mod as recommended, marking the mod in the launcher as a recommended optional mod or an optional mod to avoid. Should have the value starred or avoid. Any other value will not make sense to the routhio launcher and will cause the mod to be ignored. Not including this parameter on an optional mod will make the launcher neither recommend to install nor avoid it. When building servers and other types of modpacks, for example curseforge modpacks, packmaker will ignore this parameter. |
selected: | An optional parameter, only used for routhio builds. This will mark an optional mod as selected, making the optonal mod installed by default, unless the user explicitly chooses not to. Should have the value a boolean value, true or false. When building servers and other types of modpacks, for example curseforge modpacks, packmaker will ignore this parameter. |
Resourcepack Definitions¶
Resourcepacks are always minecraft client only elements. They will be
ignored when building servers for the pack. So there is no need for
clientonly
or serveronly
parameters for a resourcepack.
release: | The specific release of the resourcepack to be installed into the modpack. If not defined, packmaker will default to using the latest version of the resoourcepack available for the version of minecraft that the pack is built for. The The value |
---|---|
optional: | An optional parameter, only used for routhio builds. This will mark the resourcepack as optional, and the routhio launcher will present it as an optional resourcepack that can be installed but is not required to launch the modpack. When building other types of modpacks, for example curseforge modpacks, packmaker will ignore this parameter. |
recommendation: | An optional parameter, only used for routhio builds. This will mark an optional resourcepack as recommended, marking the resourcepack in the launcher as a recommended optional resourcepack or an optional resourcepack to avoid. Should have the value starred or avoid. Any other value will not make sense to the routhio launcher and will cause the resourcepack to be ignored. Not including this parameter on an optional resourcepack will make the launcher neither recommend to install nor avoid it. When building other types of modpacks, for example curseforge modpacks, packmaker will ignore this parameter. |
selected: | An optional parameter, only used for routhio builds. This will mark an optional resourcepack as selected, making the optonal resourcepack installed by default, unless the user explicitly chooses not to. Should have the value a boolean value, true or false. When building other types of modpacks, for example curseforge modpacks, packmaker will ignore this parameter. |
Files¶
The files section of the packmaker.yml
file specifies the local files to be included into the
modpack. Typically these would be an additional configurations, scripts, resources, etc that
you want to add to the minecraft install when it is installed.
This section is a list of file locations, typically subfolders or directories within your packmaker project. Each location in the list should be unique and not overlap another location, as all locations will be combined in the final poduct.
The contents of each location folder will be copied into the minecraft folder of the built instance, with no alterations or attempt to preserve what is already stored in the destination, so be care not to accidently overwrite any files that may have already been installed by minecraft itself or mod installations.
A typical use for multiple file locations is to specify some files be installed only on client builds, and other only installed on server builds. For example:
files:
- location: src-all
- location: src-client
clientonly: true
- location: src-server
serveronly: true
Each location in the files list can have the following parameters.
location: | The location, relative to the If this location does not physically exist when building the modpack, a warning is printing, by this location will be ignored. |
---|---|
clientonly: | An optional boolean flag (true or false), indicating that this location of files should only be included with client builds. Defaults to false, meaning the location will be included in both client and server build,
unless the corresponding |
serveronly: | An optional boolean flag (true or false), indicating that this location of files should only be included with server builds. Defaults to false, meaning the location will be included in both client and server build,
unless the corresponding |
Routhio¶
The routhio section of the packmaker.yml
file is specific to only one type of modpack build,
a modpack for the routhio launcher. All other build types will ignore this section.
This section includes the following elements:
html: | A location of additional html files, typically a local folder with the project, that will be displayed within the launcher when a user selected this specific modpack. |
---|---|
launch: | Additional options the launcher will use when launching a minecraft instance. Currently,
the only launcher option that can be specified here is flags , which is used to provide
additional java command line arguments on the minecraft process. |