Compare commits

...

17 Commits

Author SHA1 Message Date
Geoff Bourne
e38cc6ec3b build: upgrade easy-add to 0.8.4 (#2686) 2024-02-27 22:19:29 -06:00
dependabot[bot]
e152875f65 build(deps): bump the patches group in /docs with 1 update (#2684) 2024-02-26 08:22:11 -06:00
dependabot[bot]
f5ceb60335 build(deps): bump the patches group in /docs with 1 update (#2674)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-24 11:28:38 -06:00
nohehf
23d20041fc feat: force include just-enough-resources-jer for create-arcane-engineering modpack (#2679) 2024-02-21 13:08:53 -06:00
Geoff Bourne
5979e65a01 auto-cf: resolve issue where zip compression scheme prevents manifest file extraction (#2678) 2024-02-20 11:10:56 -06:00
Geoff Bourne
d52b9b88a2 Gracefully handle getbukkit.org outage when resolving version (#2675) 2024-02-19 10:57:00 -06:00
Geoff Bourne
b957e4cdfa Improve rate limit detection and log available info (#2672) 2024-02-18 15:12:17 -06:00
Geoff Bourne
e816d37dc3 docs: use consistent style in lazytainer example (#2662) 2024-02-13 08:14:49 -06:00
Geoff Bourne
f17cdbee2b cf: support curseforge files that don't delcare any modloader (#2660) 2024-02-12 18:30:05 -06:00
Geoff Bourne
40653003a4 Fixed handling of Modrinth mods for NeoForge (#2659) 2024-02-12 11:13:02 -06:00
dependabot[bot]
9a29d6812b build(deps): bump the patches group in /docs with 1 update (#2656) 2024-02-12 07:52:35 -06:00
C0D3 M4513R
a03afd7650 Use KettingLauncher (#2655) 2024-02-10 20:04:44 -06:00
Geoff Bourne
f3bec94065 For legacy CURSEFORGE, write ops/whitelist files in final directory (#2654) 2024-02-10 16:02:23 -06:00
Geoff Bourne
ac7bf437ca Fixed support for mc-send-to-console (#2652) 2024-02-10 13:24:06 -06:00
Geoff Bourne
14de9281e2 auto-cf: add option to ignore files missing from previous installation (#2649) 2024-02-09 19:01:32 -06:00
Geoff Bourne
6aaed2da68 Disable REMOVE_OLD_MODS when it interferes with managed mod/plugin features (#2648) 2024-02-09 06:59:05 -06:00
Geoff Bourne
15c2e21e54 auto-cf: support modpack zips using IMPLODE compression method (#2646) 2024-02-08 15:05:12 -06:00
20 changed files with 137 additions and 68 deletions

View File

@@ -25,7 +25,7 @@ EXPOSE 25565
ARG APPS_REV=1 ARG APPS_REV=1
ARG GITHUB_BASEURL=https://github.com ARG GITHUB_BASEURL=https://github.com
ARG EASY_ADD_VERSION=0.8.2 ARG EASY_ADD_VERSION=0.8.4
ADD ${GITHUB_BASEURL}/itzg/easy-add/releases/download/${EASY_ADD_VERSION}/easy-add_${TARGETOS}_${TARGETARCH}${TARGETVARIANT} /usr/bin/easy-add ADD ${GITHUB_BASEURL}/itzg/easy-add/releases/download/${EASY_ADD_VERSION}/easy-add_${TARGETOS}_${TARGETARCH}${TARGETVARIANT} /usr/bin/easy-add
RUN chmod +x /usr/bin/easy-add RUN chmod +x /usr/bin/easy-add
@@ -44,12 +44,12 @@ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
--var version=${MC_MONITOR_VERSION} --var app=mc-monitor --file {{.app}} \ --var version=${MC_MONITOR_VERSION} --var app=mc-monitor --file {{.app}} \
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz --from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
ARG MC_SERVER_RUNNER_VERSION=1.11.0 ARG MC_SERVER_RUNNER_VERSION=1.11.1
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
--var version=${MC_SERVER_RUNNER_VERSION} --var app=mc-server-runner --file {{.app}} \ --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 --from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
ARG MC_HELPER_VERSION=1.37.11 ARG MC_HELPER_VERSION=1.38.5
ARG MC_HELPER_BASE_URL=${GITHUB_BASEURL}/itzg/mc-image-helper/releases/download/${MC_HELPER_VERSION} 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 # used for cache busting local copy of mc-image-helper
ARG MC_HELPER_REV=1 ARG MC_HELPER_REV=1

View File

@@ -19,7 +19,9 @@ docker exec mc rcon-cli stop
_The `-i` is not needed in this case._ _The `-i` is not needed in this case._
If rcon is disabled you can send commands by passing them as arguments to the packaged `mc-send-to-console` script. For example, a player can be op'ed in the container `mc` with: ## When RCON is disabled
If rcon is disabled you can send commands by passing them as arguments to the packaged `mc-send-to-console` script after setting the env var `CREATE_CONSOLE_IN_PIPE` to "true". For example, a player can be op'ed in the container `mc` with:
```shell ```shell
docker exec mc mc-send-to-console op player docker exec mc mc-send-to-console op player
@@ -27,9 +29,26 @@ docker exec mc mc-send-to-console op player
+- container name +- Minecraft commands start here +- container name +- Minecraft commands start here
``` ```
In order to attach and interact with the Minecraft server, add `-it` when starting the container, such as ## Enabling interactive console
In order to attach and interact with the Minecraft server make sure to enable TTY and keep stdin open.
!!! example
With `docker run` use the `-it` arguments:
```shell
docker run -d -it -p 25565:25565 --name mc itzg/minecraft-server docker run -d -it -p 25565:25565 --name mc itzg/minecraft-server
```
or with a compose file:
```yaml
services:
minecraft:
stdin_open: true
tty: true
```
With that you can attach and interact at any time using With that you can attach and interact at any time using
@@ -37,9 +56,6 @@ With that you can attach and interact at any time using
and then Control-p Control-q to **detach**. and then Control-p Control-q to **detach**.
For remote access, configure your Docker daemon to use a `tcp` socket (such as `-H tcp://0.0.0.0:2375`) !!! info "RCON is required for fully interactive, color console"
and attach from another machine:
docker -H $HOST:2375 attach mc RCON must be enabled, which is the default, in order to use a fully interactive console with auto-completion and colorized log output.
Unless you're on a home/private LAN, you should [enable TLS access](https://docs.docker.com/articles/https/).

View File

@@ -128,6 +128,11 @@ To change the behavior when the whitelist file already exists, set the variable
To [enforce the whitelist changes immediately](https://minecraft.wiki/w/Server.properties#enforce-whitelist) when whitelist commands are used , set `ENFORCE_WHITELIST` to "true". If managing the whitelist file manually, `ENABLE_WHITELIST` can be set to "true" to set the `white-list` property. To [enforce the whitelist changes immediately](https://minecraft.wiki/w/Server.properties#enforce-whitelist) when whitelist commands are used , set `ENFORCE_WHITELIST` to "true". If managing the whitelist file manually, `ENABLE_WHITELIST` can be set to "true" to set the `white-list` property.
!!! tip "Changing user API provider"
The usernames provided for whitelist and ops processing are resolved using either [PlayerDB](https://playerdb.co/) or [Mojang's API](https://wiki.vg/Mojang_API#Username_to_UUID). The default uses PlayerDB, but can be changed by setting the environment variable `USER_API_PROVIDER` to "mojang". Sometimes one or the other service can become overloaded, which is why there is the ability to switch providers.
### Op/Administrator Players ### Op/Administrator Players
Similar to the whitelist, users can be provisioned as operators (aka administrators) to your Minecraft server by Similar to the whitelist, users can be provisioned as operators (aka administrators) to your Minecraft server by

View File

@@ -36,10 +36,9 @@ By using [Lazytainer](https://github.com/vmorganp/Lazytainer) with the [docker-m
version: "3" version: "3"
services: services:
lazytainer: lazytainer:
container_name: lazytainer
image: ghcr.io/vmorganp/lazytainer:master image: ghcr.io/vmorganp/lazytainer:master
environment: environment:
- VERBOSE=false VERBOSE: false
ports: ports:
- 25565:25565 - 25565:25565
volumes: volumes:
@@ -54,13 +53,11 @@ services:
mc: mc:
image: itzg/minecraft-server image: itzg/minecraft-server
environment: environment:
- EULA=TRUE EULA: TRUE
- TYPE=PURPUR TYPE: PAPER
- MEMORY=4G MEMORY: 4G
- TZ=Europe/Berlin
- OVERRIDE_SERVER_PROPERTIES=TRUE
volumes: volumes:
- /opt/container_volumes/minecraft/data:/data - ./data:/data
labels: labels:
- lazytainer.group=minecraft - lazytainer.group=minecraft
depends_on: depends_on:
@@ -69,6 +66,5 @@ services:
tty: true tty: true
stdin_open: true stdin_open: true
restart: unless-stopped restart: unless-stopped
networks: {}
``` ```
[Source](https://github.com/itzg/docker-minecraft-server/blob/master/examples/lazytainer/docker-compose.yml) [Source](https://github.com/itzg/docker-minecraft-server/blob/master/examples/lazytainer/docker-compose.yml)

View File

@@ -1,5 +1,5 @@
mkdocs == 1.5.3 mkdocs == 1.5.3
mkdocs-material == 9.5.7 mkdocs-material == 9.5.11
mkdocs-autorefs == 0.5.0 mkdocs-autorefs == 0.5.0
mkdocstrings == 0.24.0 mkdocstrings == 0.24.0
mkdocs-literate-nav == 0.6.1 mkdocs-literate-nav == 0.6.1

View File

@@ -207,12 +207,36 @@ Ant-style paths can include the following globbing/wildcard symbols:
## World/Level Data ## World/Level Data
Some modpacks come with world/save data via a worlds file and/or the overrides provided with the modpack. Either approach can be selected to set the `LEVEL` to the resulting saves directory by setting `CF_SET_LEVEL_FROM` to either: Some modpacks come with world/save data via a worlds file and/or the overrides provided with the modpack. Either approach can be selected to set the `LEVEL` to the resulting saves directory by setting `CF_SET_LEVEL_FROM` to either:
- `WORLD_FILE` - `WORLD_FILE`
- `OVERRIDES` - `OVERRIDES`
## Ignore missing files
Some mods use temporary files from the modpack and delete them when finished. Others will patch themselves and "disable" the original mod jar, such as gregtech. In order to avoid the installer from detecting the absent file(s) and re-installing, those files can be ignored by passing a comma or newline delimited list to `CF_IGNORE_MISSING_FILES`.
!!! hint
A warning log will indicate what files were found to be missing from the previous installation run, such as
```
Re-installing due to missing files from modpack: [mods/gregtech-2.6.2-beta.jar]
```
!!! example
In a Compose file
```yaml
environment:
CF_IGNORE_MISSING_FILES: |
mods/gregtech-2.6.2-beta.jar
```
## Extra options ## Extra options
Other configuration available: Other configuration available:
- `CF_PARALLEL_DOWNLOADS` (default is 4): specify how many parallel mod downloads to perform - `CF_PARALLEL_DOWNLOADS` (default is 4): specify how many parallel mod downloads to perform
- `CF_OVERRIDES_SKIP_EXISTING` (default is false): if set, files in the overrides that already exist in the data directory are skipped. **NOTE** world data is always skipped, if present. - `CF_OVERRIDES_SKIP_EXISTING` (default is false): if set, files in the overrides that already exist in the data directory are skipped. **NOTE** world data is always skipped, if present.
- `CF_FORCE_REINSTALL_MODLOADER` (default is false): this can be set to `true` to force the modpack's declared modloader, such as Forge, to be reinstalled. This is useful if some of the modloader's files become corrupted. - `CF_FORCE_REINSTALL_MODLOADER` (default is false): this can be set to `true` to force the modpack's declared modloader, such as Forge, to be reinstalled. This is useful if some of the modloader's files become corrupted.

View File

@@ -8,7 +8,7 @@ A [Magma](https://magmafoundation.org/) server, which is a combination of Forge
!!! note !!! note
The Magma project [has been terminated](https://git.magmafoundation.org/magmafoundation/magma-1-20-x/-/commit/4e7abe37403c47d09b74b77bcfc26a19b18f5891). Please use Magma Maintained for 1.12.2, 1.18.2, 1.19.3, and 1.20.1, or Ketting for 1.20.2+. The Magma project has been terminated ([original link died](https://git.magmafoundation.org/magmafoundation/magma-1-20-x/-/commit/4e7abe37403c47d09b74b77bcfc26a19b18f5891), [alternate statement on their discord](https://discord.com/channels/612695539729039411/647287352833605662/1174412642962649198) ). Please use Magma Maintained for 1.12.2, 1.18.2, 1.19.3, and 1.20.1, or Ketting for 1.20.1+.
There are limited base versions supported, so you will also need to set `VERSION`, such as "1.12.2", "1.16.5", etc. There are limited base versions supported, so you will also need to set `VERSION`, such as "1.12.2", "1.16.5", etc.
@@ -25,18 +25,15 @@ A [Magma Maintained](https://github.com/magmamaintained/) server, which is a alt
### Ketting ### Ketting
A [Ketting](https://github.com/kettingpowered/Ketting-1-20-x) server, which is a alternative project of Magma 1.20.2+, can be used with A [Ketting](https://github.com/kettingpowered/Ketting-1-20-x) server, which is an alternative project of Magma 1.20.1+, can be used with
-e TYPE=KETTING -e TYPE=KETTING
There are limited base versions supported, so you will also need to set `VERSION`, such as "1.20.2" or later. There are limited base versions supported, so you will also need to set `VERSION`, such as "1.20.1" or later.
In addition, `FORGE_VERSION` and `KETTING_VERSION` must be specified. You can find the supported `FORGE_VERSION` in the [project page](https://github.com/kettingpowered/Ketting-1-20-x), and `KETTING_VERSION` in the [release page](https://github.com/kettingpowered/Ketting-1-20-x/releases).
!!! note
The length of `KETTING_VERSION` is 8, not 7 since it is taken from an abbreviated git commit hash. The value can be found in a jar file link on an Assets section for each releases.
`FORGE_VERSION` and `KETTING_VERSION` may be specified; however, they will be defaulted by the [Ketting launcher](https://github.com/kettingpowered/kettinglauncher) otherwise.
Available Ketting Versions may be found at [https://github.com/kettingpowered/Ketting-1-20-x/packages/2041866/versions](https://github.com/kettingpowered/Ketting-1-20-x/packages/2041866/versions).
The Version structure is `MinecraftVersion-ForgeVersion-KettingVersion` (e.g. `1.20.1-47.2.20-0.1.4` is for Minecraft `1.20.1`, Forge `47.2.20` and Ketting `0.1.4`).
### Mohist ### Mohist

View File

@@ -4,6 +4,8 @@ version: '3'
services: services:
minecraft: minecraft:
image: itzg/minecraft-server image: itzg/minecraft-server
stdin_open: true
tty: true
ports: ports:
- "25565:25565" - "25565:25565"
volumes: volumes:

View File

@@ -1,10 +1,9 @@
version: "3" version: "3"
services: services:
lazytainer: lazytainer:
container_name: lazytainer
image: ghcr.io/vmorganp/lazytainer:master image: ghcr.io/vmorganp/lazytainer:master
environment: environment:
- VERBOSE=false VERBOSE: false
ports: ports:
- 25565:25565 - 25565:25565
volumes: volumes:
@@ -19,13 +18,11 @@ services:
mc: mc:
image: itzg/minecraft-server image: itzg/minecraft-server
environment: environment:
- EULA=TRUE EULA: TRUE
- TYPE=PURPUR TYPE: PAPER
- MEMORY=4G MEMORY: 4G
- TZ=Europe/Berlin
- OVERRIDE_SERVER_PROPERTIES=TRUE
volumes: volumes:
- /opt/container_volumes/minecraft/data:/data - ./data:/data
labels: labels:
- lazytainer.group=minecraft - lazytainer.group=minecraft
depends_on: depends_on:
@@ -34,4 +31,3 @@ services:
tty: true tty: true
stdin_open: true stdin_open: true
restart: unless-stopped restart: unless-stopped
networks: {}

View File

@@ -59,6 +59,11 @@
"excludes": [ "excludes": [
"modernfix" "modernfix"
] ]
},
"create-arcane-engineering": {
"forceIncludes": [
"just-enough-resources-jer"
]
} }
} }
} }

View File

@@ -240,7 +240,6 @@ case "${TYPE^^}" in
;; ;;
KETTING) KETTING)
evaluateJavaCompatibilityForForge
exec "${SCRIPTS:-/}start-deployKetting" "$@" exec "${SCRIPTS:-/}start-deployKetting" "$@"
;; ;;

View File

@@ -11,6 +11,7 @@ set -eu
: "${CF_PARALLEL_DOWNLOADS:=4}" : "${CF_PARALLEL_DOWNLOADS:=4}"
: "${CF_FORCE_SYNCHRONIZE:=false}" : "${CF_FORCE_SYNCHRONIZE:=false}"
: "${CF_FORCE_REINSTALL_MODLOADER:=false}" : "${CF_FORCE_REINSTALL_MODLOADER:=false}"
: "${CF_IGNORE_MISSING_FILES:=}"
: "${CF_EXCLUDE_INCLUDE_FILE=https://raw.githubusercontent.com/itzg/docker-minecraft-server/master/files/cf-exclude-include.json}" : "${CF_EXCLUDE_INCLUDE_FILE=https://raw.githubusercontent.com/itzg/docker-minecraft-server/master/files/cf-exclude-include.json}"
: "${CF_EXCLUDE_MODS:=}" : "${CF_EXCLUDE_MODS:=}"
: "${CF_FORCE_INCLUDE_MODS:=}" : "${CF_FORCE_INCLUDE_MODS:=}"
@@ -24,6 +25,8 @@ resultsFile=/data/.install-curseforge.env
isDebugging && set -x isDebugging && set -x
ensureRemoveAllModsOff "MOD_PLATFORM=AUTO_CURSEFORGE"
args=( args=(
--results-file="$resultsFile" --results-file="$resultsFile"
) )
@@ -48,6 +51,9 @@ fi
if [[ ${CF_OVERRIDES_EXCLUSIONS} ]]; then if [[ ${CF_OVERRIDES_EXCLUSIONS} ]]; then
args+=(--overrides-exclusions="$CF_OVERRIDES_EXCLUSIONS") args+=(--overrides-exclusions="$CF_OVERRIDES_EXCLUSIONS")
fi fi
if [[ ${CF_IGNORE_MISSING_FILES} ]]; then
args+=(--ignore-missing-files="$CF_IGNORE_MISSING_FILES")
fi
args+=( args+=(
--force-synchronize="$CF_FORCE_SYNCHRONIZE" --force-synchronize="$CF_FORCE_SYNCHRONIZE"
--force-reinstall-modloader="$CF_FORCE_REINSTALL_MODLOADER" --force-reinstall-modloader="$CF_FORCE_REINSTALL_MODLOADER"

View File

@@ -4,7 +4,7 @@
. "${SCRIPTS:-/}start-utils" . "${SCRIPTS:-/}start-utils"
isDebugging && set -x isDebugging && set -x
set -e set -eo pipefail
function buildSpigotFromSource { function buildSpigotFromSource {
if [[ ${TYPE^^} = *BUKKIT ]] && ! versionLessThan "1.14"; then if [[ ${TYPE^^} = *BUKKIT ]] && ! versionLessThan "1.14"; then
@@ -25,14 +25,14 @@ function buildSpigotFromSource {
case ${TYPE^^} in case ${TYPE^^} in
SPIGOT) SPIGOT)
if ! mv spigot-*.jar /data/${SERVER}; then if ! mv spigot-*.jar "/data/${SERVER}"; then
log "ERR failed to build Spigot" log "ERR failed to build Spigot"
cat /data/spigot_build.log cat /data/spigot_build.log
exit 1 exit 1
fi fi
;; ;;
*BUKKIT) *BUKKIT)
if ! mv craftbukkit-*.jar /data/${SERVER}; then if ! mv craftbukkit-*.jar "/data/${SERVER}"; then
log "ERR failed to build Spigot" log "ERR failed to build Spigot"
cat /data/spigot_build.log cat /data/spigot_build.log
exit 1 exit 1
@@ -61,11 +61,14 @@ function downloadSpigot {
esac esac
if [[ ${VERSION^^} = LATEST ]]; then if [[ ${VERSION^^} = LATEST ]]; then
VERSION=$(restify https://getbukkit.org/download/spigot --attribute='property=og:title' | jq -r '.[0] | .attributes | select(.property == "og:title") | .content | split(" ") | .[-1]') if ! VERSION=$(restify https://getbukkit.org/download/spigot --attribute='property=og:title' | jq -r '.[0] | .attributes | select(.property == "og:title") | .content | split(" ") | .[-1]'); then
log "ERROR: failed to retrieve latest version from https://getbukkit.org/download/spigot -- site might be down"
exit 1
fi
fi fi
if [[ -z $downloadUrl ]]; then if [[ -z $downloadUrl ]]; then
if versionLessThan 1.16.5 || ([[ ${getbukkitFlavor} = "craftbukkit" ]] && [[ ${VERSION} = "1.16.5" ]]); then if versionLessThan 1.16.5 || { [[ ${getbukkitFlavor} = "craftbukkit" ]] && [[ ${VERSION} = "1.16.5" ]] ; }; then
downloadUrl="https://cdn.getbukkit.org/${getbukkitFlavor}/${getbukkitFlavor}-${VERSION}.jar" downloadUrl="https://cdn.getbukkit.org/${getbukkitFlavor}/${getbukkitFlavor}-${VERSION}.jar"
else else
downloadUrl="https://download.getbukkit.org/${getbukkitFlavor}/${getbukkitFlavor}-${VERSION}.jar" downloadUrl="https://download.getbukkit.org/${getbukkitFlavor}/${getbukkitFlavor}-${VERSION}.jar"
@@ -82,7 +85,7 @@ function downloadSpigot {
fi fi
log "Downloading $match from $downloadUrl ..." log "Downloading $match from $downloadUrl ..."
curl -fsSL -o "$SERVER" $curlArgs "$downloadUrl" curl -fsSL -o "$SERVER" $curlArgs "$downloadUrl"
if [[ $? != 0 || $(grep -c "DOCTYPE html" $SERVER) != 0 ]]; then if [[ $? != 0 || $(grep -c "DOCTYPE html" "$SERVER") != 0 ]]; then
cat <<EOF cat <<EOF
ERROR: failed to download from $downloadUrl ERROR: failed to download from $downloadUrl
@@ -130,4 +133,4 @@ fi
# Normalize on Spigot for operations below # Normalize on Spigot for operations below
export FAMILY=SPIGOT export FAMILY=SPIGOT
exec ${SCRIPTS:-/}start-spiget "$@" exec "${SCRIPTS:-/}start-spiget" "$@"

View File

@@ -4,26 +4,27 @@
. "${SCRIPTS:-/}start-utils" . "${SCRIPTS:-/}start-utils"
isDebugging && set -x isDebugging && set -x
: "${FORGE_VERSION:=${FORGEVERSION:-RECOMMENDED}}" if ! SERVER=$(mc-image-helper github download-latest-asset \
: "${KETTING_VERSION:=}" --output-directory=/data \
: "${KETTING_TAG:=${KETTING_VERSION:0:7}}" --name-pattern="kettinglauncher-.+?(?<!-sources)\.jar" \
kettingpowered/kettinglauncher
); then
log "ERROR: failed to download Ketting launcher"
exit 1
fi
export SERVER
resolveVersion resolveVersion
if ! downloadUrl="https://github.com/kettingpowered/Ketting-1-20-x/releases/download/${KETTING_TAG}/ketting-${VERSION}-${FORGE_VERSION}-${KETTING_VERSION}-server.jar"; then EXTRA_ARGS+="-minecraftVersion $VERSION"
log "ERROR failed to locate latest Ketting download for ${VERSION}. Is that version supported?" if [[ ${KETTING_VERSION:-} ]]; then
exit 1 EXTRA_ARGS+="-kettingVersion $KETTING_VERSION"
fi fi
if [[ ${FORGE_VERSION:-} ]]; then
if [[ $downloadUrl == null ]]; then EXTRA_ARGS+="-forgeVersion $FORGE_VERSION"
log "ERROR Ketting does not seem to be available for $VERSION"
exit 1
fi
if ! SERVER=$(get --output-filename --skip-up-to-date --output /data "$downloadUrl"); then
log "ERROR: failed to download Ketting server jar from $downloadUrl"
exit 1
fi fi
export EXTRA_ARGS
export SERVER export SERVER
export FAMILY=HYBRID export FAMILY=HYBRID

View File

@@ -19,6 +19,8 @@ fi
isDebugging && set -x isDebugging && set -x
ensureRemoveAllModsOff "MOD_PLATFORM=MODRINTH"
args=( args=(
--results-file="$resultsFile" --results-file="$resultsFile"
--project="${MODRINTH_MODPACK}" --project="${MODRINTH_MODPACK}"

View File

@@ -203,11 +203,6 @@ if [[ ${INIT_MEMORY} || ${MAX_MEMORY} ]]; then
fi fi
function copyFilesForCurseForge() { function copyFilesForCurseForge() {
# copy player modification files unconditionally since their
# processing into json is additive anyway
[ -f /data/ops.txt ] && cp -f /data/ops.txt "${FTB_DIR}/"
[ -f /data/white-list.txt ] && cp -f /data/white-list.txt "${FTB_DIR}/"
if [ ! -e "${FTB_DIR}/server-icon.png" ] && [ -e /data/server-icon.png ]; then if [ ! -e "${FTB_DIR}/server-icon.png" ] && [ -e /data/server-icon.png ]; then
cp -f /data/server-icon.png "${FTB_DIR}/" cp -f /data/server-icon.png "${FTB_DIR}/"
fi fi

View File

@@ -83,6 +83,9 @@ fi
function handleListings() { function handleListings() {
if usesMods && usesPlugins; then if usesMods && usesPlugins; then
if [[ "$MODS" ]]; then if [[ "$MODS" ]]; then
ensureRemoveAllModsOff "MODS is set"
mkdir -p "$MODS_OUT_DIR" mkdir -p "$MODS_OUT_DIR"
mc-image-helper mcopy \ mc-image-helper mcopy \
--glob=*.jar \ --glob=*.jar \
@@ -91,6 +94,7 @@ function handleListings() {
"$MODS" "$MODS"
fi fi
if [[ "$PLUGINS" ]]; then if [[ "$PLUGINS" ]]; then
ensureRemoveAllModsOff "PLUGINS is set"
mkdir -p "$PLUGINS_OUT_DIR" mkdir -p "$PLUGINS_OUT_DIR"
mc-image-helper mcopy \ mc-image-helper mcopy \
--glob=*.jar \ --glob=*.jar \
@@ -100,6 +104,7 @@ function handleListings() {
fi fi
if [[ "$MODS_FILE" ]]; then if [[ "$MODS_FILE" ]]; then
ensureRemoveAllModsOff "MODS_FILE is set"
mkdir -p "$MODS_OUT_DIR" mkdir -p "$MODS_OUT_DIR"
mc-image-helper mcopy \ mc-image-helper mcopy \
--file-is-listing \ --file-is-listing \
@@ -108,6 +113,7 @@ function handleListings() {
"$MODS_FILE" "$MODS_FILE"
fi fi
if [[ "$PLUGINS_FILE" ]]; then if [[ "$PLUGINS_FILE" ]]; then
ensureRemoveAllModsOff "PLUGINS_FILE is set"
mkdir -p "$PLUGINS_OUT_DIR" mkdir -p "$PLUGINS_OUT_DIR"
mc-image-helper mcopy \ mc-image-helper mcopy \
--file-is-listing \ --file-is-listing \
@@ -123,6 +129,7 @@ function handleListings() {
fi fi
if [[ "$MODS" || "$PLUGINS" ]]; then if [[ "$MODS" || "$PLUGINS" ]]; then
ensureRemoveAllModsOff "MODS or PLUGINS is set"
mkdir -p "$outDir" mkdir -p "$outDir"
mc-image-helper mcopy \ mc-image-helper mcopy \
--glob=*.jar \ --glob=*.jar \
@@ -132,6 +139,7 @@ function handleListings() {
fi fi
if [[ "$MODS_FILE" || "$PLUGINS_FILE" ]]; then if [[ "$MODS_FILE" || "$PLUGINS_FILE" ]]; then
ensureRemoveAllModsOff "MODS_FILE or PLUGINS_FILE is set"
mkdir -p "$outDir" mkdir -p "$outDir"
mc-image-helper mcopy \ mc-image-helper mcopy \
--file-is-listing \ --file-is-listing \
@@ -237,7 +245,7 @@ function handleModrinthProjects() {
fi fi
if [[ $MODRINTH_PROJECTS ]] && isFamily HYBRID FORGE FABRIC SPIGOT; then if [[ $MODRINTH_PROJECTS ]] && isFamily HYBRID FORGE FABRIC SPIGOT; then
if isFamily HYBRID FORGE; then if isFamily HYBRID; then
loader=forge loader=forge
else else
loader="${TYPE,,}" loader="${TYPE,,}"

View File

@@ -22,6 +22,11 @@ elif [[ -v OVERRIDE_WHITELIST ]] && isTrue "${OVERRIDE_WHITELIST}"; then
fi fi
sharedArgs=(--version="$VERSION") sharedArgs=(--version="$VERSION")
if [[ ${FTB_DIR:-} ]]; then
sharedArgs+=(--output-directory="$FTB_DIR")
else
sharedArgs+=(--output-directory=/data)
fi
if [[ -v OPS_FILE ]]; then if [[ -v OPS_FILE ]]; then
existing="$EXISTING_OPS_FILE" existing="$EXISTING_OPS_FILE"

View File

@@ -348,3 +348,12 @@ function resolveFamily() {
esac esac
export FAMILY export FAMILY
} }
function ensureRemoveAllModsOff() {
reason=${1?}
if isTrue "${REMOVE_OLD_MODS:-false}"; then
log "WARNING using REMOVE_OLDS_MODS interferes with $reason -- it is now disabled"
REMOVE_OLD_MODS=false
fi
}

View File

@@ -1 +1 @@
architectury-api@4.11.93 architectury-api@4.12.94