mirror of
https://github.com/itzg/docker-minecraft-server.git
synced 2026-07-27 19:04:53 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9a2348cadd | ||
|
|
33159ddd83 | ||
|
|
7e1c26a18f | ||
|
|
0459532398 | ||
|
|
99d4481c01 | ||
|
|
194accb407 | ||
|
|
7f1affbcd8 | ||
|
|
4cbdf520c8 | ||
|
|
a3bb7bff34 | ||
|
|
1e77b81b32 | ||
|
|
479973c950 | ||
|
|
2a246ee805 | ||
|
|
3c4c94e1ad |
@@ -8,11 +8,13 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
# If forked, changed to your username to enable auto-releases
|
# If forked, changed to your username to enable auto-releases
|
||||||
if: github.repository_owner == 'itzg'
|
if: github.repository_owner == 'itzg'
|
||||||
permissions:
|
|
||||||
# allow for creating releases/tags
|
|
||||||
contents: write
|
|
||||||
steps:
|
steps:
|
||||||
- uses: zenengeo/github-auto-release-action@main
|
- uses: zenengeo/github-auto-release-action@main
|
||||||
with:
|
with:
|
||||||
stable-duration: 3d
|
stable-duration: 3d
|
||||||
force-duration: 14d
|
force-duration: 14d
|
||||||
|
# It is important to use a token other than the workflow allocated GITHUB_TOKEN,
|
||||||
|
# since actions prevent loops by disallowing recursive workflow triggers with that token.
|
||||||
|
# In this case, the created tag needs to trigger the "Build and Publish" workflow.
|
||||||
|
token: '${{ secrets.GH_TOKEN }}'
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ on:
|
|||||||
- "zensical.toml"
|
- "zensical.toml"
|
||||||
- ".readthedocs.yaml"
|
- ".readthedocs.yaml"
|
||||||
- "renovate.json5"
|
- "renovate.json5"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
@@ -45,8 +46,6 @@ jobs:
|
|||||||
baseImage: eclipse-temurin:25-jre-noble
|
baseImage: eclipse-temurin:25-jre-noble
|
||||||
platforms: linux/amd64,linux/arm64,linux/riscv64
|
platforms: linux/amd64,linux/arm64,linux/riscv64
|
||||||
mcVersion: latest
|
mcVersion: latest
|
||||||
# forked build that include riscv64
|
|
||||||
knockdRepoOrg: Opvolger/knock
|
|
||||||
- variant: java25-alpine
|
- variant: java25-alpine
|
||||||
baseImage: eclipse-temurin:25-jre-alpine
|
baseImage: eclipse-temurin:25-jre-alpine
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
@@ -80,27 +79,27 @@ jobs:
|
|||||||
platforms: linux/amd64,linux/arm/v7,linux/arm64
|
platforms: linux/amd64,linux/arm/v7,linux/arm64
|
||||||
mcVersion: 1.16.5
|
mcVersion: 1.16.5
|
||||||
# Pin version for pre-Java 17
|
# Pin version for pre-Java 17
|
||||||
mcHelperVersion: 1.51.3-java8
|
mcHelperVersion: 1.51.4-java8
|
||||||
# JAVA 11
|
# JAVA 11
|
||||||
- variant: java11
|
- variant: java11
|
||||||
baseImage: adoptopenjdk:11-jre-hotspot
|
baseImage: adoptopenjdk:11-jre-hotspot
|
||||||
platforms: linux/amd64,linux/arm/v7,linux/arm64
|
platforms: linux/amd64,linux/arm/v7,linux/arm64
|
||||||
mcVersion: 1.16.4
|
mcVersion: 1.16.4
|
||||||
# Pin version for pre-Java 17
|
# Pin version for pre-Java 17
|
||||||
mcHelperVersion: 1.51.3-java8
|
mcHelperVersion: 1.51.4-java8
|
||||||
# JAVA 8: NOTE: Unable to go past 8u312 because of Forge dependencies
|
# JAVA 8: NOTE: Unable to go past 8u312 because of Forge dependencies
|
||||||
- variant: java8
|
- variant: java8
|
||||||
baseImage: eclipse-temurin:8u312-b07-jre-focal
|
baseImage: eclipse-temurin:8u312-b07-jre-focal
|
||||||
platforms: linux/amd64,linux/arm/v7,linux/arm64
|
platforms: linux/amd64,linux/arm/v7,linux/arm64
|
||||||
mcVersion: 1.12.2
|
mcVersion: 1.12.2
|
||||||
# Pin version for Java 8, also be sure to set in verify-pr.yml
|
# Pin version for Java 8, also be sure to set in verify-pr.yml
|
||||||
mcHelperVersion: 1.51.3-java8
|
mcHelperVersion: 1.51.4-java8
|
||||||
- variant: java8-jdk
|
- variant: java8-jdk
|
||||||
baseImage: eclipse-temurin:8u312-b07-jdk-focal
|
baseImage: eclipse-temurin:8u312-b07-jdk-focal
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
mcVersion: 1.12.2
|
mcVersion: 1.12.2
|
||||||
# Pin version for Java 8, also be sure to set in verify-pr.yml
|
# Pin version for Java 8, also be sure to set in verify-pr.yml
|
||||||
mcHelperVersion: 1.51.3-java8
|
mcHelperVersion: 1.51.4-java8
|
||||||
env:
|
env:
|
||||||
# Assume they line up, but when forked change to your Docker Hub username
|
# Assume they line up, but when forked change to your Docker Hub username
|
||||||
DOCKER_HUB_ORG: ${{ github.repository_owner }}
|
DOCKER_HUB_ORG: ${{ github.repository_owner }}
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ jobs:
|
|||||||
mcVersion: 1.20.4
|
mcVersion: 1.20.4
|
||||||
# For GLIBC_2.34 support
|
# For GLIBC_2.34 support
|
||||||
knockdRepoOrg: Metalcape/knock
|
knockdRepoOrg: Metalcape/knock
|
||||||
|
# JAVA 8:
|
||||||
- variant: java8
|
- variant: java8
|
||||||
baseImage: eclipse-temurin:8u312-b07-jre-focal
|
baseImage: eclipse-temurin:8u312-b07-jre-focal
|
||||||
platforms: linux/amd64
|
platforms: linux/amd64
|
||||||
@@ -54,7 +55,7 @@ jobs:
|
|||||||
# For GLIBC_2.34 support
|
# For GLIBC_2.34 support
|
||||||
knockdRepoOrg: Metalcape/knock
|
knockdRepoOrg: Metalcape/knock
|
||||||
# Pin version for Java 8, be sure to also set in build.yml
|
# Pin version for Java 8, be sure to also set in build.yml
|
||||||
mcHelperVersion: 1.51.3-java8
|
mcHelperVersion: 1.51.4-java8
|
||||||
env:
|
env:
|
||||||
IMAGE_TO_TEST: ${{ github.repository_owner }}/minecraft-server:test-${{ matrix.variant }}-${{ github.run_id }}
|
IMAGE_TO_TEST: ${{ github.repository_owner }}/minecraft-server:test-${{ matrix.variant }}-${{ github.run_id }}
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
|
|||||||
+1
-1
@@ -57,7 +57,7 @@ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
|||||||
--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
|
||||||
|
|
||||||
# renovate: datasource=github-releases packageName=itzg/mc-image-helper versioning=loose
|
# renovate: datasource=github-releases packageName=itzg/mc-image-helper versioning=loose
|
||||||
ARG MC_HELPER_VERSION=1.61.4
|
ARG MC_HELPER_VERSION=1.63.1
|
||||||
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
|
||||||
|
|||||||
@@ -3,6 +3,13 @@
|
|||||||
set -e
|
set -e
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
|
|
||||||
|
# Patched knockd is only available for amd64 on Alpine, so install the package for other architectures
|
||||||
|
knockPkg=""
|
||||||
|
if [ "$TARGETARCH" != amd64 ]; then
|
||||||
|
knockPkg="knock"
|
||||||
|
echo "Installing knock package for $TARGETARCH architecture"
|
||||||
|
fi
|
||||||
|
|
||||||
# Install necessary packages
|
# Install necessary packages
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
apk add --no-cache -U \
|
apk add --no-cache -U \
|
||||||
@@ -36,13 +43,18 @@ apk add --no-cache -U \
|
|||||||
numactl \
|
numactl \
|
||||||
jattach \
|
jattach \
|
||||||
gcompat \
|
gcompat \
|
||||||
|
"$knockPkg" \
|
||||||
${EXTRA_ALPINE_PACKAGES}
|
${EXTRA_ALPINE_PACKAGES}
|
||||||
|
|
||||||
|
if ! [ "$knockPkg" ]; then
|
||||||
# Download and install patched knockd
|
# Download and install patched knockd
|
||||||
curl -fsSL -o /tmp/knock.tar.gz "https://github.com/${KNOCKD_REPO_ORG}/releases/download/${KNOCKD_VERSION}/knock-${KNOCKD_VERSION}-alpine-amd64.tar.gz"
|
knockdUrl="https://github.com/${KNOCKD_REPO_ORG}/releases/download/${KNOCKD_VERSION}/knock-${KNOCKD_VERSION}-alpine-amd64.tar.gz"
|
||||||
|
echo "Downloading knockd from $knockdUrl"
|
||||||
|
curl -fsSL -o /tmp/knock.tar.gz "$knockdUrl"
|
||||||
tar -xf /tmp/knock.tar.gz -C /usr/local/ && rm /tmp/knock.tar.gz
|
tar -xf /tmp/knock.tar.gz -C /usr/local/ && rm /tmp/knock.tar.gz
|
||||||
ln -s /usr/local/sbin/knockd /usr/sbin/knockd
|
ln -s /usr/local/sbin/knockd /usr/sbin/knockd
|
||||||
setcap cap_net_raw=ep /usr/local/sbin/knockd
|
setcap cap_net_raw=ep /usr/local/sbin/knockd
|
||||||
|
fi
|
||||||
|
|
||||||
# Set Git credentials globally
|
# Set Git credentials globally
|
||||||
cat <<EOF >> /etc/gitconfig
|
cat <<EOF >> /etc/gitconfig
|
||||||
|
|||||||
@@ -37,8 +37,13 @@ apt-get install -y \
|
|||||||
# Clean up APT when done
|
# Clean up APT when done
|
||||||
apt-get clean
|
apt-get clean
|
||||||
|
|
||||||
|
if [ "$TARGETARCH" = riscv64 ]; then
|
||||||
|
KNOCKD_REPO_ORG=Opvolger/knock
|
||||||
|
fi
|
||||||
# Download and install patched knockd
|
# Download and install patched knockd
|
||||||
curl -fsSL -o /tmp/knock.tar.gz "https://github.com/${KNOCKD_REPO_ORG}/releases/download/${KNOCKD_VERSION}/knock-${KNOCKD_VERSION}-$TARGET.tar.gz"
|
knockdUrl="https://github.com/${KNOCKD_REPO_ORG}/releases/download/${KNOCKD_VERSION}/knock-${KNOCKD_VERSION}-$TARGET.tar.gz"
|
||||||
|
echo "Downloading knockd from $knockdUrl"
|
||||||
|
curl -fsSL -o /tmp/knock.tar.gz "$knockdUrl"
|
||||||
tar -xf /tmp/knock.tar.gz -C /usr/local/ && rm /tmp/knock.tar.gz
|
tar -xf /tmp/knock.tar.gz -C /usr/local/ && rm /tmp/knock.tar.gz
|
||||||
ln -s /usr/local/sbin/knockd /usr/sbin/knockd
|
ln -s /usr/local/sbin/knockd /usr/sbin/knockd
|
||||||
setcap cap_net_raw=ep /usr/local/sbin/knockd
|
setcap cap_net_raw=ep /usr/local/sbin/knockd
|
||||||
|
|||||||
@@ -179,6 +179,10 @@ such as:
|
|||||||
|
|
||||||
You may configure the use of an HTTP/HTTPS proxy by passing the proxy's "host:port" via the environment variable `PROXY`. In [the example compose file](https://github.com/itzg/docker-minecraft-server/blob/master/examples/proxied/compose.yml) it references a Squid proxy. The host and port can be separately passed via the environment variables `PROXY_HOST` and `PROXY_PORT`. A `|` delimited list of hosts to exclude from proxying can be passed via `PROXY_NON_PROXY_HOSTS`.
|
You may configure the use of an HTTP/HTTPS proxy by passing the proxy's "host:port" via the environment variable `PROXY`. In [the example compose file](https://github.com/itzg/docker-minecraft-server/blob/master/examples/proxied/compose.yml) it references a Squid proxy. The host and port can be separately passed via the environment variables `PROXY_HOST` and `PROXY_PORT`. A `|` delimited list of hosts to exclude from proxying can be passed via `PROXY_NON_PROXY_HOSTS`.
|
||||||
|
|
||||||
|
## Prefer IPv6 Addresses and Stack
|
||||||
|
|
||||||
|
The image can be configured to prefer IPv6 addresses and stack by setting the environment variable `PREFER_IPV6` to "true". This will ensure the Java properties `java.net.preferIPv6Addresses` and `java.net.preferIPv6Stack` are set accordingly for mc-image-helper and the Minecraft server process.
|
||||||
|
|
||||||
## Using "noconsole" option
|
## Using "noconsole" option
|
||||||
|
|
||||||
Some older versions (pre-1.14) of Spigot required `--noconsole` to be passed when detaching stdin, which can be done by setting `-e CONSOLE=FALSE`.
|
Some older versions (pre-1.14) of Spigot required `--noconsole` to be passed when detaching stdin, which can be done by setting `-e CONSOLE=FALSE`.
|
||||||
@@ -198,6 +202,13 @@ Be sure to also increase the shutdown timeout described [here for docker compose
|
|||||||
|
|
||||||
If you are using a host-attached data directory, then you can have the image setup the Minecraft server files and stop prior to launching the server process by setting `SETUP_ONLY` to `true`.
|
If you are using a host-attached data directory, then you can have the image setup the Minecraft server files and stop prior to launching the server process by setting `SETUP_ONLY` to `true`.
|
||||||
|
|
||||||
|
## Custom server runner
|
||||||
|
|
||||||
|
By default, the image finishes startup by exec'ing [mc-server-runner](https://github.com/itzg/mc-server-runner) to run the Minecraft server itself. This can be replaced by setting the environment variable `SERVER_RUNNER`. The arguments passed will start with ones specific to mc-server-runner, followed by `--`, and then the actual `java -jar` arguments or equivalent server entry script, such as `run.sh` for Forge.
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> The `SERVER_RUNNER` variable is expanded when passed to `exec` so that `mc-server-runner` can be wrapped by another executable that is mounted into the container.
|
||||||
|
|
||||||
## Enable Flare Flags
|
## Enable Flare Flags
|
||||||
|
|
||||||
To enable the JVM flags required to fully support the [Flare profiling suite](https://blog.airplane.gg/flare), set the following variable:
|
To enable the JVM flags required to fully support the [Flare profiling suite](https://blog.airplane.gg/flare), set the following variable:
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ mkdocstrings==1.0.6
|
|||||||
mkdocstrings-python==2.0.5
|
mkdocstrings-python==2.0.5
|
||||||
packaging==26.2
|
packaging==26.2
|
||||||
pathspec==1.1.1
|
pathspec==1.1.1
|
||||||
platformdirs==4.10.0
|
platformdirs==4.11.0
|
||||||
Pygments==2.20.0
|
Pygments==2.20.0
|
||||||
pymdown-extensions==11.0.1
|
pymdown-extensions==11.0.1
|
||||||
python-dateutil==2.9.0.post0
|
python-dateutil==2.9.0.post0
|
||||||
@@ -22,4 +22,4 @@ PyYAML==6.0.3
|
|||||||
pyyaml_env_tag==1.1
|
pyyaml_env_tag==1.1
|
||||||
six==1.17.0
|
six==1.17.0
|
||||||
watchdog==6.0.0
|
watchdog==6.0.0
|
||||||
zensical==0.0.50
|
zensical==0.0.51
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ Configuration options with defaults:
|
|||||||
|
|
||||||
## Set Modpack version
|
## Set Modpack version
|
||||||
|
|
||||||
As GTNH is a Minecraft 1.7.10 modpack, when using it your minecraft version is set to 1.7.10 by default. The [modpack version](https://www.gtnewhorizons.com/downloads/) can be selected by setting `GTNH_PACK_VERSION` to `latest`, `latest-dev` or any specific version number. `latest` will automatically select the latest full release version available and deploy the server with it (Note: this will also automatically update the server on startup). `latest-dev` does the same but selects the latest version marked as beta or RC (it won't select a full release version even if a newer exist). The third (and recommended) option is setting the server to a specific version like `2.8.1` to manage updates manually.
|
As GTNH is a Minecraft 1.7.10 modpack, when using it your minecraft version is set to 1.7.10 by default. The [modpack version](https://www.gtnewhorizons.com/downloads/) can be selected by setting `GTNH_PACK_VERSION` to `latest`, `latest-beta` (formerly `latest-dev`) or any specific version number. `latest` will automatically select the latest full release version available and deploy the server with it (Note: this will also automatically update the server on startup). `latest-beta` does the same but selects the latest version marked as beta or RC (it won't select a full release version even if a newer exist). The third (and recommended) option is setting the server to a specific version like `2.8.1` to manage updates manually.
|
||||||
|
|
||||||
> To actively prevent an update from happening you can set the environment variable `SKIP_GTNH_UPDATE_CHECK` to true this will prevent any update check from running, but will also prevent the server install from running, so just set it after the initial setup.
|
> To actively prevent an update from happening you can set the environment variable `SKIP_GTNH_UPDATE_CHECK` to true this will prevent any update check from running, but will also prevent the server install from running, so just set it after the initial setup.
|
||||||
|
|
||||||
@@ -52,3 +52,11 @@ To deliver the intended GTNH by default, when running a GTNH server, the followi
|
|||||||
With java 17+ the server starts with `-Dfml.readTimeout=180 @java9args.txt -jar lwjgl3ify-forgePatches.jar`.
|
With java 17+ the server starts with `-Dfml.readTimeout=180 @java9args.txt -jar lwjgl3ify-forgePatches.jar`.
|
||||||
|
|
||||||
With java 8 the server stars with `-XX:+UseStringDeduplication -XX:+UseCompressedOops -XX:+UseCodeCacheFlushing -Dfml.readTimeout=180 -jar forge-1.7.10-10.13.4.1614-1.7.10-universal.jar`
|
With java 8 the server stars with `-XX:+UseStringDeduplication -XX:+UseCompressedOops -XX:+UseCodeCacheFlushing -Dfml.readTimeout=180 -jar forge-1.7.10-10.13.4.1614-1.7.10-universal.jar`
|
||||||
|
|
||||||
|
## Developer Versions
|
||||||
|
|
||||||
|
To run the nightly developer builds of GTNH, set the environment variable `GTNH_USE_DAILY_BUILD` to true and set `GTNH_PACK_VERSION` either to `latest` or a specific run ID of the build workflow. The run ID can be found in the [GTNH GitHub Actions](https://github.com/GTNewHorizons/DreamAssemblerXXL/actions) page of the DreamAssemblerXXL repository. The run ID is the number in the URL of the workflow run, for example `123456789`.
|
||||||
|
|
||||||
|
Since downloads require authentication, you will also need to set the environment variable `GH_TOKEN` to a valid GitHub Personal Access Token with `public_repo` scope. You can create a token in your [GitHub settings](https://github.com/settings/tokens) page. Be sure to keep your token secret and do not share it with anyone. The token is only used to download the developer builds and is not stored anywhere in the server (except in the environment variables).
|
||||||
|
|
||||||
|
Keep in mind that developer builds are not stable and may contain bugs or incomplete features. Use them at your own risk. It is recommended to use the latest stable release for production servers!
|
||||||
|
|||||||
@@ -14,6 +14,9 @@ services:
|
|||||||
# GTNH_DELETE_BACKUPS: true
|
# GTNH_DELETE_BACKUPS: true
|
||||||
# Use to prevent updates
|
# Use to prevent updates
|
||||||
# SKIP_GTNH_UPDATE_CHECK: true
|
# SKIP_GTNH_UPDATE_CHECK: true
|
||||||
|
# Enable and set Token for daily builds
|
||||||
|
# GTNH_USE_DAILY_BUILD: true
|
||||||
|
# GH_TOKEN: mytoken
|
||||||
MEMORY: 6G
|
MEMORY: 6G
|
||||||
# Bring in standard extra mods described at https://wiki.gtnewhorizons.com/wiki/Additional_Mods
|
# Bring in standard extra mods described at https://wiki.gtnewhorizons.com/wiki/Additional_Mods
|
||||||
# MODS: |
|
# MODS: |
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ if ! mc-image-helper network-interfaces --check="$AUTOPAUSE_KNOCK_INTERFACE" ; t
|
|||||||
autopause_error_loop
|
autopause_error_loop
|
||||||
fi
|
fi
|
||||||
|
|
||||||
knockdArgs=(-c /tmp/knockd-config.cfg -d -i "$AUTOPAUSE_KNOCK_INTERFACE")
|
knockdArgs=(-c /data/.knockd.cfg -d -i "$AUTOPAUSE_KNOCK_INTERFACE")
|
||||||
if isTrue "${DEBUG_AUTOPAUSE}"; then
|
if isTrue "${DEBUG_AUTOPAUSE}"; then
|
||||||
knockdArgs+=(-D)
|
knockdArgs+=(-D)
|
||||||
fi
|
fi
|
||||||
|
|||||||
+11
-5
@@ -24,13 +24,13 @@ log "Autopause functionality enabled"
|
|||||||
|
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
|
|
||||||
cp /image/knockd-config.cfg /tmp/knockd-config.cfg
|
cp /image/knockd-config.cfg /data/.knockd.cfg
|
||||||
|
|
||||||
function updatePort() {
|
function updatePort() {
|
||||||
regseq="^\s*sequence\s*=\s*$1\s*$"
|
regseq="^\s*sequence\s*=\s*$1\s*$"
|
||||||
linenum=$(grep -nm${2} sequence /tmp/knockd-config.cfg | cut -d : -f 1 | tail -n1)
|
linenum=$(grep -nm${2} sequence /data/.knockd.cfg | cut -d : -f 1 | tail -n1)
|
||||||
if ! [[ $(awk "NR==$linenum" /tmp/knockd-config.cfg) =~ $regseq ]]; then
|
if ! [[ $(awk "NR==$linenum" /data/.knockd.cfg) =~ $regseq ]]; then
|
||||||
sed -i "${linenum}s/sequence.*/sequence = $1/" /tmp/knockd-config.cfg
|
sed -i "${linenum}s/sequence.*/sequence = $1/" /data/.knockd.cfg
|
||||||
log "Updated $3 port in knockd config"
|
log "Updated $3 port in knockd config"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -67,6 +67,12 @@ fi
|
|||||||
# seq_cooldown cannot be larger than AUTOPAUSE_TIMEOUT_KN, otherwise the server may
|
# seq_cooldown cannot be larger than AUTOPAUSE_TIMEOUT_KN, otherwise the server may
|
||||||
# become paused while knockd is still ignoring packets, preventing players from joining.
|
# become paused while knockd is still ignoring packets, preventing players from joining.
|
||||||
let COOLDOWN=$AUTOPAUSE_TIMEOUT_KN/2
|
let COOLDOWN=$AUTOPAUSE_TIMEOUT_KN/2
|
||||||
sed -i "s/\(seq_cooldown *= *\).*/\1$COOLDOWN/" /tmp/knockd-config.cfg
|
sed -i "s/\(seq_cooldown *= *\).*/\1$COOLDOWN/" /data/.knockd.cfg
|
||||||
|
|
||||||
|
if isDebugging; then
|
||||||
|
echo "Autopause configuration: ======================================"
|
||||||
|
cat /data/.knockd.cfg
|
||||||
|
echo "==============================================================="
|
||||||
|
fi
|
||||||
|
|
||||||
"$(dirname "$0")/auto/autopause-daemon.sh" &
|
"$(dirname "$0")/auto/autopause-daemon.sh" &
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ IFS=$'\n\t'
|
|||||||
|
|
||||||
: "${EULA:=}"
|
: "${EULA:=}"
|
||||||
: "${PROXY:=}"
|
: "${PROXY:=}"
|
||||||
|
: "${PREFER_IPV6:=false}"
|
||||||
: "${ENABLE_AUTOPAUSE:=false}"
|
: "${ENABLE_AUTOPAUSE:=false}"
|
||||||
: "${ENABLE_AUTOSTOP:=false}"
|
: "${ENABLE_AUTOSTOP:=false}"
|
||||||
: "${RCON_CMDS_STARTUP:=}"
|
: "${RCON_CMDS_STARTUP:=}"
|
||||||
@@ -28,6 +29,13 @@ shopt -s nullglob
|
|||||||
|
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
|
|
||||||
|
if isTrue "$PREFER_IPV6"; then
|
||||||
|
MC_IMAGE_HELPER_OPTS+="-Djava.net.preferIPv6Addresses=true -Djava.net.preferIPv6Stack=true"
|
||||||
|
export MC_IMAGE_HELPER_OPTS
|
||||||
|
JVM_DD_OPTS+="java.net.preferIPv6Addresses=true java.net.preferIPv6Stack=true"
|
||||||
|
export JVM_DD_OPTS
|
||||||
|
fi
|
||||||
|
|
||||||
if (( $(mc-image-helper java-release) >= 17 )); then
|
if (( $(mc-image-helper java-release) >= 17 )); then
|
||||||
MC_IMAGE_HELPER_OPTS+=" --enable-native-access=ALL-UNNAMED"
|
MC_IMAGE_HELPER_OPTS+=" --enable-native-access=ALL-UNNAMED"
|
||||||
export MC_IMAGE_HELPER_OPTS
|
export MC_IMAGE_HELPER_OPTS
|
||||||
|
|||||||
+78
-15
@@ -7,11 +7,13 @@
|
|||||||
function getGTNHdownloadPath(){
|
function getGTNHdownloadPath(){
|
||||||
gtnh_download_path=""
|
gtnh_download_path=""
|
||||||
local release_object=""
|
local release_object=""
|
||||||
local current_java_version=""
|
|
||||||
current_java_version=$(mc-image-helper java-release)
|
|
||||||
|
|
||||||
# Select release JSON object
|
# Select release JSON object
|
||||||
|
# latest-dev will be removed in the future, but is still supported for now.
|
||||||
|
if [ "$GTNH_PACK_VERSION" == "latest-dev" ] || [ "$GTNH_PACK_VERSION" == "latest-beta" ]; then
|
||||||
if [ "$GTNH_PACK_VERSION" == "latest-dev" ]; then
|
if [ "$GTNH_PACK_VERSION" == "latest-dev" ]; then
|
||||||
|
logWarning "GTNH_PACK_VERSION=latest-dev is deprecated and will be removed in the future."
|
||||||
|
fi
|
||||||
if ! release_object="$(
|
if ! release_object="$(
|
||||||
curl -fsSL "https://downloads.gtnewhorizons.com/versions.json" \
|
curl -fsSL "https://downloads.gtnewhorizons.com/versions.json" \
|
||||||
| jq -r '(.versions // .)|to_entries|sort_by(.value.releaseDate)|map(select(.value.title=="Beta release"))|.[-1]'
|
| jq -r '(.versions // .)|to_entries|sort_by(.value.releaseDate)|map(select(.value.title=="Beta release"))|.[-1]'
|
||||||
@@ -46,23 +48,18 @@ function getGTNHdownloadPath(){
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Select compatible server files for java version
|
# Select compatible server files for java version
|
||||||
if (( current_java_version == 8 )); then
|
if (( java_version == 8 )); then
|
||||||
gtnh_download_path=$(jq -r '.value.server.java8Url' <<< "$release_object")
|
gtnh_download_path=$(jq -r '.value.server.java8Url' <<< "$release_object")
|
||||||
log "Use GTNH Server Java 8 release."
|
log "Use GTNH Server Java 8 release."
|
||||||
|
|
||||||
elif (( current_java_version >= 17 )); then
|
elif (( java_version >= 17 )); then
|
||||||
if (( current_java_version > $(jq '.value.maxJavaVersion' <<< "$release_object") )); then
|
if (( java_version > $(jq '.value.maxJavaVersion' <<< "$release_object") )); then
|
||||||
logError "Container Java version $current_java_version is not supported by GTNH. Try an older release."
|
logError "Container Java version $java_version is not supported by GTNH. Try an older release."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
gtnh_download_path=$(jq -r '.value.server.java17_2XUrl' <<< "$release_object")
|
gtnh_download_path=$(jq -r '.value.server.java17_2XUrl' <<< "$release_object")
|
||||||
log "Use GTNH Server Java 17+ release."
|
log "Use GTNH Server Java 17+ release."
|
||||||
|
|
||||||
else
|
|
||||||
logError "Container Java version $current_java_version is not supported by GTNH."
|
|
||||||
exit 1
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z $gtnh_download_path ]]; then
|
if [[ -z $gtnh_download_path ]]; then
|
||||||
@@ -73,6 +70,56 @@ function getGTNHdownloadPath(){
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getGTNHdownloadOptions(){
|
||||||
|
# Used for GTNH daily build downloads, to pass additional options to the download command.
|
||||||
|
gtnh_download_options=()
|
||||||
|
# Used for dryrun check
|
||||||
|
gtnh_download_path=""
|
||||||
|
|
||||||
|
# Check if GH_TOKEN is set for daily builds
|
||||||
|
if [ -z "$GH_TOKEN" ]; then
|
||||||
|
logError "GH_TOKEN environment variable must be set to use daily builds."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
gtnh_download_options+=( --output-filename )
|
||||||
|
|
||||||
|
# prepare download options as an array to safely append patterns
|
||||||
|
if [ "$GTNH_PACK_VERSION" == "latest" ] || [ "$GTNH_PACK_VERSION" == "latest-dev" ]; then
|
||||||
|
if [ "$GTNH_PACK_VERSION" == "latest-dev" ]; then
|
||||||
|
logWarning "GTNH_PACK_VERSION=latest-dev is deprecated and will be removed in the future."
|
||||||
|
fi
|
||||||
|
gtnh_download_options+=( --workflow=daily-modpack-build.yml )
|
||||||
|
log "Using latest daily build for GTNH server files."
|
||||||
|
elif [ "$GTNH_PACK_VERSION" == "latest-beta" ]; then
|
||||||
|
gtnh_download_options+=( --workflow=daily-modpack-build.yml )
|
||||||
|
logWarning "Using daily build instead of latest beta release for GTNH server files. If this is not intended, set GTNH_USE_DAILY_BUILD=false to use the latest beta release instead."
|
||||||
|
else
|
||||||
|
gtnh_download_options+=( --run-id="$GTNH_PACK_VERSION" )
|
||||||
|
log "Using specific daily build run ID $GTNH_PACK_VERSION for GTNH server files."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Select compatible server files for java version
|
||||||
|
if (( java_version == 8 )); then
|
||||||
|
log "Use GTNH Server Java 8 release."
|
||||||
|
gtnh_download_options+=( --artifact-pattern='GTNH-daily-\d{4}-\d{2}-\d{2}\+\d+-server-java8\.zip' )
|
||||||
|
|
||||||
|
elif (( java_version >= 17 )); then
|
||||||
|
log "Use GTNH Server Java 17+ release."
|
||||||
|
gtnh_download_options+=( --artifact-pattern='GTNH-daily-\d{4}-\d{2}-\d{2}\+\d+-server-java17-\d{2}\.zip' )
|
||||||
|
fi
|
||||||
|
|
||||||
|
debug "GTNH daily build download options: ${gtnh_download_options[*]}"
|
||||||
|
|
||||||
|
if ! gtnh_download_path=$(mc-image-helper github download-artifact --no-download "${gtnh_download_options[@]}" GTNewHorizons/DreamAssemblerXXL); then
|
||||||
|
logError "Failed to find a matching daily build for GTNH server files with the specified options."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
debug "GTNH daily build download path: $gtnh_download_path"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function deleteGTNHbackup(){
|
function deleteGTNHbackup(){
|
||||||
log "Start deleting all config backups"
|
log "Start deleting all config backups"
|
||||||
if ! find . -maxdepth 1 -type d -name 'gtnh-upgrade-*' -exec rm -rf {} + ; then
|
if ! find . -maxdepth 1 -type d -name 'gtnh-upgrade-*' -exec rm -rf {} + ; then
|
||||||
@@ -81,13 +128,22 @@ function deleteGTNHbackup(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function downloadGTNH(){
|
function downloadGTNH(){
|
||||||
local gtnh_download=""
|
gtnh_download=""
|
||||||
base_dir=/data/.tmp/gtnh_base
|
base_dir=/data/.tmp/gtnh_base
|
||||||
|
|
||||||
debug "Creating temporary /data/.tmp/packs folder for GTNH download"
|
debug "Creating temporary /data/.tmp/packs folder for GTNH download"
|
||||||
mkdir -p /data/.tmp/packs
|
mkdir -p /data/.tmp/packs
|
||||||
trap 'rm -rf /data/.tmp' EXIT
|
trap 'rm -rf /data/.tmp' EXIT
|
||||||
|
mkdir -p "${base_dir}"
|
||||||
|
|
||||||
|
if isTrue "$GTNH_USE_DAILY_BUILD"; then
|
||||||
|
log "Downloading Daily Build for GTNH server files."
|
||||||
|
# gtnh_download_options is injecting download parameters -> (--workflow or --run-id) and --artifact-pattern
|
||||||
|
if ! gtnh_download=$(mc-image-helper github download-artifact -o=$base_dir --unzip "${gtnh_download_options[@]}" GTNewHorizons/DreamAssemblerXXL); then
|
||||||
|
logError "Failed to download Daily Build for GTNH server files."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
log "Downloading $gtnh_download_path."
|
log "Downloading $gtnh_download_path."
|
||||||
if ! gtnh_download=$(mc-image-helper get -o /data/.tmp/packs --output-filename --skip-up-to-date "$gtnh_download_path"); then
|
if ! gtnh_download=$(mc-image-helper get -o /data/.tmp/packs --output-filename --skip-up-to-date "$gtnh_download_path"); then
|
||||||
logError "Failed to download $gtnh_download_path"
|
logError "Failed to download $gtnh_download_path"
|
||||||
@@ -97,8 +153,8 @@ function downloadGTNH(){
|
|||||||
|
|
||||||
# Unpacking Server files into temporary directory
|
# Unpacking Server files into temporary directory
|
||||||
log "Unpacking Server Files into $base_dir"
|
log "Unpacking Server Files into $base_dir"
|
||||||
mkdir -p "${base_dir}"
|
|
||||||
extract "${gtnh_download}" "${base_dir}"
|
extract "${gtnh_download}" "${base_dir}"
|
||||||
|
fi
|
||||||
|
|
||||||
# Remove any eula file since container manages it
|
# Remove any eula file since container manages it
|
||||||
debug "Removing eula.txt from $base_dir"
|
debug "Removing eula.txt from $base_dir"
|
||||||
@@ -209,7 +265,9 @@ function handleGTNH() {
|
|||||||
: "${GTNH_PACK_VERSION:=latest}"
|
: "${GTNH_PACK_VERSION:=latest}"
|
||||||
: "${GTNH_DELETE_BACKUPS:=false}"
|
: "${GTNH_DELETE_BACKUPS:=false}"
|
||||||
: "${SKIP_GTNH_UPDATE_CHECK:=false}"
|
: "${SKIP_GTNH_UPDATE_CHECK:=false}"
|
||||||
debug "GTNH VAR CHECK: GTNH_DELETE_BACKUPS=$GTNH_DELETE_BACKUPS, GTNH_PACK_VERSION=$GTNH_PACK_VERSION, TYPE=$TYPE, SKIP_GTNH_UPDATE_CHECK=$SKIP_GTNH_UPDATE_CHECK"
|
: "${GTNH_USE_DAILY_BUILD:=false}"
|
||||||
|
|
||||||
|
debug "GTNH VAR CHECK: GTNH_DELETE_BACKUPS=$GTNH_DELETE_BACKUPS, GTNH_PACK_VERSION=$GTNH_PACK_VERSION, TYPE=$TYPE, SKIP_GTNH_UPDATE_CHECK=$SKIP_GTNH_UPDATE_CHECK, GTNH_USE_DAILY_BUILD=$GTNH_USE_DAILY_BUILD"
|
||||||
|
|
||||||
if isTrue "$GTNH_DELETE_BACKUPS"; then
|
if isTrue "$GTNH_DELETE_BACKUPS"; then
|
||||||
deleteGTNHbackup
|
deleteGTNHbackup
|
||||||
@@ -217,8 +275,13 @@ function handleGTNH() {
|
|||||||
|
|
||||||
if [[ -n "$GTNH_PACK_VERSION" ]] && isFalse "$SKIP_GTNH_UPDATE_CHECK"; then
|
if [[ -n "$GTNH_PACK_VERSION" ]] && isFalse "$SKIP_GTNH_UPDATE_CHECK"; then
|
||||||
|
|
||||||
|
if isFalse "$GTNH_USE_DAILY_BUILD"; then
|
||||||
getGTNHdownloadPath
|
getGTNHdownloadPath
|
||||||
log "Server files located! Will proceed update $gtnh_download_path."
|
log "Server files located! Will proceed update $gtnh_download_path."
|
||||||
|
else
|
||||||
|
getGTNHdownloadOptions
|
||||||
|
log "Will proceed update with daily build options: ${gtnh_download_options[*]}."
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Decide if update or install is needed or not.
|
# Decide if update or install is needed or not.
|
||||||
@@ -239,7 +302,7 @@ function handleGTNH() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Update .gtnh-version
|
# Update .gtnh-version
|
||||||
basename "$gtnh_download_path" > /data/.gtnh-version
|
basename "$gtnh_download" > /data/.gtnh-version
|
||||||
|
|
||||||
# Cleaning up temporary files
|
# Cleaning up temporary files
|
||||||
rm -rf /data/.tmp
|
rm -rf /data/.tmp
|
||||||
|
|||||||
+15
-39
@@ -5,51 +5,27 @@
|
|||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
|
|
||||||
resolveVersion
|
resultsFile=/data/.install-vanilla.env
|
||||||
export SERVER="minecraft_server.${VERSION// /_}.jar"
|
|
||||||
|
|
||||||
if [ ! -e "$SERVER" ] || [ -n "$FORCE_REDOWNLOAD" ]; then
|
args=(
|
||||||
debug "Finding version manifest for $VERSION"
|
--output-directory=/data
|
||||||
versionManifestUrl=$(get 'https://launchermeta.mojang.com/mc/game/version_manifest.json' | jq --arg VERSION "$VERSION" --raw-output '[.versions[]|select(.id == $VERSION)][0].url')
|
--results-file="${resultsFile}"
|
||||||
result=$?
|
--version="${VERSION}"
|
||||||
if [ $result != 0 ]; then
|
)
|
||||||
logError "Failed to obtain version manifest URL ($result)"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ "$versionManifestUrl" = "null" ]; then
|
|
||||||
logError "Couldn't find a matching manifest entry for $VERSION"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
debug "Found version manifest at $versionManifestUrl"
|
|
||||||
|
|
||||||
if ! serverDownloadUrl=$(get --json-path '$.downloads.server.url' "${versionManifestUrl}"); then
|
if isTrue "${FORCE_REDOWNLOAD}"; then
|
||||||
logError "Failed to obtain version manifest from $versionManifestUrl ($result)"
|
log "Forcing re-install of Minecraft"
|
||||||
exit 1
|
args+=(--force-reinstall)
|
||||||
elif [ "$serverDownloadUrl" = "null" ]; then
|
fi
|
||||||
logError "There is not a server download for version $VERSION"
|
|
||||||
|
if ! mc-image-helper install-vanilla "${args[@]}"; then
|
||||||
|
logError "Failed to install vanilla Minecraft version $VERSION"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
log "Downloading $VERSION server..."
|
applyResultsFile "${resultsFile}"
|
||||||
debug "Downloading server from $serverDownloadUrl"
|
|
||||||
get -o "$SERVER" "$serverDownloadUrl"
|
|
||||||
result=$?
|
|
||||||
if [ $result != 0 ]; then
|
|
||||||
logError "Failed to download server from $serverDownloadUrl ($result)"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
minecraftServerJarPath=/data/minecraft_server.jar
|
|
||||||
|
|
||||||
if versionLessThan 1.6; then
|
log "Successfully setup vanilla Minecraft version $VERSION"
|
||||||
if ! [[ -L $minecraftServerJarPath && $minecraftServerJarPath -ef "/data/$SERVER" ]]; then
|
|
||||||
rm -f $minecraftServerJarPath
|
|
||||||
ln -s "/data/$SERVER" $minecraftServerJarPath
|
|
||||||
fi
|
|
||||||
SERVER=minecraft_server.jar
|
|
||||||
elif [[ -L $minecraftServerJarPath ]]; then
|
|
||||||
rm -f $minecraftServerJarPath
|
|
||||||
fi
|
|
||||||
|
|
||||||
isDebugging && ls -l
|
isDebugging && ls -l
|
||||||
export FAMILY=VANILLA
|
export FAMILY=VANILLA
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
: "${DEBUG_EXEC:=false}"
|
: "${DEBUG_EXEC:=false}"
|
||||||
: "${SETUP_ONLY:=false}"
|
: "${SETUP_ONLY:=false}"
|
||||||
: "${CUSTOM_JAR_EXEC:=}"
|
: "${CUSTOM_JAR_EXEC:=}"
|
||||||
|
: "${SERVER_RUNNER:=mc-server-runner}"
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "$(dirname "$0")/start-utils"
|
||||||
@@ -96,7 +97,7 @@ fi
|
|||||||
if versionLessThan 1.7; then
|
if versionLessThan 1.7; then
|
||||||
: # No patch required here.
|
: # No patch required here.
|
||||||
elif versionLessThan 1.18.1; then
|
elif versionLessThan 1.18.1; then
|
||||||
if isTrue ${SKIP_LOG4J_PATCHER:-false}; then
|
if isTrue "${SKIP_LOG4J_PATCHER:-false}"; then
|
||||||
log "Skipping Log4jPatcher, make sure you are not affected"
|
log "Skipping Log4jPatcher, make sure you are not affected"
|
||||||
else
|
else
|
||||||
JVM_OPTS="-javaagent:/image/Log4jPatcher.jar ${JVM_OPTS}"
|
JVM_OPTS="-javaagent:/image/Log4jPatcher.jar ${JVM_OPTS}"
|
||||||
@@ -496,7 +497,7 @@ if [[ ${TYPE} == "CURSEFORGE" && "${SERVER}" ]]; then
|
|||||||
if isTrue "${DEBUG_EXEC}"; then
|
if isTrue "${DEBUG_EXEC}"; then
|
||||||
set -x
|
set -x
|
||||||
fi
|
fi
|
||||||
exec mc-server-runner ${bootstrapArgs} "${mcServerRunnerArgs[@]}" java $JVM_XX_OPTS $JVM_OPTS $expandedDOpts -jar "$(basename "${SERVER}")" "$@" $EXTRA_ARGS
|
exec ${SERVER_RUNNER} ${bootstrapArgs} "${mcServerRunnerArgs[@]}" -- java $JVM_XX_OPTS $JVM_OPTS $expandedDOpts -jar "$(basename "${SERVER}")" "$@" $EXTRA_ARGS
|
||||||
elif [[ ${TYPE} == "CURSEFORGE" ]]; then
|
elif [[ ${TYPE} == "CURSEFORGE" ]]; then
|
||||||
mcServerRunnerArgs+=(--shell bash)
|
mcServerRunnerArgs+=(--shell bash)
|
||||||
|
|
||||||
@@ -550,18 +551,18 @@ fi
|
|||||||
JVM_ARGS=${JVM_ARGS//$'\n'/}
|
JVM_ARGS=${JVM_ARGS//$'\n'/}
|
||||||
sed -i "s~JAVA_ARGS=.*~JAVA_ARGS=\"${JVM_ARGS}\"~" "${FTB_DIR}/variables.txt"
|
sed -i "s~JAVA_ARGS=.*~JAVA_ARGS=\"${JVM_ARGS}\"~" "${FTB_DIR}/variables.txt"
|
||||||
fi
|
fi
|
||||||
exec mc-server-runner "${mcServerRunnerArgs[@]}" "${finalArgs[@]}"
|
exec ${SERVER_RUNNER} "${mcServerRunnerArgs[@]}" -- "${finalArgs[@]}"
|
||||||
elif [[ $SERVER =~ run.sh ]]; then
|
elif [[ $SERVER =~ run.sh ]]; then
|
||||||
log "Using Forge supplied run.sh script..."
|
log "Using Forge supplied run.sh script..."
|
||||||
echo $JVM_XX_OPTS $JVM_OPTS $expandedDOpts > user_jvm_args.txt
|
echo $JVM_XX_OPTS $JVM_OPTS $expandedDOpts > user_jvm_args.txt
|
||||||
if isTrue ${SETUP_ONLY}; then
|
if isTrue "${SETUP_ONLY}"; then
|
||||||
echo "SETUP_ONLY: bash ${SERVER}"
|
echo "SETUP_ONLY: bash ${SERVER}"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if isTrue "${DEBUG_EXEC}"; then
|
if isTrue "${DEBUG_EXEC}"; then
|
||||||
set -x
|
set -x
|
||||||
fi
|
fi
|
||||||
exec mc-server-runner "${mcServerRunnerArgs[@]}" --shell bash "${SERVER}" $EXTRA_ARGS
|
exec ${SERVER_RUNNER} "${mcServerRunnerArgs[@]}" --shell bash -- "${SERVER}" $EXTRA_ARGS
|
||||||
else
|
else
|
||||||
# If we have a bootstrap.txt file... feed that in to the server stdin
|
# If we have a bootstrap.txt file... feed that in to the server stdin
|
||||||
if [ -f $bootstrapPath ]; then
|
if [ -f $bootstrapPath ]; then
|
||||||
@@ -590,7 +591,7 @@ else
|
|||||||
"$@" $EXTRA_ARGS
|
"$@" $EXTRA_ARGS
|
||||||
)
|
)
|
||||||
|
|
||||||
if isTrue ${SETUP_ONLY}; then
|
if isTrue "${SETUP_ONLY}"; then
|
||||||
echo "SETUP_ONLY: java ${finalArgs[*]}"
|
echo "SETUP_ONLY: java ${finalArgs[*]}"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
@@ -599,5 +600,5 @@ else
|
|||||||
set -x
|
set -x
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec mc-server-runner ${bootstrapArgs} "${mcServerRunnerArgs[@]}" java "${finalArgs[@]}"
|
exec ${SERVER_RUNNER} ${bootstrapArgs} "${mcServerRunnerArgs[@]}" -- java "${finalArgs[@]}"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user