From 9ff2f8f671ba409242fcff799a7fd8fe209e7b42 Mon Sep 17 00:00:00 2001 From: Geoff Bourne Date: Sun, 12 Oct 2025 13:02:02 -0500 Subject: [PATCH] Allow embedded comments in newline-comma lists (#3705) --- .gitattributes | 2 - .github/workflows/verify-pr.yml | 2 +- Dockerfile | 2 +- docs/img/modrinth-copy-project-id.png | Bin 17566 -> 17565 bytes docs/misc/contributing/development.md | 10 + docs/mods-and-plugins/index.md | 358 +++++++++--------- docs/requirements.txt | 12 +- .../mod-platforms/auto-curseforge.md | 11 + .../auto-curseforge/atm10/docker-compose.yml | 1 + examples/auto-curseforge/rad2/compose.yaml | 2 + .../auto-curseforge/skyfactory5/compose.yml | 48 +-- examples/curseforge-files/docker-compose.yml | 35 +- .../compose.yml | 28 +- scripts/start-setupModpack | 2 +- 14 files changed, 268 insertions(+), 245 deletions(-) delete mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 4bb50dc1..00000000 --- a/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -# Auto detect text files and perform LF normalization -* text eol=lf \ No newline at end of file diff --git a/.github/workflows/verify-pr.yml b/.github/workflows/verify-pr.yml index 27958176..115daa73 100644 --- a/.github/workflows/verify-pr.yml +++ b/.github/workflows/verify-pr.yml @@ -44,7 +44,7 @@ jobs: platforms: linux/amd64 mcVersion: 1.12.2 # Pin version for Java 8 - mcHelperVersion: 1.42.1 +# mcHelperVersion: 1.42.1 env: IMAGE_TO_TEST: ${{ github.repository_owner }}/minecraft-server:test-${{ matrix.variant }}-${{ github.run_id }} runs-on: ubuntu-22.04 diff --git a/Dockerfile b/Dockerfile index 451697a9..4b0fb3db 100644 --- a/Dockerfile +++ b/Dockerfile @@ -48,7 +48,7 @@ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \ --var version=${MC_SERVER_RUNNER_VERSION} --var app=mc-server-runner --file {{.app}} \ --from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz -ARG MC_HELPER_VERSION=1.49.2 +ARG MC_HELPER_VERSION=1.50.0 ARG MC_HELPER_BASE_URL=${GITHUB_BASEURL}/itzg/mc-image-helper/releases/download/${MC_HELPER_VERSION} # used for cache busting local copy of mc-image-helper ARG MC_HELPER_REV=1 diff --git a/docs/img/modrinth-copy-project-id.png b/docs/img/modrinth-copy-project-id.png index 318f9145e784ab286649d3e9fbbcc0eb36ed8cff..287d4db7314775520c432097d5974b19c2f39e5a 100644 GIT binary patch delta 15 WcmbQ&$vC%@k)<=h&wV57OcwwwK?PL+ delta 16 XcmbQ+$vCf*k+n0x&z*N8%S;ylFh~Vr diff --git a/docs/misc/contributing/development.md b/docs/misc/contributing/development.md index 7ebee709..7275912e 100644 --- a/docs/misc/contributing/development.md +++ b/docs/misc/contributing/development.md @@ -92,6 +92,16 @@ docker run -it --rm \ itzg/minecraft-server ``` +In a compose file, include the volume mount in the `volumes` section of the container definition: + +```yaml +services: + mc: + # ... usual container definition + volumes: + - /path/to/mc-image-helper/build/install/mc-image-helper:/usr/share/mc-image-helper:ro +``` + For Go base tools, run ```shell diff --git a/docs/mods-and-plugins/index.md b/docs/mods-and-plugins/index.md index 34fe011e..9478958d 100644 --- a/docs/mods-and-plugins/index.md +++ b/docs/mods-and-plugins/index.md @@ -1,179 +1,179 @@ -# Working with mods and plugins - -## Modpack platforms - -By far the easiest way to work with mod and plugins, especially large numbers of them, is to utilize modpacks with [one of the supported modpack platforms](../types-and-platforms/index.md). - -The following are some supported modpack platforms: - -- [Modrinth](../types-and-platforms/mod-platforms/modrinth-modpacks.md) -- [CurseForge](../types-and-platforms/mod-platforms/auto-curseforge.md) -- [Feed the Beast](../types-and-platforms/mod-platforms/ftb.md) - -## Download automation - -On the left, there are sections describing some download automation options. - -## Mods vs Plugins - -The terms "mods" and "plugins" can be quite confusing. Generally, the rule of thumb is that "mods" are used by the types that run client side to modify rendering, add new blocks, and add behaviors server, such as [Forge](../types-and-platforms/server-types/forge.md) and [Fabric](../types-and-platforms/server-types/fabric.md). "Plugins" are used by the types that **only run on servers** to add behaviors, commands, etc such as [Paper](../types-and-platforms/server-types/paper.md) (which derives from [Bukkit/Spigot](../types-and-platforms/server-types/bukkit-spigot.md)). There are also some types that are [hybrids](../types-and-platforms/server-types/hybrids.md), such as Magma, that use both "mods" and "plugins". - -Typically, mods needs to be installed in both the client and server; however, there are some cases when only the server needs a mod. Plugins only need to be installed in the server and are never needed in the client. - -## Optional plugins, mods, and config attach points - -There are optional volume paths that can be attached to supply content to be copied into the data area: - -`/plugins` -: content in this directory is synchronized into `/data/plugins` for server types that use plugins, [as described above](#mods-vs-plugins). For special cases, the source can be changed by setting `COPY_PLUGINS_SRC` and destination by setting `COPY_PLUGINS_DEST`. If using a mod-based loader, such as Forge or Fabric, but a hybrid mod like [Cardboard](https://modrinth.com/mod/cardboard), then set `USES_PLUGINS` to have the automation utilize `/plugins` mount. - -`/mods` -: content in this directory is synchronized into `/data/mods` for server types that use mods, [as described above](#mods-vs-plugins). For special cases, the source can be changed by setting `COPY_MODS_SRC` and destination by setting `COPY_MODS_DEST`. - -`/config` -: contents are synchronized into `/data/config` by default, but can be changed with `COPY_CONFIG_DEST`. For example, `-v ./config:/config -e COPY_CONFIG_DEST=/data` will allow you to copy over files like `bukkit.yml` and so on directly into the server directory. The source can be changed by setting `COPY_CONFIG_SRC`. Set `SYNC_SKIP_NEWER_IN_DESTINATION=false` if you want files from `/config` to take precedence over newer files in `/data/config`. - -By default, the [environment variable processing](../configuration/interpolating.md) is performed on synchronized files that match the expected suffixes in `REPLACE_ENV_SUFFIXES` (by default "yml,yaml,txt,cfg,conf,properties,hjson,json,tml,toml") and are not excluded by `REPLACE_ENV_VARIABLES_EXCLUDES` and `REPLACE_ENV_VARIABLES_EXCLUDE_PATHS`. This processing can be disabled by setting `REPLACE_ENV_DURING_SYNC` to `false`. - -If you want old mods/plugins to be removed before the content is brought over from those attach points, then add `-e REMOVE_OLD_MODS=TRUE`. You can fine tune the removal process by specifying the `REMOVE_OLD_MODS_INCLUDE` and `REMOVE_OLD_MODS_EXCLUDE` variables, which are comma separated lists of file glob patterns. If a directory is excluded, then it and all of its contents are excluded. By default, only jars are removed. - -You can also specify the `REMOVE_OLD_MODS_DEPTH` (default is 16) variable to only delete files up to a certain level. - -For example: `-e REMOVE_OLD_MODS=TRUE -e REMOVE_OLD_MODS_INCLUDE="*.jar" -e REMOVE_OLD_MODS_DEPTH=1` will remove all old jar files that are directly inside the `plugins/` or `mods/` directory. - -These paths work well if you want to have a common set of modules in a separate location, but still have multiple worlds with different server requirements in either persistent volumes or a downloadable archive. - -!!! information "Multiple source directories" - - `COPY_PLUGINS_SRC`, `COPY_MODS_SRC`, `COPY_CONFIG_SRC` can each be set to a comma or newline delimited list of container directories to reference. - - For example, in a compose file: - - ```yaml - environment: - # ...EULA, etc - TYPE: PAPER - # matches up to volumes declared below - COPY_PLUGINS_SRC: /plugins-common,/plugins-local - volumes: - - mc-data:/data - # For example, reference a shared directory used by several projects - - ../plugins-common:/plugins-common:ro - # and add plugins unique to this project - - ./plugins:/plugins-local:ro - ``` - - Alternatively, you can declare other directories along with files and URLs to use in [the `MODS` / `PLUGINS` variables](#modsplugins-list). - - - -## Zip file modpack - -Like the `WORLD` option above, you can specify the URL or container path of a "mod pack" to download and install into `mods` for Forge/Fabric or `plugins` for Bukkit/Spigot. To use this option pass the environment variable `MODPACK`, such as - -```shell -docker run -d -e MODPACK=http://www.example.com/mods/modpack.zip ... -``` - -!!! note - The referenced URL/file must be a zip file with one or more jar files at the - top level of the zip archive. Make sure the jars are compatible with the - particular `TYPE` of server you are running. - -## Generic pack files - -To install all the server content (jars, mods, plugins, configs, etc.) from a zip or tgz file, then set `GENERIC_PACK` to the container path or URL of the archive file. This can also be used to apply a CurseForge modpack that is missing a server start script and/or Forge installer. - -If multiple generic packs need to be applied together, set `GENERIC_PACKS` instead, with a comma separated list of archive file paths and/or URLs to files. - -To avoid repetition, each entry will be prefixed by the value of `GENERIC_PACKS_PREFIX` and suffixed by the value of `GENERIC_PACKS_SUFFIX`, both of which are optional. For example, the following variables - -``` -GENERIC_PACKS=configs-v9.0.1,mods-v4.3.6 -GENERIC_PACKS_PREFIX=https://cdn.example.org/ -GENERIC_PACKS_SUFFIX=.zip -``` - -would expand to `https://cdn.example.org/configs-v9.0.1.zip,https://cdn.example.org/mods-v4.3.6.zip`. - -If applying large generic packs, the update can be time-consuming. To skip the update set `SKIP_GENERIC_PACK_UPDATE_CHECK` to "true". Conversely, the generic pack(s) can be forced to be applied by setting `FORCE_GENERIC_PACK_UPDATE` to "true". - -The most time-consuming portion of the generic pack update is generating and comparing the SHA1 checksum. To skip the checksum generation, set `SKIP_GENERIC_PACK_CHECKSUM` to "true". - -To disable specific mods, which can be useful for conflicts between multiple generic packs, you can use the `GENERIC_PACKS_DISABLE_MODS` variable to specify mods to disable. - -Disabling mods with docker run: -```shell -docker run -d -e GENERIC_PACKS_DISABLE_MODS="mod1.jar mod2.jar" ... -``` - -Disabling mods within docker compose files: -```yaml - GENERIC_PACKS_DISABLE_MODS: | - mod1.jar - mod2.jar -``` - -## Mods/plugins list - -You may also download or copy over individual mods/plugins using the `MODS` or `PLUGINS` environment variables. Both are a comma or newline delimited list of - -- URL of a jar file -- container path to a jar file -- container path to a directory containing jar files - -```shell -docker run -d -e MODS=https://www.example.com/mods/mod1.jar,/plugins/common,/plugins/special/mod2.jar ... -``` - -The newline delimiting allows for compose file usage like: -```yaml - PLUGINS: | - https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/spigot - https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/spigot -``` - -!!! note "Auto-removal" - - Entries that are removed from the `MODS` or `PLUGINS` list will be automatically removed from the `mods` or `plugins` directory. This is useful for removing mods/plugins that are no longer needed. An empty `MODS` or `PLUGINS` list will remove all mods/plugins. - -!!! note "Disable processing" - - To temporarily disable processing of the `MODS` or `PLUGINS` list, then comment out the `MODS` or `PLUGINS` environment variable. - -## Mod/Plugin URL Listing File - -As an alternative to `MODS`/`PLUGINS`, the variable `MODS_FILE` or `PLUGINS_FILE` can be set with the container path or URL of a text file listing a mod/plugin URLs on each line. For example, the following - - -e MODS_FILE=/extras/mods.txt - -would load from a file mounted into the container at `/extras/mods.txt`. That file might look like: - -```text -https://edge.forgecdn.net/files/2965/233/Bookshelf-1.15.2-5.6.40.jar -https://edge.forgecdn.net/files/2926/27/ProgressiveBosses-2.1.5-mc1.15.2.jar -# This and next line are ignored -#https://edge.forgecdn.net/files/3248/905/goblintraders-1.3.1-1.15.2.jar -https://edge.forgecdn.net/files/3272/32/jei-1.15.2-6.0.3.16.jar -https://edge.forgecdn.net/files/2871/647/ToastControl-1.15.2-3.0.1.jar -``` - -!!! note - - Blank lines and lines that start with a `#` will be ignored - - [This compose file](https://github.com/itzg/docker-minecraft-server/blob/master/examples/mods-file/docker-compose.yml) shows another example of using this feature. - -## Remove old mods/plugins - -When the `MODPACK` option above is specified you can also instruct script to delete old mods/plugins prior to installing new ones. This behaviour is desirable in case you want to upgrade mods/plugins from downloaded zip file. - -To use this option pass the environment variable `REMOVE_OLD_MODS=TRUE`, such as - -```shell -docker run -d -e REMOVE_OLD_MODS=TRUE -e MODPACK=http://www.example.com/mods/modpack.zip ... -``` - -!!! danger - - All content of the `mods` or `plugins` directory will be deleted before unpacking new content from the MODPACK or MODS. +# Working with mods and plugins + +## Modpack platforms + +By far the easiest way to work with mod and plugins, especially large numbers of them, is to utilize modpacks with [one of the supported modpack platforms](../types-and-platforms/index.md). + +The following are some supported modpack platforms: + +- [Modrinth](../types-and-platforms/mod-platforms/modrinth-modpacks.md) +- [CurseForge](../types-and-platforms/mod-platforms/auto-curseforge.md) +- [Feed the Beast](../types-and-platforms/mod-platforms/ftb.md) + +## Download automation + +On the left, there are sections describing some download automation options. + +## Mods vs Plugins + +The terms "mods" and "plugins" can be quite confusing. Generally, the rule of thumb is that "mods" are used by the types that run client side to modify rendering, add new blocks, and add behaviors server, such as [Forge](../types-and-platforms/server-types/forge.md) and [Fabric](../types-and-platforms/server-types/fabric.md). "Plugins" are used by the types that **only run on servers** to add behaviors, commands, etc such as [Paper](../types-and-platforms/server-types/paper.md) (which derives from [Bukkit/Spigot](../types-and-platforms/server-types/bukkit-spigot.md)). There are also some types that are [hybrids](../types-and-platforms/server-types/hybrids.md), such as Magma, that use both "mods" and "plugins". + +Typically, mods needs to be installed in both the client and server; however, there are some cases when only the server needs a mod. Plugins only need to be installed in the server and are never needed in the client. + +## Optional plugins, mods, and config attach points + +There are optional volume paths that can be attached to supply content to be copied into the data area: + +`/plugins` +: content in this directory is synchronized into `/data/plugins` for server types that use plugins, [as described above](#mods-vs-plugins). For special cases, the source can be changed by setting `COPY_PLUGINS_SRC` and destination by setting `COPY_PLUGINS_DEST`. If using a mod-based loader, such as Forge or Fabric, but a hybrid mod like [Cardboard](https://modrinth.com/mod/cardboard), then set `USES_PLUGINS` to have the automation utilize `/plugins` mount. + +`/mods` +: content in this directory is synchronized into `/data/mods` for server types that use mods, [as described above](#mods-vs-plugins). For special cases, the source can be changed by setting `COPY_MODS_SRC` and destination by setting `COPY_MODS_DEST`. + +`/config` +: contents are synchronized into `/data/config` by default, but can be changed with `COPY_CONFIG_DEST`. For example, `-v ./config:/config -e COPY_CONFIG_DEST=/data` will allow you to copy over files like `bukkit.yml` and so on directly into the server directory. The source can be changed by setting `COPY_CONFIG_SRC`. Set `SYNC_SKIP_NEWER_IN_DESTINATION=false` if you want files from `/config` to take precedence over newer files in `/data/config`. + +By default, the [environment variable processing](../configuration/interpolating.md) is performed on synchronized files that match the expected suffixes in `REPLACE_ENV_SUFFIXES` (by default "yml,yaml,txt,cfg,conf,properties,hjson,json,tml,toml") and are not excluded by `REPLACE_ENV_VARIABLES_EXCLUDES` and `REPLACE_ENV_VARIABLES_EXCLUDE_PATHS`. This processing can be disabled by setting `REPLACE_ENV_DURING_SYNC` to `false`. + +If you want old mods/plugins to be removed before the content is brought over from those attach points, then add `-e REMOVE_OLD_MODS=TRUE`. You can fine tune the removal process by specifying the `REMOVE_OLD_MODS_INCLUDE` and `REMOVE_OLD_MODS_EXCLUDE` variables, which are comma separated lists of file glob patterns. If a directory is excluded, then it and all of its contents are excluded. By default, only jars are removed. + +You can also specify the `REMOVE_OLD_MODS_DEPTH` (default is 16) variable to only delete files up to a certain level. + +For example: `-e REMOVE_OLD_MODS=TRUE -e REMOVE_OLD_MODS_INCLUDE="*.jar" -e REMOVE_OLD_MODS_DEPTH=1` will remove all old jar files that are directly inside the `plugins/` or `mods/` directory. + +These paths work well if you want to have a common set of modules in a separate location, but still have multiple worlds with different server requirements in either persistent volumes or a downloadable archive. + +!!! information "Multiple source directories" + + `COPY_PLUGINS_SRC`, `COPY_MODS_SRC`, `COPY_CONFIG_SRC` can each be set to a comma or newline delimited list of container directories to reference. + + For example, in a compose file: + + ```yaml + environment: + # ...EULA, etc + TYPE: PAPER + # matches up to volumes declared below + COPY_PLUGINS_SRC: /plugins-common,/plugins-local + volumes: + - mc-data:/data + # For example, reference a shared directory used by several projects + - ../plugins-common:/plugins-common:ro + # and add plugins unique to this project + - ./plugins:/plugins-local:ro + ``` + + Alternatively, you can declare other directories along with files and URLs to use in [the `MODS` / `PLUGINS` variables](#modsplugins-list). + + + +## Zip file modpack + +Like the `WORLD` option above, you can specify the URL or container path of a "mod pack" to download and install into `mods` for Forge/Fabric or `plugins` for Bukkit/Spigot. To use this option pass the environment variable `MODPACK`, such as + +```shell +docker run -d -e MODPACK=http://www.example.com/mods/modpack.zip ... +``` + +!!! note + The referenced URL/file must be a zip file with one or more jar files at the + top level of the zip archive. Make sure the jars are compatible with the + particular `TYPE` of server you are running. + +## Generic pack files + +To install all the server content (jars, mods, plugins, configs, etc.) from a zip or tgz file, then set `GENERIC_PACK` to the container path or URL of the archive file. This can also be used to apply a CurseForge modpack that is missing a server start script and/or Forge installer. + +If multiple generic packs need to be applied together, set `GENERIC_PACKS` instead, with a comma separated list of archive file paths and/or URLs to files. + +To avoid repetition, each entry will be prefixed by the value of `GENERIC_PACKS_PREFIX` and suffixed by the value of `GENERIC_PACKS_SUFFIX`, both of which are optional. For example, the following variables + +``` +GENERIC_PACKS=configs-v9.0.1,mods-v4.3.6 +GENERIC_PACKS_PREFIX=https://cdn.example.org/ +GENERIC_PACKS_SUFFIX=.zip +``` + +would expand to `https://cdn.example.org/configs-v9.0.1.zip,https://cdn.example.org/mods-v4.3.6.zip`. + +If applying large generic packs, the update can be time-consuming. To skip the update set `SKIP_GENERIC_PACK_UPDATE_CHECK` to "true". Conversely, the generic pack(s) can be forced to be applied by setting `FORCE_GENERIC_PACK_UPDATE` to "true". + +The most time-consuming portion of the generic pack update is generating and comparing the SHA1 checksum. To skip the checksum generation, set `SKIP_GENERIC_PACK_CHECKSUM` to "true". + +To disable specific mods, which can be useful for conflicts between multiple generic packs, you can use the `GENERIC_PACKS_DISABLE_MODS` variable to specify mods to disable. + +Disabling mods with docker run: +```shell +docker run -d -e GENERIC_PACKS_DISABLE_MODS="mod1.jar mod2.jar" ... +``` + +Disabling mods within docker compose files: +```yaml + GENERIC_PACKS_DISABLE_MODS: | + mod1.jar + mod2.jar +``` + +## Mods/plugins list + +You may also download or copy over individual mods/plugins using the `MODS` or `PLUGINS` environment variables. Both are a comma or newline delimited list of + +- URL of a jar file +- container path to a jar file +- container path to a directory containing jar files + +```shell +docker run -d -e MODS=https://www.example.com/mods/mod1.jar,/plugins/common,/plugins/special/mod2.jar ... +``` + +The newline delimiting allows for compose file usage like: +```yaml + PLUGINS: | + https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/spigot + https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/spigot +``` + +!!! note "Auto-removal" + + Entries that are removed from the `MODS` or `PLUGINS` list will be automatically removed from the `mods` or `plugins` directory. This is useful for removing mods/plugins that are no longer needed. An empty `MODS` or `PLUGINS` list will remove all mods/plugins. + +!!! note "Disable processing" + + To temporarily disable processing of the `MODS` or `PLUGINS` list, then comment out the `MODS` or `PLUGINS` environment variable. + +## Mod/Plugin URL Listing File + +As an alternative to `MODS`/`PLUGINS`, the variable `MODS_FILE` or `PLUGINS_FILE` can be set with the container path or URL of a text file listing a mod/plugin URLs on each line. For example, the following + + -e MODS_FILE=/extras/mods.txt + +would load from a file mounted into the container at `/extras/mods.txt`. That file might look like: + +```text +https://edge.forgecdn.net/files/2965/233/Bookshelf-1.15.2-5.6.40.jar +https://edge.forgecdn.net/files/2926/27/ProgressiveBosses-2.1.5-mc1.15.2.jar +# This and next line are ignored +#https://edge.forgecdn.net/files/3248/905/goblintraders-1.3.1-1.15.2.jar +https://edge.forgecdn.net/files/3272/32/jei-1.15.2-6.0.3.16.jar +https://edge.forgecdn.net/files/2871/647/ToastControl-1.15.2-3.0.1.jar +``` + +!!! note + + Blank lines and lines that start with a `#` will be ignored + + [This compose file](https://github.com/itzg/docker-minecraft-server/blob/master/examples/mods-file/docker-compose.yml) shows another example of using this feature. + +## Remove old mods/plugins + +When the `MODPACK` option above is specified you can also instruct script to delete old mods/plugins prior to installing new ones. This behaviour is desirable in case you want to upgrade mods/plugins from downloaded zip file. + +To use this option pass the environment variable `REMOVE_OLD_MODS=TRUE`, such as + +```shell +docker run -d -e REMOVE_OLD_MODS=TRUE -e MODPACK=http://www.example.com/mods/modpack.zip ... +``` + +!!! danger + + All content of the `mods` or `plugins` directory will be deleted before unpacking new content from the MODPACK or MODS. diff --git a/docs/requirements.txt b/docs/requirements.txt index dad0eb03..b0d9a1ba 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,7 +1,7 @@ -mkdocs-material == 9.6.21 -mkdocs-autorefs == 1.4.3 -mkdocstrings[python] == 0.30.1 -mkdocs-literate-nav == 0.6.2 -mdx-gh-links == 0.4 -mkdocs-click == 0.9.0 +mkdocs-material == 9.6.21 +mkdocs-autorefs == 1.4.3 +mkdocstrings[python] == 0.30.1 +mkdocs-literate-nav == 0.6.2 +mdx-gh-links == 0.4 +mkdocs-click == 0.9.0 mkdocs-static-i18n == 1.3.0 \ No newline at end of file diff --git a/docs/types-and-platforms/mod-platforms/auto-curseforge.md b/docs/types-and-platforms/mod-platforms/auto-curseforge.md index f507fbbe..32044222 100644 --- a/docs/types-and-platforms/mod-platforms/auto-curseforge.md +++ b/docs/types-and-platforms/mod-platforms/auto-curseforge.md @@ -216,6 +216,17 @@ If needing to iterate on the options above, set `CF_FORCE_SYNCHRONIZE` to "true" !!! important These options are provided to empower you to get your server up and running quickly. Please help out by reporting an issue with the respective mod project. Ideally mod developers should [use correct registrations for one-sided client mods](https://docs.minecraftforge.net/en/latest/concepts/sides/#writing-one-sided-mods). Understandably, those code changes may be non-trivial, so mod authors can also add "Client" to the game versions when publishing. +!!! tip "Embedded comments" + + Comments can be embedded in the list using the `#` character. + + ```yaml + CF_EXCLUDE_MODS: | + # Exclude client-side mods not published correctly + creative-core + default-options + ``` + ## Excluding Overrides Files Modpack zip files typically include an `overrides` subdirectory that may contain config files, world data, and extra mod files. All of those files will be extracted into the `/data` path of the container. If any of those files, such as incompatible mods, need to be excluded from extraction, then the `CF_OVERRIDES_EXCLUSIONS` variable can be set with a comma or newline delimited list of ant-style paths ([see below](#ant-style-paths)) to exclude, relative to the overrides (or `/data`) directory. diff --git a/examples/auto-curseforge/atm10/docker-compose.yml b/examples/auto-curseforge/atm10/docker-compose.yml index 3cd35409..7b2407fb 100644 --- a/examples/auto-curseforge/atm10/docker-compose.yml +++ b/examples/auto-curseforge/atm10/docker-compose.yml @@ -18,6 +18,7 @@ services: # CF_FILENAME_MATCHER: "1.17" MEMORY: 4G CF_OVERRIDES_EXCLUSIONS: | + # Not applicable for server side shaderpacks/** volumes: # Use managed volume by default, but can change to a relative path like diff --git a/examples/auto-curseforge/rad2/compose.yaml b/examples/auto-curseforge/rad2/compose.yaml index 186c0021..f0a21880 100644 --- a/examples/auto-curseforge/rad2/compose.yaml +++ b/examples/auto-curseforge/rad2/compose.yaml @@ -16,6 +16,7 @@ services: # Optional: select a specific version/file #CF_FILENAME_MATCHER: "0.2.34" CF_EXCLUDE_MODS: | + # Exclude client-side mods not published correctly creative-core default-options itemphysic-lite @@ -25,6 +26,7 @@ services: MEMORY: 4G volumes: - mc-data:/data + - C:\Users\geoff\git\mc-image-helper\build\install\mc-image-helper:/usr/share/mc-image-helper:ro volumes: mc-data: {} diff --git a/examples/auto-curseforge/skyfactory5/compose.yml b/examples/auto-curseforge/skyfactory5/compose.yml index 39f1f63f..28abb59b 100644 --- a/examples/auto-curseforge/skyfactory5/compose.yml +++ b/examples/auto-curseforge/skyfactory5/compose.yml @@ -1,24 +1,24 @@ -services: - mc: - image: itzg/minecraft-server - environment: - EULA: true - # https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/ - MODPACK_PLATFORM: AUTO_CURSEFORGE -# CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/skyfactory-5/files/6290684 - CF_SLUG: skyfactory-5 - # Comment out the following to get the latest version or pick a version from - # https://www.curseforge.com/minecraft/modpacks/skyfactory-5/files/all?page=1&pageSize=20 - CF_FILENAME_MATCHER: 5.0.8 - # Allocate API key from https://console.curseforge.com/ - # and set in .env file making sure to double up dollar signs, such as - # CF_API_KEY=$$2a$$10$$.... - # Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key - CF_API_KEY: ${CF_API_KEY} - MEMORY: 4G - ports: - - "25565:25565" - volumes: - - mc-data:/data -volumes: - mc-data: +services: + mc: + image: itzg/minecraft-server + environment: + EULA: true + # https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/ + MODPACK_PLATFORM: AUTO_CURSEFORGE +# CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/skyfactory-5/files/6290684 + CF_SLUG: skyfactory-5 + # Comment out the following to get the latest version or pick a version from + # https://www.curseforge.com/minecraft/modpacks/skyfactory-5/files/all?page=1&pageSize=20 + CF_FILENAME_MATCHER: 5.0.8 + # Allocate API key from https://console.curseforge.com/ + # and set in .env file making sure to double up dollar signs, such as + # CF_API_KEY=$$2a$$10$$.... + # Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key + CF_API_KEY: ${CF_API_KEY} + MEMORY: 4G + ports: + - "25565:25565" + volumes: + - mc-data:/data +volumes: + mc-data: diff --git a/examples/curseforge-files/docker-compose.yml b/examples/curseforge-files/docker-compose.yml index 752b8635..d5ee1d44 100644 --- a/examples/curseforge-files/docker-compose.yml +++ b/examples/curseforge-files/docker-compose.yml @@ -1,18 +1,19 @@ -services: - mc: - image: itzg/minecraft-server - environment: - EULA: true - TYPE: FORGE - # Allocate API key from https://console.curseforge.com/ - # and set in .env file making sure to double up dollar signs, such as - # CF_API_KEY=$$2a$$10$$.... - # Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key - CF_API_KEY: ${CF_API_KEY} - VERSION: 1.19.2 - CURSEFORGE_FILES: | - geckolib - aquaculture - naturalist - ports: +services: + mc: + image: itzg/minecraft-server + environment: + EULA: true + TYPE: FORGE + # Allocate API key from https://console.curseforge.com/ + # and set in .env file making sure to double up dollar signs, such as + # CF_API_KEY=$$2a$$10$$.... + # Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key + CF_API_KEY: ${CF_API_KEY} + VERSION: 1.19.2 + CURSEFORGE_FILES: | + geckolib # some comment + # Removing temporarily + #aquaculture + naturalist + ports: - "25565:25565" \ No newline at end of file diff --git a/examples/modrinth/version-from-modrinth-projects/compose.yml b/examples/modrinth/version-from-modrinth-projects/compose.yml index ead13c0d..646fe285 100644 --- a/examples/modrinth/version-from-modrinth-projects/compose.yml +++ b/examples/modrinth/version-from-modrinth-projects/compose.yml @@ -1,15 +1,15 @@ -services: - mc: - image: itzg/minecraft-server - environment: - EULA: true - TYPE: paper - MODRINTH_PROJECTS: | - viaversion - viabackwards - griefprevention - discordsrv - VERSION_FROM_MODRINTH_PROJECTS: true - MEMORY: 2G - ports: +services: + mc: + image: itzg/minecraft-server + environment: + EULA: true + TYPE: paper + MODRINTH_PROJECTS: | + viaversion + viabackwards + griefprevention + discordsrv + VERSION_FROM_MODRINTH_PROJECTS: true + MEMORY: 2G + ports: - "25565:25565" \ No newline at end of file diff --git a/scripts/start-setupModpack b/scripts/start-setupModpack index d2d53c9f..1ecfce2e 100755 --- a/scripts/start-setupModpack +++ b/scripts/start-setupModpack @@ -312,7 +312,7 @@ function handleCurseForgeFiles() { # since we want CURSEFORGE_FILES to expand mc-image-helper curseforge-files \ "${args[@]}" \ - ${CURSEFORGE_FILES} + "${CURSEFORGE_FILES}" } handlePackwiz