From 95d15555f4c14ba5735fd08af3774417406fb8c2 Mon Sep 17 00:00:00 2001 From: Geoff Bourne Date: Sun, 6 Aug 2023 15:12:29 -0500 Subject: [PATCH] Added CURSEFORGE_FILES support (#2322) --- .github/workflows/build-multiarch.yml | 3 +- .github/workflows/verify-pr.yml | 3 +- Dockerfile | 2 +- README.md | 60 ----- docs/configuration/jvm-options.md | 4 +- docs/configuration/misc-options.md | 4 +- docs/misc/contributing/development.md | 2 - docs/mods-and-plugins/curseforge-files.md | 45 ++++ docs/mods-and-plugins/forge-api.md | 65 ----- examples/curseforge-files/docker-compose.yml | 17 ++ examples/docker-compose-rconcmd.yml | 10 +- notes/container-network-namespaces.drawio.png | Bin 0 -> 132725 bytes scripts/start-setupDatapack | 2 +- scripts/start-setupForgeApiMods | 244 ------------------ scripts/start-setupModpack | 82 +++--- .../cf_files/docker-compose.yml | 22 ++ .../{forgeapimods_file => cf_files}/fake.jar | 0 tests/setuponlytests/cf_files/listing.txt | 1 + tests/setuponlytests/cf_files/require.sh | 1 + tests/setuponlytests/cf_files/verify.sh | 5 + .../forgeapimods_file/docker-compose.yml | 27 -- .../forgeapimods_file/forgeapi_mods.json | 11 - .../forgeapimods_file/require.sh | 2 - .../forgeapimods_file/verify.sh | 5 - .../forgeapimods_gametype/docker-compose.yml | 30 --- .../forgeapimods_gametype/fake.jar | 0 .../forgeapimods_gametype/require.sh | 2 - .../forgeapimods_gametype/verify.sh | 5 - .../docker-compose.yml | 26 -- .../forgeapimods_projectids/fake.jar | 0 .../forgeapimods_projectids/require.sh | 2 - .../forgeapimods_projectids/verify.sh | 6 - 32 files changed, 143 insertions(+), 545 deletions(-) create mode 100644 docs/mods-and-plugins/curseforge-files.md delete mode 100644 docs/mods-and-plugins/forge-api.md create mode 100644 examples/curseforge-files/docker-compose.yml create mode 100644 notes/container-network-namespaces.drawio.png delete mode 100644 scripts/start-setupForgeApiMods create mode 100644 tests/setuponlytests/cf_files/docker-compose.yml rename tests/setuponlytests/{forgeapimods_file => cf_files}/fake.jar (100%) create mode 100644 tests/setuponlytests/cf_files/listing.txt create mode 100644 tests/setuponlytests/cf_files/require.sh create mode 100644 tests/setuponlytests/cf_files/verify.sh delete mode 100644 tests/setuponlytests/forgeapimods_file/docker-compose.yml delete mode 100644 tests/setuponlytests/forgeapimods_file/forgeapi_mods.json delete mode 100644 tests/setuponlytests/forgeapimods_file/require.sh delete mode 100644 tests/setuponlytests/forgeapimods_file/verify.sh delete mode 100644 tests/setuponlytests/forgeapimods_gametype/docker-compose.yml delete mode 100644 tests/setuponlytests/forgeapimods_gametype/fake.jar delete mode 100644 tests/setuponlytests/forgeapimods_gametype/require.sh delete mode 100644 tests/setuponlytests/forgeapimods_gametype/verify.sh delete mode 100644 tests/setuponlytests/forgeapimods_projectids/docker-compose.yml delete mode 100644 tests/setuponlytests/forgeapimods_projectids/fake.jar delete mode 100644 tests/setuponlytests/forgeapimods_projectids/require.sh delete mode 100644 tests/setuponlytests/forgeapimods_projectids/verify.sh diff --git a/.github/workflows/build-multiarch.yml b/.github/workflows/build-multiarch.yml index 25dc3e08..644e3d7b 100644 --- a/.github/workflows/build-multiarch.yml +++ b/.github/workflows/build-multiarch.yml @@ -163,8 +163,7 @@ jobs: env: MINECRAFT_VERSION: ${{ matrix.mcVersion }} VARIANT: ${{ matrix.variant }} - MODS_FORGEAPI_KEY: ${{ secrets.MODS_FORGEAPI_KEY }} - CF_API_KEY: ${{ secrets.MODS_FORGEAPI_KEY }} + CF_API_KEY: ${{ secrets.CF_API_KEY }} run: | tests/test.sh diff --git a/.github/workflows/verify-pr.yml b/.github/workflows/verify-pr.yml index 3601ad35..520ec58f 100644 --- a/.github/workflows/verify-pr.yml +++ b/.github/workflows/verify-pr.yml @@ -83,8 +83,7 @@ jobs: env: MINECRAFT_VERSION: ${{ matrix.mcVersion }} VARIANT: ${{ matrix.variant }} - MODS_FORGEAPI_KEY: ${{ secrets.MODS_FORGEAPI_KEY }} - CF_API_KEY: ${{ secrets.MODS_FORGEAPI_KEY }} + CF_API_KEY: ${{ secrets.CF_API_KEY }} DEBUG: ${{ runner.debug }} run: | tests/test.sh diff --git a/Dockerfile b/Dockerfile index 52eee170..cb89e66f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -42,7 +42,7 @@ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \ --var version=1.9.0 --var app=mc-server-runner --file {{.app}} \ --from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz -ARG MC_HELPER_VERSION=1.32.9 +ARG MC_HELPER_VERSION=1.33.2 ARG MC_HELPER_BASE_URL=https://github.com/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/README.md b/README.md index 5a67ce17..6388e752 100644 --- a/README.md +++ b/README.md @@ -895,66 +895,6 @@ You may also download or copy over individual mods using the `MODS` environment docker run -d -e MODS=https://www.example.com/mods/mod1.jar,/plugins/common,/plugins/special/mod2.jar ... -### ForgeAPI usage to use non-version specific projects - -**NOTE:** This potentially could lead to unexpected behavior if the Mod receives an update with unexpected behavior. - -This is more complicated because you will be pulling/using the latest mod for the release of your game. To get started make sure you have a [CursedForge API Key](https://docs.curseforge.com/#getting-started). Then use the environmental parameters in your docker build. - -Please be aware of the following when using these options for your mods: -* Mod Release types: Release, Beta, and Alpha. -* Mod dependencies: Required and Optional -* Mod family: Fabric, Forge, and Bukkit. - -Parameters to use the ForgeAPI: - -* `MODS_FORGEAPI_KEY` - Required -* `MODS_FORGEAPI_FILE` - Required or use MODS_FORGEAPI_PROJECTIDS (Overrides MODS_FORGEAPI_PROJECTIDS) -* `MODS_FORGEAPI_PROJECTIDS` - Required or use MODS_FORGEAPI_FILE -* `MODS_FORGEAPI_RELEASES` - Default is release, Options: [Release|Beta|Alpha] -* `MODS_FORGEAPI_DOWNLOAD_DEPENDENCIES` - Default is False, attempts to download required mods (releaseType Release) defined in Forge. -* `MODS_FORGEAPI_IGNORE_GAMETYPE` - Default is False, Allows for filtering mods on family type: FORGE, FABRIC, and BUKKIT. (Does not filter for Vanilla or custom) -* `REMOVE_OLD_FORGEAPI_MODS` - Default is False -* `REMOVE_OLD_DATAPACKS_DEPTH` - Default is 1 -* `REMOVE_OLD_DATAPACKS_INCLUDE` - Default is *.jar - -Example of expected forge api project ids, releases, and key: - -```yaml - MODS_FORGEAPI_PROJECTIDS: 306612,256717 - MODS_FORGEAPI_RELEASES: Release - MODS_FORGEAPI_KEY: $WRX... -``` - -Example of expected ForgeAPI file format. - -**Field Description**: -* `name` is currently unused, but can be used to document each entry. -* `projectId` id is the id found on the CurseForge website for a particular mod -* `releaseType` Type corresponds to forge's R, B, A icon for each file. Default Release, options are (release|beta|alpha). -* `fileName` is used for version pinning if latest file will not work for you. - -```json -[ - { - "name": "fabric api", - "projectId": "306612", - "releaseType": "release" - }, - { - "name": "fabric voice mod", - "projectId": "416089", - "releaseType": "beta" - }, - { - "name": "Biomes o plenty", - "projectId": "220318", - "fileName": "BiomesOPlenty-1.18.1-15.0.0.100-universal.jar", - "releaseType": "release" - } -] -``` - ### 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. diff --git a/docs/configuration/jvm-options.md b/docs/configuration/jvm-options.md index 262084e4..d0b571ba 100644 --- a/docs/configuration/jvm-options.md +++ b/docs/configuration/jvm-options.md @@ -70,7 +70,9 @@ To enable remote JMX, such as for profiling with VisualVM or JMC, add the enviro ## Enable Aikar's Flags -[Aikar has done some research](https://aikar.co/2018/07/02/tuning-the-jvm-g1gc-garbage-collector-flags-for-minecraft/) into finding the optimal JVM flags for GC tuning, which becomes more important as more users are connected concurrently. The set of flags documented there can be added using +[Aikar has done some research](https://aikar.co/2018/07/02/tuning-the-jvm-g1gc-garbage-collector-flags-for-minecraft/) into finding the optimal JVM flags for GC tuning, which becomes more important as more users are connected concurrently. [PaperMC also has an explanation](https://docs.papermc.io/paper/aikars-flags) of what the JVM flags are doing. + +The set of flags documented there can be added using -e USE_AIKAR_FLAGS=true diff --git a/docs/configuration/misc-options.md b/docs/configuration/misc-options.md index 488eee48..5dac0996 100644 --- a/docs/configuration/misc-options.md +++ b/docs/configuration/misc-options.md @@ -61,7 +61,9 @@ If you would like to `docker attach` to the Minecraft server console with color To allow time for players to finish what they're doing during a graceful server shutdown, set `STOP_SERVER_ANNOUNCE_DELAY` to a number of seconds to delay after an announcement is posted by the server. -> **NOTE** be sure to adjust Docker's shutdown timeout accordingly, such as using [the -t option on docker-compose down](https://docs.docker.com/compose/reference/down/). +!!! warning + + Be sure to adjust Docker's shutdown timeout accordingly, such as using [the -t option on docker-compose down](https://docs.docker.com/compose/reference/down/) or set the [stop_grace_period](https://docs.docker.com/compose/compose-file/05-services/#stop_grace_period) in the compose file. ## OpenJ9 Specific Options diff --git a/docs/misc/contributing/development.md b/docs/misc/contributing/development.md index 525d3ea4..c043df20 100644 --- a/docs/misc/contributing/development.md +++ b/docs/misc/contributing/development.md @@ -17,7 +17,6 @@ First, build a baseline of the image to include the packages needed by existing PowerShell: (Example of building and testing ForgeAPI) ```powershell -$env:MODS_FORGEAPI_KEY='$2a$...' $env:FOLDER_TO_TEST="forgeapimods_projectids" $env:IMAGE_TO_TEST="mc-dev" docker build -t $env:IMAGE_TO_TEST . @@ -36,7 +35,6 @@ docker build --build-arg BASE_IMAGE=$env:BASE_IMAGE -t $env:IMAGE_TO_TEST . Bash: (Example of building and testing ForgeAPI) ```bash -export MODS_FORGEAPI_KEY='$2a$...' export FOLDER_TO_TEST="forgeapimods_file" export IMAGE_TO_TEST="mc-dev" docker build -t $IMAGE_TO_TEST . diff --git a/docs/mods-and-plugins/curseforge-files.md b/docs/mods-and-plugins/curseforge-files.md new file mode 100644 index 00000000..6330a45d --- /dev/null +++ b/docs/mods-and-plugins/curseforge-files.md @@ -0,0 +1,45 @@ +# Auto-download from CurseForge + +Mods and plugins can be auto-downloaded and upgraded from CurseForge by setting `CURSEFORGE_FILES` to a comma or space delimited list of [project-file references](#project-file-references). References removed from the declaration are automatically cleaned up and setting `CURSEFORGE_FILES` to an empty string removes all previously managed project-files. + +A specific file can be omitted from each reference to allow for auto-selecting the newest version of the selected mod/plugin. The resolved `VERSION` and `TYPE` will be taken into consideration for selecting the appropriate file. + +!!! warning "CurseForge API key usage" + + A CurseForge API key must be allocated and set with `CF_API_KEY` [as described here](../types-and-platforms/mod-platforms/auto-curseforge.md#api-key). + +## Project-file references + +The following formats are supported in the list of project-file references: + +- A project page URL, such as `https://www.curseforge.com/minecraft/mc-mods/jei`. _The newest applicable file will be automatically selected._ +- A file page URL, such as `https://www.curseforge.com/minecraft/mc-mods/jei/files/4593548` +- Project slug, such as `jei`. _The newest applicable file will be automatically selected._ +- Project ID, such as `238222`. _The newest applicable file will be automatically selected._ +- Project slug or ID, `:`, and a file ID, such as `jei:4593548` or `238222:4593548` +- Project slug or ID, `@`, and a partial filename, such as `jei@10.2.1.1005` + +An `@` followed by the container path to a listing file can also be provided as a project-file reference. Each line is processed as a reference where blank lines and comments that start with `#` are ignored. + +For example, `CURSEFORGE_FILES` can be set to "@/extras/cf-mods.txt" where the container file `/extras/cf-mods.txt` contains + +```text +# This comment is ignored +jei:10.2.1.1005 + +# This and previous blank line are ignore +geckolib +aquaculture +naturalist +``` + +!!! tip "Docker Compose" + + Making use of the space delimited option, compose file declarations can be organized nicely with a [multi-line string](https://yaml-multiline.info/), such as + + ```yaml + CURSEFORGE_FILES: | + geckolib + aquaculture + naturalist + ``` diff --git a/docs/mods-and-plugins/forge-api.md b/docs/mods-and-plugins/forge-api.md deleted file mode 100644 index 492b04fc..00000000 --- a/docs/mods-and-plugins/forge-api.md +++ /dev/null @@ -1,65 +0,0 @@ -# Forge API - -## ForgeAPI usage to use non-version specific projects - -!!! warning "Deprecated" - This approach will soon be deprecated in favor of a variation of `AUTO_CURSEFORGE`. - -!!! warning - This potentially could lead to unexpected behavior if the Mod receives an update with unexpected behavior. - -This is more complicated because you will be pulling/using the latest mod for the release of your game. To get started make sure you have a [CursedForge API Key](https://docs.curseforge.com/#getting-started). Then use the environmental parameters in your docker build. - -Please be aware of the following when using these options for your mods: -* Mod Release types: Release, Beta, and Alpha. -* Mod dependencies: Required and Optional -* Mod family: Fabric, Forge, and Bukkit. - -Parameters to use the ForgeAPI: - -* `MODS_FORGEAPI_KEY` - Required -* `MODS_FORGEAPI_FILE` - Required or use MODS_FORGEAPI_PROJECTIDS (Overrides MODS_FORGEAPI_PROJECTIDS) -* `MODS_FORGEAPI_PROJECTIDS` - Required or use MODS_FORGEAPI_FILE -* `MODS_FORGEAPI_RELEASES` - Default is release, Options: [Release|Beta|Alpha] -* `MODS_FORGEAPI_DOWNLOAD_DEPENDENCIES` - Default is False, attempts to download required mods (releaseType Release) defined in Forge. -* `MODS_FORGEAPI_IGNORE_GAMETYPE` - Default is False, Allows for filtering mods on family type: FORGE, FABRIC, and BUKKIT. (Does not filter for Vanilla or custom) -* `REMOVE_OLD_FORGEAPI_MODS` - Default is False -* `REMOVE_OLD_DATAPACKS_DEPTH` - Default is 1 -* `REMOVE_OLD_DATAPACKS_INCLUDE` - Default is *.jar - -Example of expected forge api project ids, releases, and key: - -```yaml - MODS_FORGEAPI_PROJECTIDS: 306612,256717 - MODS_FORGEAPI_RELEASES: Release - MODS_FORGEAPI_KEY: $WRX... -``` - -Example of expected ForgeAPI file format. - -**Field Description**: -* `name` is currently unused, but can be used to document each entry. -* `projectId` id is the id found on the CurseForge website for a particular mod -* `releaseType` Type corresponds to forge's R, B, A icon for each file. Default Release, options are (release|beta|alpha). -* `fileName` is used for version pinning if latest file will not work for you. - -```json -[ - { - "name": "fabric api", - "projectId": "306612", - "releaseType": "release" - }, - { - "name": "fabric voice mod", - "projectId": "416089", - "releaseType": "beta" - }, - { - "name": "Biomes o plenty", - "projectId": "220318", - "fileName": "BiomesOPlenty-1.18.1-15.0.0.100-universal.jar", - "releaseType": "release" - } -] -``` diff --git a/examples/curseforge-files/docker-compose.yml b/examples/curseforge-files/docker-compose.yml new file mode 100644 index 00000000..e2b1ac81 --- /dev/null +++ b/examples/curseforge-files/docker-compose.yml @@ -0,0 +1,17 @@ +version: "3.8" + +services: + mc: + image: itzg/minecraft-server + environment: + EULA: true + TYPE: FORGE + # allocate from https://console.curseforge.com/ and set in .env file + CF_API_KEY: ${CF_API_KEY} + VERSION: 1.19.2 + CURSEFORGE_FILES: | + geckolib + aquaculture + naturalist + ports: + - "25565:25565" \ No newline at end of file diff --git a/examples/docker-compose-rconcmd.yml b/examples/docker-compose-rconcmd.yml index ad8ff60a..0f44e528 100644 --- a/examples/docker-compose-rconcmd.yml +++ b/examples/docker-compose-rconcmd.yml @@ -10,10 +10,12 @@ services: environment: EULA: "TRUE" TYPE: FABRIC - MODS_FORGEAPI_PROJECTIDS: 433175 - MODS_FORGEAPI_KEY: ${MODS_FORGEAPI_KEY} - MODS_FORGEAPI_DOWNLOAD_DEPENDENCIES: "TRUE" - REMOVE_OLD_FORGEAPI_MODS: "TRUE" + MEMORY: "2G" + CURSEFORGE_FILES: | + fabric-api + chunky-pregenerator + # allocate from https://console.curseforge.com/ and set in .env file + CF_API_KEY: ${CF_API_KEY} # YAML Heredoc, be sure to use '|-' this will remove the first newline and final new line. # This is versus '|' that will leaving with two empty strings at top and bottom. RCON_CMDS_STARTUP: |- diff --git a/notes/container-network-namespaces.drawio.png b/notes/container-network-namespaces.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..92bebeaa06e5cbbc1925ac982600c856ddc77840 GIT binary patch literal 132725 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Ə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

t;`Ko?l?|MP$VDQ|luBm81iSh(aN)Hc0Cr0C=c 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

Ms$}YlRFi|7AI}7W5t?joYP2N& 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 literal 0 HcmV?d00001 diff --git a/scripts/start-setupDatapack b/scripts/start-setupDatapack index 9690ae0f..0df7920a 100755 --- a/scripts/start-setupDatapack +++ b/scripts/start-setupDatapack @@ -84,4 +84,4 @@ if [[ ${VANILLATWEAKS_FILE} || ${VANILLATWEAKS_SHARECODE} ]]; then --pack-files="$VANILLATWEAKS_FILE" fi -exec "${SCRIPTS:-/}start-setupForgeApiMods" "$@" +exec "${SCRIPTS:-/}start-setupModpack" "$@" diff --git a/scripts/start-setupForgeApiMods b/scripts/start-setupForgeApiMods deleted file mode 100644 index 9986dd26..00000000 --- a/scripts/start-setupForgeApiMods +++ /dev/null @@ -1,244 +0,0 @@ -#!/bin/bash - -set -e -o pipefail - -: "${MODS_FORGEAPI_KEY:=}" -: "${REMOVE_OLD_FORGEAPI_MODS:=false}" -: "${MODS_FORGEAPI_PROJECTIDS:=}" -: "${MODS_FORGEAPI_FILE:=}" -: "${MODS_FORGEAPI_RELEASES:=RELEASE}" -: "${MODS_FORGEAPI_DOWNLOAD_DEPENDENCIES:=false}" -: "${MODS_FORGEAPI_IGNORE_GAMETYPE:=false}" -: "${REMOVE_OLD_MODS_DEPTH:=1} " -: "${REMOVE_OLD_MODS_INCLUDE:=*.jar,*-version.json}" - -# FORGEAPI_BASE_URL used in manifest downloads below -FORGEAPI_BASE_URL=${FORGEAPI_BASE_URL:-https://api.curseforge.com/v1} -RELEASE_NUMBER_FILTER=1 -MINECRAFT_GAME_ID=432 -FILTER_BY_FAMILY=false -DOWNLOADED_MODIDS=() -out_dir=/data/mods - -# shellcheck source=start-utils -. "${SCRIPTS:-/}start-utils" -isDebugging && set -x - -# Remove old mods/plugins -if isTrue "${REMOVE_OLD_FORGEAPI_MODS}"; then - removeOldMods "/data/mods" -fi - -# Family filter is on by default for Forge, Fabric, and Bukkit -updateFamilyFilter(){ - if isFamily "FORGE" "FABRIC" "BUKKIT"; then - FILTER_BY_FAMILY=true - fi -} - -ensureModKey(){ - if [ -z "$MODS_FORGEAPI_KEY" ]; then - log "ERROR: MODS_FORGEAPI_KEY REQUIRED to Connect to FORGE API, you supplied: ${MODS_FORGEAPI_KEY}" - exit 2 - fi -} - -# Set the global release type per the text. -# NOTE: downcasing release type for comparing types. -updateReleaseNumber(){ - releaseType=$1 - if [ "release" = "${releaseType,,}" ] || [ 1 = "${releaseType,,}" ]; then - RELEASE_NUMBER_FILTER=1 - elif [ "beta" = "${releaseType,,}" ] || [ 2 = "${releaseType,,}" ]; then - RELEASE_NUMBER_FILTER=2 - elif [ "alpha" = "${releaseType,,}" ] || [ 3 = "${releaseType,,}" ]; then - RELEASE_NUMBER_FILTER=3 - fi -} - -retrieveVersionTypeNumber(){ - VERSION_NAME=$(get_major_version "$VERSION") - minecraft_types=$(curl -X GET -s \ - "${FORGEAPI_BASE_URL}/games/${MINECRAFT_GAME_ID}/version-types" \ - -H 'Accept: application/json' -H 'x-api-key: '${MODS_FORGEAPI_KEY}'') - - if [ ! "$minecraft_types" ]; then - log "ERROR: unable to retrieve version types for ${VERSION_NAME} from ForgeAPI. Check Forge API key or supplied Minecraft version" - exit 2 - fi - - TYPE_ID=$(jq -n "$minecraft_types" | jq --arg VERSION_NAME "$VERSION_NAME" -jc ' - .data[]? | select(.name==$VERSION_NAME) | .id') - - if [ ! "$TYPE_ID" ]; then - log "ERROR: unable to retrieve version types for ${VERSION_NAME} from ForgeAPI" - exit 2 - fi -} - -modFileByProjectID(){ - project_id=$(echo "$1" | tr -d '"') - project_id_release_type=$2 - project_id_file_name=$3 - unset PROJECT_FILE - - # if Type id isn't defined use minecraft version to go get it. - if [ ! "$TYPE_ID" ]; then - retrieveVersionTypeNumber - fi - - # JQ is struggling with larger page sizes so having to pagination for mods with a lot of releases - pageSize=42 - index=0 - total_count=1 - - while [ $index -lt $total_count ]; do - project_files=$(curl -X GET -s \ - "${FORGEAPI_BASE_URL}/mods/${project_id}/files?gameVersionTypeId=${TYPE_ID}&index=${index}&pageSize=${pageSize}" \ - -H 'Accept: application/json' -H 'x-api-key: '${MODS_FORGEAPI_KEY}'') - - if [ ! "$project_files" ]; then - log "ERROR: unable to retrieve any project id files for ${project_id} from ForgeAPI" - exit 2 - fi - # Use project files to grab out the total count of mods. - total_count=$(jq -n "$project_files" | jq -c '.pagination.totalCount' ) - - # Checking for a individual release type input, if not use global - if [ "$project_id_release_type" ]; then - updateReleaseNumber "$project_id_release_type" - unset project_id_release_type - else - updateReleaseNumber $MODS_FORGEAPI_RELEASES - fi - - # grabs the highest ID of the releaseTypes selected. - # Default is 1 for Release, Beta is 2, and Alpha is 3. Using less than we can validate highest release. - if [ "$project_id_file_name" ]; then - # Looks for file by name - current_project_file=$(jq -n "$project_files" | jq --arg FILE_NAME "$project_id_file_name" -jc ' - .data | map(select(.fileName<=($FILE_NAME))) | .[0] // empty') - elif isFalse "${MODS_FORGEAPI_IGNORE_GAMETYPE}" && $FILTER_BY_FAMILY ; then - # Looks for file by version and server type in lowercase - current_project_file=$(jq -n "$project_files" | jq --arg RELEASE_FILTER "$RELEASE_NUMBER_FILTER" --arg GAME_TYPE "${FAMILY,,}" --arg VERSION "$VANILLA_VERSION" -jc ' - .data | sort_by(.id) | reverse | map(select(.gameVersions[] | ascii_downcase | contains ($GAME_TYPE))) | map(select(.gameVersions[] | contains ($VERSION))) | map(select(.releaseType<=($RELEASE_FILTER|tonumber))) | .[0] // empty') - else - # Looks for file by version only. - current_project_file=$(jq -n "$project_files" | jq --arg RELEASE_FILTER "$RELEASE_NUMBER_FILTER" --arg VERSION "$VANILLA_VERSION" -jc ' - .data | sort_by(.id) | reverse | map(select(.gameVersions[] | contains ($VERSION))) | map(select(.releaseType<=($RELEASE_FILTER|tonumber))) | .[0] // empty') - fi - - # Logic to grab the latest release over the entire pagination - if [ ! "$PROJECT_FILE" ]; then - PROJECT_FILE=$current_project_file - elif [ "$current_project_file" ]; then - current_project_file_id=$(jq -n "$current_project_file" | jq -jc '.id // empty' ) - PROJECT_FILE_ID=$(jq -n "$PROJECT_FILE" | jq -jc '.id // empty' ) - if (( current_project_file_id > PROJECT_FILE_ID )); then - PROJECT_FILE=$current_project_file - fi - fi - - # check to see if we have gone to far or lost our index and exit with an error - if [ -z "$index" ] || [ -z "$total_count" ] || [ $index -ge "$total_count" ]; then - log "ERROR: Unable to retrieve any files for ${project_id} from ForgeAPI also Validate files have release type associated with no. ${RELEASE_NUMBER_FILTER}" - exit 2 - fi - # Increment start index to new set. - index=$((index + pageSize)) - done - if [ ! "$PROJECT_FILE" ]; then - log "ERROR: Unable to retrieve any files for ${project_id}, Release Type: ${RELEASE_NUMBER_FILTER}, FAMILY_TYPE: ${FAMILY,,}" - exit 2 - fi -} - -downloadModPackfromModFile() { - if [ ! "$PROJECT_FILE" ]; then - log "ERROR: Project File not found from the ForgeAPI" - exit 2 - fi - # trys to make the output directory incase it doesnt exist. - mkdir -p "$out_dir" - debug "DEBUG: PROJECT_FILE: ${PROJECT_FILE}" - # grabs needed values from our json return - file_name=$(jq -n "$PROJECT_FILE" | jq -jc '.fileName // empty' ) - download_url=$(jq -n "$PROJECT_FILE" | jq -jc '.downloadUrl // empty' ) - mod_id=$(jq -n "$PROJECT_FILE" | jq -jc '.modId // empty' ) - - if [ ! -f "${out_dir}/${file_name}" ]; then - echo "Downloading ${download_url}" - # Track the mods we have downloaded. - DOWNLOADED_MODIDS+=("${mod_id}") - if ! get --skip-up-to-date -o "${out_dir}/${file_name}" "${download_url}"; then - log "ERROR: failed to download from ${download_url}" - exit 2 - fi - fi -} - -downloadDependencies(){ - if [ "$PROJECT_FILE" ]; then - dependencies=$(jq -n "$PROJECT_FILE" | jq -jc '.dependencies' ) - required_dependencies=$(jq -n "$dependencies" | jq --arg REQUIRED_FILTER "3" -jc ' - map(select(.relationType==($REQUIRED_FILTER|tonumber)))') - if [ "$required_dependencies" ]; then - while read -r current_dependency; do - mod_id=$(jq -n "$current_dependency" | jq -jc '.modId' ) - # Validate we have not tried to download the mod yet. - if [[ ! "${DOWNLOADED_MODIDS[*]}" =~ $mod_id ]]; then - modFileByProjectID "$mod_id" "release" - downloadModPackfromModFile - fi - # needs to be piped in to keep look in main process - done < <(jq -n "$required_dependencies" | jq -c '.[]?') - fi - fi -} - -# Use forge api json file to filter and download the correct mods -if [ "$MODS_FORGEAPI_FILE" ] && [ -z "$MODS_FORGEAPI_PROJECTIDS" ]; then - ensureModKey - updateFamilyFilter - if [ ! -f "$MODS_FORGEAPI_FILE" ]; then - log "ERROR: given MODS_FORGEAPI_FILE file does not exist" - exit 2 - fi - debug "DEBUG: MODS_FORGEAPI_KEY: ${MODS_FORGEAPI_FILE}" - # Needs loop here to look up release types befor calling download. - while read -r current_project; do - debug "DEBUG: current_project: ${current_project}" - # Per stack overflow we can use //empty to return empty string that works with -z - project_id=$(jq -n "$current_project" | jq -r '.projectId // empty' ) - current_release_type=$(jq -n "$current_project" | jq -r '.releaseType // empty' ) - current_file_name=$(jq -n "$current_project" | jq -r '.fileName // empty' ) - - # Validate we have not tried to download the mod yet. - if [[ ! "${DOWNLOADED_MODIDS[*]}" =~ $project_id ]]; then - modFileByProjectID "$project_id" "$current_release_type" "$current_file_name" - downloadModPackfromModFile - if isTrue "${MODS_FORGEAPI_DOWNLOAD_DEPENDENCIES}"; then - downloadDependencies - fi - fi - # needs to be piped in to keep look in main process - done < <(jq -c '.[]?' $MODS_FORGEAPI_FILE) -fi - -# Use only project ids and global release data. -if [ "$MODS_FORGEAPI_PROJECTIDS" ] && [ -z "$MODS_FORGEAPI_FILE" ]; then - ensureModKey - updateFamilyFilter - for project_id in ${MODS_FORGEAPI_PROJECTIDS//,/ }; do - # Validate we have not tried to download the mod yet. - if [[ ! "${DOWNLOADED_MODIDS[*]}" =~ $project_id ]]; then - modFileByProjectID $project_id - downloadModPackfromModFile - if isTrue "${MODS_FORGEAPI_DOWNLOAD_DEPENDENCIES}"; then - downloadDependencies - fi - fi - done -fi - -exec "${SCRIPTS:-/}start-setupModpack" "$@" diff --git a/scripts/start-setupModpack b/scripts/start-setupModpack index ef0b6625..3a77db37 100755 --- a/scripts/start-setupModpack +++ b/scripts/start-setupModpack @@ -143,51 +143,6 @@ function handleListings() { fi } -function handleCurseForgeManifest() { -if [[ "$MANIFEST" ]]; then - if [[ -e "$MANIFEST" ]]; then - EFFECTIVE_MANIFEST_FILE=$MANIFEST - elif isURL "$MANIFEST"; then - EFFECTIVE_MANIFEST_FILE=/tmp/manifest.json - EFFECTIVE_MANIFEST_URL=$(curl -Ls -o /dev/null -w "%{effective_url}" "$MANIFEST") - curl -Ls -o $EFFECTIVE_MANIFEST_FILE "$EFFECTIVE_MANIFEST_URL" - else - log "MANIFEST='$MANIFEST' is not a valid manifest url or location" - exit 2 - fi - -case "X$EFFECTIVE_MANIFEST_FILE" in - X*.json) - if [ -f "${EFFECTIVE_MANIFEST_FILE}" ]; then - MOD_DIR=${FTB_BASE_DIR:-/data}/mods - if [ ! -d "$MOD_DIR" ] - then - log "Creating mods dir $MOD_DIR" - mkdir -p "$MOD_DIR" - fi - log "Starting manifest download..." - jq -r '.files[] | (.projectID|tostring) + " " + (.fileID|tostring)' "${EFFECTIVE_MANIFEST_FILE}" | while read -r p f - do - if [ ! -f $MOD_DIR/${p}_${f}.jar ] - then - redirect_url="$(curl -Ls -o /dev/null -w "%{effective_url}" "${CURSE_URL_BASE}/${p}")" - url="$redirect_url/download/${f}/file" - log Downloading curseforge mod $url - # Manifest usually doesn't have mod names. Using id should be fine, tho - curl -sSL "${url}" -o $MOD_DIR/${p}_${f}.jar - fi - done - else - log "Could not find manifest file, insufficient privileges, or malformed path." - fi - ;; - *) - log "Invalid manifest file for modpack. Please make sure it is a .json file." - ;; -esac -fi -} - function handleGenericPacks() { : "${GENERIC_PACKS:=${GENERIC_PACK}}" : "${GENERIC_PACKS_PREFIX:=}" @@ -296,16 +251,51 @@ function handleModrinthProjects() { fi } +function handleCurseForgeFiles() { + args=() + if usesMods && ! usesPlugins; then + args+=(--default-category mc-mods) + elif usesPlugins && ! usesMods; then + args+=(--default-category bukkit-plugins) + fi + + case "${TYPE,,}" in + forge|fabric|quilt) + args+=(--mod-loader "$TYPE") + ;; + esac + + # shellcheck disable=SC2086 + # since we want CURSEFORGE_FILES to expand + mc-image-helper curseforge-files \ + "${args[@]}" \ + ${CURSEFORGE_FILES} +} + handlePackwiz handleModpackZip handleListings -handleCurseForgeManifest +if [[ $MANIFEST ]]; then + log "ERROR: MANIFEST is no longer supported." + log " Use MOD_PLATFORM=AUTO_CURSEFORGE and CF_MODPACK_MANIFEST instead" + exit 1 +fi + +if [[ $MODS_FORGEAPI_KEY || $MODS_FORGEAPI_FILE || $MODS_FORGEAPI_PROJECTIDS ]]; then + log "ERROR the MODS_FORGEAPI_FILE / MODS_FORGEAPI_PROJECTIDS feature is no longer supported" + log " Use CURSEFORGE_FILES instead." + exit 1 +fi handleGenericPacks handleModrinthProjects +if usesMods || usesPlugins; then + handleCurseForgeFiles +fi + exec "${SCRIPTS:-/}start-setupModconfig" "$@" diff --git a/tests/setuponlytests/cf_files/docker-compose.yml b/tests/setuponlytests/cf_files/docker-compose.yml new file mode 100644 index 00000000..89e567ac --- /dev/null +++ b/tests/setuponlytests/cf_files/docker-compose.yml @@ -0,0 +1,22 @@ +version: "3" + +services: + mc: + restart: "no" + image: ${IMAGE_TO_TEST:-itzg/minecraft-server} + environment: + EULA: "TRUE" + SETUP_ONLY: "TRUE" + TYPE: FABRIC + VERSION: 1.18.2 + # Contains mix of Forge and Fabric mods + CURSEFORGE_FILES: | + https://www.curseforge.com/minecraft/mc-mods/clumps/files/4153343 + jei + 306612 + @/extras/listing.txt + CF_API_KEY: ${CF_API_KEY} + volumes: + - ./data:/data + - ./fake.jar:/servers/fake.jar:ro + - ./listing.txt:/extras/listing.txt:ro diff --git a/tests/setuponlytests/forgeapimods_file/fake.jar b/tests/setuponlytests/cf_files/fake.jar similarity index 100% rename from tests/setuponlytests/forgeapimods_file/fake.jar rename to tests/setuponlytests/cf_files/fake.jar diff --git a/tests/setuponlytests/cf_files/listing.txt b/tests/setuponlytests/cf_files/listing.txt new file mode 100644 index 00000000..98e7394a --- /dev/null +++ b/tests/setuponlytests/cf_files/listing.txt @@ -0,0 +1 @@ +architectury-api@4.11.93 \ No newline at end of file diff --git a/tests/setuponlytests/cf_files/require.sh b/tests/setuponlytests/cf_files/require.sh new file mode 100644 index 00000000..92af176b --- /dev/null +++ b/tests/setuponlytests/cf_files/require.sh @@ -0,0 +1 @@ +[[ $CF_API_KEY ]] || exit 1 diff --git a/tests/setuponlytests/cf_files/verify.sh b/tests/setuponlytests/cf_files/verify.sh new file mode 100644 index 00000000..04a76f8f --- /dev/null +++ b/tests/setuponlytests/cf_files/verify.sh @@ -0,0 +1,5 @@ +mc-image-helper assert fileExists "/data/mods/architectury-*-fabric.jar" +mc-image-helper assert fileExists "/data/mods/Clumps-fabric-*.jar" +mc-image-helper assert fileExists "/data/mods/fabric-api-*.jar" +mc-image-helper assert fileExists "/data/mods/jei-*-fabric-*.jar" + diff --git a/tests/setuponlytests/forgeapimods_file/docker-compose.yml b/tests/setuponlytests/forgeapimods_file/docker-compose.yml deleted file mode 100644 index d79222fe..00000000 --- a/tests/setuponlytests/forgeapimods_file/docker-compose.yml +++ /dev/null @@ -1,27 +0,0 @@ -version: "3" - -services: - mc: - restart: "no" - image: ${IMAGE_TO_TEST:-itzg/minecraft-server} - environment: - EULA: "TRUE" - SETUP_ONLY: "TRUE" - DEBUG: "FALSE" - # Using custom to bypass Fabric setup - TYPE: CUSTOM - # Using family to test FORGEAPI Family filter. - FAMILY: FABRIC - CUSTOM_SERVER: /servers/fake.jar - VERSION: 1.18.2 - MODS_FORGEAPI_FILE: /config/forgeapi_mods.json - # Key is passed by Github Workflow - # This should be coming from github secrets. - MODS_FORGEAPI_KEY: ${MODS_FORGEAPI_KEY} - REMOVE_OLD_FORGEAPI_MODS: "TRUE" - # Validates that Fabric API gets download as a dependency. - MODS_FORGEAPI_DOWNLOAD_DEPENDENCIES: "TRUE" - volumes: - - ./forgeapi_mods.json:/config/forgeapi_mods.json:ro - - ./data:/data - - ./fake.jar:/servers/fake.jar diff --git a/tests/setuponlytests/forgeapimods_file/forgeapi_mods.json b/tests/setuponlytests/forgeapimods_file/forgeapi_mods.json deleted file mode 100644 index bd005e70..00000000 --- a/tests/setuponlytests/forgeapimods_file/forgeapi_mods.json +++ /dev/null @@ -1,11 +0,0 @@ -[ - { - "name": "Flan (Land Claim Tool)", - "projectId": "404578" - }, - { - "name": "Fabric Voice Mod", - "projectId": "416089", - "releaseType": "beta" - } -] diff --git a/tests/setuponlytests/forgeapimods_file/require.sh b/tests/setuponlytests/forgeapimods_file/require.sh deleted file mode 100644 index 4b9579f3..00000000 --- a/tests/setuponlytests/forgeapimods_file/require.sh +++ /dev/null @@ -1,2 +0,0 @@ -[[ $MINECRAFT_VERSION == LATEST ]] || exit 1 -[[ $MODS_FORGEAPI_KEY ]] || exit 1 diff --git a/tests/setuponlytests/forgeapimods_file/verify.sh b/tests/setuponlytests/forgeapimods_file/verify.sh deleted file mode 100644 index 145e4335..00000000 --- a/tests/setuponlytests/forgeapimods_file/verify.sh +++ /dev/null @@ -1,5 +0,0 @@ -# Validates specific beta call out for specific mod: -mc-image-helper assert fileExists "/data/mods/voicechat-fabric*" -mc-image-helper assert fileExists "/data/mods/flan*" -# Dependent of flan: -mc-image-helper assert fileExists "/data/mods/fabric-api*" diff --git a/tests/setuponlytests/forgeapimods_gametype/docker-compose.yml b/tests/setuponlytests/forgeapimods_gametype/docker-compose.yml deleted file mode 100644 index 3373b595..00000000 --- a/tests/setuponlytests/forgeapimods_gametype/docker-compose.yml +++ /dev/null @@ -1,30 +0,0 @@ -version: "3" - -services: - mc: - restart: "no" - image: ${IMAGE_TO_TEST:-itzg/minecraft-server} - environment: - EULA: "TRUE" - SETUP_ONLY: "TRUE" - DEBUG: "FALSE" - # Using custom to bypass Fabric setup - TYPE: CUSTOM - # Using family to test FORGEAPI Family filter. - FAMILY: FABRIC - CUSTOM_SERVER: /servers/fake.jar - VERSION: 1.18.2 - # Validate Skip Gametype Filter: - MODS_FORGEAPI_IGNORE_GAMETYPE: "TRUE" - # Validates that Biomes does not download terrablender - # Using default false for testing: - MODS_FORGEAPI_DOWNLOAD_DEPENDENCIES: "FALSE" - # Contains mix of Forge and Fabric mods - MODS_FORGEAPI_PROJECTIDS: 416089,493246 - # Allows for Beta releases of 416089 the Fabric Voice Mod - MODS_FORGEAPI_RELEASES: BETA - MODS_FORGEAPI_KEY: ${MODS_FORGEAPI_KEY} - REMOVE_OLD_FORGEAPI_MODS: "TRUE" - volumes: - - ./data:/data - - ./fake.jar:/servers/fake.jar diff --git a/tests/setuponlytests/forgeapimods_gametype/fake.jar b/tests/setuponlytests/forgeapimods_gametype/fake.jar deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/setuponlytests/forgeapimods_gametype/require.sh b/tests/setuponlytests/forgeapimods_gametype/require.sh deleted file mode 100644 index 4b9579f3..00000000 --- a/tests/setuponlytests/forgeapimods_gametype/require.sh +++ /dev/null @@ -1,2 +0,0 @@ -[[ $MINECRAFT_VERSION == LATEST ]] || exit 1 -[[ $MODS_FORGEAPI_KEY ]] || exit 1 diff --git a/tests/setuponlytests/forgeapimods_gametype/verify.sh b/tests/setuponlytests/forgeapimods_gametype/verify.sh deleted file mode 100644 index ecb1d00d..00000000 --- a/tests/setuponlytests/forgeapimods_gametype/verify.sh +++ /dev/null @@ -1,5 +0,0 @@ -# testing dependencies don't get downloaded when download dependencies is set to false. -mc-image-helper assert fileExists "/data/mods/voicechat-fabric*" -mc-image-helper assert fileExists "/data/mods/flan*" -# Dependent of flan, but dependencies are set to false: -! mc-image-helper assert fileExists "/data/mods/fabric-api*" diff --git a/tests/setuponlytests/forgeapimods_projectids/docker-compose.yml b/tests/setuponlytests/forgeapimods_projectids/docker-compose.yml deleted file mode 100644 index 418f118b..00000000 --- a/tests/setuponlytests/forgeapimods_projectids/docker-compose.yml +++ /dev/null @@ -1,26 +0,0 @@ -version: "3" - -services: - mc: - restart: "no" - image: ${IMAGE_TO_TEST:-itzg/minecraft-server} - environment: - EULA: "TRUE" - SETUP_ONLY: "TRUE" - # Using custom to bypass Fabric setup - TYPE: CUSTOM - # Validate Skip Gametype Filter for vanilla - # - Currently we do not support filtering on vanilla. - FAMILY: VANILLA - CUSTOM_SERVER: /servers/fake.jar - VERSION: 1.18.2 - MODS_FORGEAPI_DOWNLOAD_DEPENDENCIES: "TRUE" - # Contains mix of Forge and Fabric mods - MODS_FORGEAPI_PROJECTIDS: 416089,419697 - # Allows for Beta releases of 416089 the Fabric Voice Mod - MODS_FORGEAPI_RELEASES: BETA - MODS_FORGEAPI_KEY: ${MODS_FORGEAPI_KEY} - REMOVE_OLD_FORGEAPI_MODS: "TRUE" - volumes: - - ./data:/data - - ./fake.jar:/servers/fake.jar diff --git a/tests/setuponlytests/forgeapimods_projectids/fake.jar b/tests/setuponlytests/forgeapimods_projectids/fake.jar deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/setuponlytests/forgeapimods_projectids/require.sh b/tests/setuponlytests/forgeapimods_projectids/require.sh deleted file mode 100644 index 4b9579f3..00000000 --- a/tests/setuponlytests/forgeapimods_projectids/require.sh +++ /dev/null @@ -1,2 +0,0 @@ -[[ $MINECRAFT_VERSION == LATEST ]] || exit 1 -[[ $MODS_FORGEAPI_KEY ]] || exit 1 diff --git a/tests/setuponlytests/forgeapimods_projectids/verify.sh b/tests/setuponlytests/forgeapimods_projectids/verify.sh deleted file mode 100644 index bb1a51a3..00000000 --- a/tests/setuponlytests/forgeapimods_projectids/verify.sh +++ /dev/null @@ -1,6 +0,0 @@ -# No family filter applied, DO NOT use Fabric or Forge specific name validation as it may cause random breakage. -mc-image-helper assert fileExists "/data/mods/voicechat-fabric-1*" -# Should be pull v4 and higher for 1.18.2: -mc-image-helper assert fileExists "/data/mods/architectury-4*" -mc-image-helper assert fileExists "/data/mods/fabric-api*" -