mirror of
https://github.com/itzg/docker-minecraft-server.git
synced 2026-07-29 20:04:53 +00:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a465d759b8 |
@@ -0,0 +1,2 @@
|
|||||||
|
# Auto detect text files and perform LF normalization
|
||||||
|
* text=lf
|
||||||
@@ -21,8 +21,8 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
# NOTE: the "latest" variant is identified in the Docker meta step's 'latest' config
|
# NOTE: the "latest" variant is identified in the Docker meta step's 'latest' config
|
||||||
variant:
|
variant:
|
||||||
- java25
|
- java24
|
||||||
- java25-graalvm
|
- java24-graalvm
|
||||||
- java21
|
- java21
|
||||||
- java21-alpine
|
- java21-alpine
|
||||||
- java21-graalvm
|
- java21-graalvm
|
||||||
@@ -37,13 +37,13 @@ jobs:
|
|||||||
- java8-openj9
|
- java8-openj9
|
||||||
- java8-jdk
|
- java8-jdk
|
||||||
include:
|
include:
|
||||||
# JAVA 25
|
# JAVA 24
|
||||||
- variant: java25
|
- variant: java24
|
||||||
baseImage: eclipse-temurin:25-jre
|
baseImage: eclipse-temurin:24-jre
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
mcVersion: latest
|
mcVersion: latest
|
||||||
- variant: java25-graalvm
|
- variant: java24-graalvm
|
||||||
baseImage: container-registry.oracle.com/graalvm/jdk:25-ol8
|
baseImage: container-registry.oracle.com/graalvm/jdk:24-ol8
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
mcVersion: latest
|
mcVersion: latest
|
||||||
# JAVA 21:
|
# JAVA 21:
|
||||||
@@ -119,7 +119,7 @@ jobs:
|
|||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v5.0.0
|
uses: actions/checkout@v4.2.2
|
||||||
with:
|
with:
|
||||||
# for build-files step
|
# for build-files step
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
@@ -186,14 +186,14 @@ jobs:
|
|||||||
tests/test.sh
|
tests/test.sh
|
||||||
|
|
||||||
- name: Login to DockerHub
|
- name: Login to DockerHub
|
||||||
uses: docker/login-action@v3.6.0
|
uses: docker/login-action@v3.5.0
|
||||||
if: env.HAS_IMAGE_REPO_ACCESS
|
if: env.HAS_IMAGE_REPO_ACCESS
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKER_USER }}
|
username: ${{ secrets.DOCKER_USER }}
|
||||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
|
||||||
- name: Login to GHCR
|
- name: Login to GHCR
|
||||||
uses: docker/login-action@v3.6.0
|
uses: docker/login-action@v3.5.0
|
||||||
if: env.HAS_IMAGE_REPO_ACCESS
|
if: env.HAS_IMAGE_REPO_ACCESS
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ jobs:
|
|||||||
pull-requests: write
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
- name: Process Stale Issues
|
- name: Process Stale Issues
|
||||||
uses: actions/stale@v10
|
uses: actions/stale@v9
|
||||||
with:
|
with:
|
||||||
stale-issue-label: status/stale
|
stale-issue-label: status/stale
|
||||||
stale-pr-label: status/stale
|
stale-pr-label: status/stale
|
||||||
|
|||||||
@@ -44,13 +44,13 @@ jobs:
|
|||||||
platforms: linux/amd64
|
platforms: linux/amd64
|
||||||
mcVersion: 1.12.2
|
mcVersion: 1.12.2
|
||||||
# Pin version for Java 8
|
# Pin version for Java 8
|
||||||
# mcHelperVersion: 1.42.1
|
mcHelperVersion: 1.42.1
|
||||||
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
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v5.0.0
|
uses: actions/checkout@v4.2.2
|
||||||
with:
|
with:
|
||||||
# for build-files step
|
# for build-files step
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|||||||
+9
-19
@@ -15,7 +15,6 @@ ARG FORCE_INSTALL_PACKAGES=1
|
|||||||
RUN --mount=target=/build,source=build \
|
RUN --mount=target=/build,source=build \
|
||||||
TARGET=${TARGETARCH}${TARGETVARIANT} \
|
TARGET=${TARGETARCH}${TARGETVARIANT} \
|
||||||
/build/run.sh install-packages
|
/build/run.sh install-packages
|
||||||
COPY --from=tianon/gosu /gosu /usr/local/bin/
|
|
||||||
|
|
||||||
RUN --mount=target=/build,source=build \
|
RUN --mount=target=/build,source=build \
|
||||||
/build/run.sh setup-user
|
/build/run.sh setup-user
|
||||||
@@ -34,7 +33,7 @@ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
|||||||
--var version=${RESTIFY_VERSION} --var app=restify --file {{.app}} \
|
--var version=${RESTIFY_VERSION} --var app=restify --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 RCON_CLI_VERSION=1.7.1
|
ARG RCON_CLI_VERSION=1.7.2
|
||||||
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
||||||
--var version=${RCON_CLI_VERSION} --var app=rcon-cli --file {{.app}} \
|
--var version=${RCON_CLI_VERSION} --var app=rcon-cli --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
|
||||||
@@ -44,19 +43,18 @@ 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.13.4
|
ARG MC_SERVER_RUNNER_VERSION=1.13.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.50.2
|
ARG MC_HELPER_VERSION=1.48.10
|
||||||
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
|
||||||
RUN curl -fsSL ${MC_HELPER_BASE_URL}/mc-image-helper-${MC_HELPER_VERSION}.tgz \
|
RUN curl -fsSL ${MC_HELPER_BASE_URL}/mc-image-helper-${MC_HELPER_VERSION}.tgz \
|
||||||
| tar -C /usr/share -zxf - \
|
| tar -C /usr/share -zxf - \
|
||||||
&& ln -s /usr/share/mc-image-helper-${MC_HELPER_VERSION}/ /usr/share/mc-image-helper \
|
&& ln -s /usr/share/mc-image-helper-${MC_HELPER_VERSION}/bin/mc-image-helper /usr/bin
|
||||||
&& ln -s /usr/share/mc-image-helper/bin/mc-image-helper /usr/bin
|
|
||||||
|
|
||||||
VOLUME ["/data"]
|
VOLUME ["/data"]
|
||||||
WORKDIR /data
|
WORKDIR /data
|
||||||
@@ -66,24 +64,16 @@ STOPSIGNAL SIGTERM
|
|||||||
# End user MUST set EULA and change RCON_PASSWORD
|
# End user MUST set EULA and change RCON_PASSWORD
|
||||||
ENV TYPE=VANILLA VERSION=LATEST EULA="" UID=1000 GID=1000 LC_ALL=en_US.UTF-8
|
ENV TYPE=VANILLA VERSION=LATEST EULA="" UID=1000 GID=1000 LC_ALL=en_US.UTF-8
|
||||||
|
|
||||||
COPY --chmod=755 scripts/start* /image/scripts/
|
COPY --chmod=755 scripts/start* /
|
||||||
|
COPY --chmod=755 files/shims/ /usr/local/bin/
|
||||||
# Backward compatible shim for those with legacy entrypoint
|
|
||||||
COPY --chmod=755 <<EOF /start
|
|
||||||
#!/bin/bash
|
|
||||||
exec /image/scripts/start
|
|
||||||
EOF
|
|
||||||
|
|
||||||
COPY --chmod=755 scripts/auto/* /image/scripts/auto/
|
|
||||||
COPY --chmod=755 scripts/shims/* /image/scripts/shims/
|
|
||||||
RUN ln -s /image/scripts/shims/* /usr/local/bin/
|
|
||||||
COPY --chmod=755 files/* /image/
|
COPY --chmod=755 files/* /image/
|
||||||
|
COPY --chmod=755 files/auto /auto
|
||||||
|
|
||||||
RUN curl -fsSL -o /image/Log4jPatcher.jar https://github.com/CreeperHost/Log4jPatcher/releases/download/v1.0.1/Log4jPatcher-1.0.1.jar
|
RUN curl -fsSL -o /image/Log4jPatcher.jar https://github.com/CreeperHost/Log4jPatcher/releases/download/v1.0.1/Log4jPatcher-1.0.1.jar
|
||||||
|
|
||||||
RUN dos2unix /image/scripts/start* /image/scripts/auto/*
|
RUN dos2unix /start* /auto/*
|
||||||
|
|
||||||
ENTRYPOINT [ "/image/scripts/start" ]
|
ENTRYPOINT [ "/start" ]
|
||||||
HEALTHCHECK --start-period=2m --retries=2 --interval=30s CMD mc-health
|
HEALTHCHECK --start-period=2m --retries=2 --interval=30s CMD mc-health
|
||||||
|
|
||||||
ARG BUILDTIME=local
|
ARG BUILDTIME=local
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ apk add --no-cache -U \
|
|||||||
imagemagick \
|
imagemagick \
|
||||||
file \
|
file \
|
||||||
lsof \
|
lsof \
|
||||||
|
su-exec \
|
||||||
coreutils \
|
coreutils \
|
||||||
findutils \
|
findutils \
|
||||||
procps \
|
procps \
|
||||||
|
|||||||
Executable
+22
@@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
GOSU_VERSION="1.16"
|
||||||
|
GOSU_BASE_URL="https://github.com/tianon/gosu/releases/download/$GOSU_VERSION"
|
||||||
|
|
||||||
|
case $(uname -m) in
|
||||||
|
"aarch64")
|
||||||
|
GOSU_ARCH="gosu-arm64"
|
||||||
|
;;
|
||||||
|
"x86_64")
|
||||||
|
GOSU_ARCH="gosu-amd64"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Architecture not supported!"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
curl -sL -o /bin/gosu "${GOSU_BASE_URL}/${GOSU_ARCH}"
|
||||||
|
chmod +x /bin/gosu
|
||||||
@@ -59,6 +59,9 @@ dnf install -y git-lfs
|
|||||||
# Clean up DNF when done
|
# Clean up DNF when done
|
||||||
dnf clean all
|
dnf clean all
|
||||||
|
|
||||||
|
# Install gosu (assuming the script /build/ol/install-gosu.sh exists and is executable)
|
||||||
|
bash /build/ol/install-gosu.sh
|
||||||
|
|
||||||
# Download and install patched knockd
|
# Download and install patched knockd
|
||||||
curl -fsSL -o /tmp/knock.tar.gz https://github.com/Metalcape/knock/releases/download/0.8.1/knock-0.8.1-$TARGET.tar.gz
|
curl -fsSL -o /tmp/knock.tar.gz https://github.com/Metalcape/knock/releases/download/0.8.1/knock-0.8.1-$TARGET.tar.gz
|
||||||
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
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ DEBIAN_FRONTEND=noninteractive \
|
|||||||
apt-get install -y \
|
apt-get install -y \
|
||||||
imagemagick \
|
imagemagick \
|
||||||
file \
|
file \
|
||||||
|
gosu \
|
||||||
sudo \
|
sudo \
|
||||||
net-tools \
|
net-tools \
|
||||||
iputils-ping \
|
iputils-ping \
|
||||||
|
|||||||
@@ -136,4 +136,8 @@ When `MEMORY` is greater than or equal to 12G, then the Aikar flags will be adju
|
|||||||
|
|
||||||
[MeowIce has created an updated set of JVM flags](https://github.com/MeowIce/meowice-flags?tab=readme-ov-file#why-would-i-have-to-switch-) based on Aikar's flags but with support for optimizations for Java 17 and above
|
[MeowIce has created an updated set of JVM flags](https://github.com/MeowIce/meowice-flags?tab=readme-ov-file#why-would-i-have-to-switch-) based on Aikar's flags but with support for optimizations for Java 17 and above
|
||||||
|
|
||||||
The set of flags documented there can be added by setting the environment variable `USE_MEOWICE_FLAGS` to `true`. There is an optional `USE_MEOWICE_GRAALVM_FLAGS` variable to enable GraalVM specific optimizations, defaults to `FALSE`.
|
The set of flags documented there can be added using
|
||||||
|
|
||||||
|
-e USE_MEOWICE_FLAGS=true
|
||||||
|
|
||||||
|
There is an optional `USE_MEOWICE_GRAALVM_FLAGS` variable to enable GraalVM specific optimizations, defaults to `TRUE` if USE_MEOWICE_GRAALVM_FLAGS is `TRUE`
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
## Running with a custom server JAR
|
## Running with a custom server JAR
|
||||||
|
|
||||||
If you would like to run a custom server JAR, set `-e TYPE=CUSTOM` and pass the custom server
|
If you would like to run a custom server JAR, set `-e TYPE=CUSTOM` and pass the custom server
|
||||||
@@ -119,9 +120,7 @@ disable that by passing `-e GUI=FALSE`.
|
|||||||
|
|
||||||
## Stop Duration
|
## Stop Duration
|
||||||
|
|
||||||
When the container is signaled to stop, the Minecraft process wrapper will attempt to send a "stop" command via RCON or console and waits for the process to gracefully finish. By default, it waits 60 seconds, but that duration can be configured by setting the environment variable `STOP_DURATION` to the number of seconds.
|
When the container is signalled to stop, the Minecraft process wrapper will attempt to send a "stop" command via RCON or console and waits for the process to gracefully finish. By default it waits 60 seconds, but that duration can be configured by setting the environment variable `STOP_DURATION` to the number of seconds.
|
||||||
|
|
||||||
Be sure to also increase the shutdown timeout described [here for docker compose down](https://docs.docker.com/reference/cli/docker/compose/down/#options) and [here for docker stop](https://docs.docker.com/reference/cli/docker/container/stop/#options).
|
|
||||||
|
|
||||||
## Setup only
|
## Setup only
|
||||||
|
|
||||||
@@ -143,27 +142,6 @@ To enable support for optimized SIMD operations, the JVM flag can be set with th
|
|||||||
|
|
||||||
SIMD optimized operations are supported by Pufferfish and Purpur.
|
SIMD optimized operations are supported by Pufferfish and Purpur.
|
||||||
|
|
||||||
For example, to download configuration files for plugins:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
environment:
|
|
||||||
DOWNLOAD_EXTRA_CONFIGS: |
|
|
||||||
plugins/WorldEdit<https://raw.githubusercontent.com/EngineHub/WorldEdit/refs/heads/version/7.3.x/worldedit-bukkit/src/main/resources/defaults/config.yml
|
|
||||||
plugins/EssentialsX<https://raw.githubusercontent.com/EssentialsX/Essentials/refs/heads/2.x/Essentials/src/main/resources/config.yml
|
|
||||||
```
|
|
||||||
|
|
||||||
Or as a single line:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
environment:
|
|
||||||
DOWNLOAD_EXTRA_CONFIGS: "plugins/WorldEdit<https://example.com/worldedit.yml,config<https://example.com/another.yml"
|
|
||||||
```
|
|
||||||
|
|
||||||
The files will be downloaded to `/data/` relative paths, so `plugins/WorldEdit` will be saved as `/data/plugins/WorldEdit/config.yml`.
|
|
||||||
|
|
||||||
!!! note
|
|
||||||
The downloaded files can be further processed using [environment variable replacement](interpolating.md) or [patch definitions](interpolating.md#patching-existing-files)
|
|
||||||
|
|
||||||
## Enable timestamps in init logs
|
## Enable timestamps in init logs
|
||||||
|
|
||||||
Before the container starts the Minecraft Server its output is prefixed with `[init]`, such as
|
Before the container starts the Minecraft Server its output is prefixed with `[init]`, such as
|
||||||
|
|||||||
@@ -396,52 +396,43 @@ When using `docker run` from a bash shell, the entries must be quoted with the `
|
|||||||
|
|
||||||
### Other server property mappings
|
### Other server property mappings
|
||||||
|
|
||||||
| Environment Variable | Server Property |
|
| Environment Variable | Server Property |
|
||||||
|-----------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|
|
|-----------------------------------|-------------------------------------------------------------------------------------------------------------------|
|
||||||
| ACCEPTS_TRANSFERS | [accepts-transfers](https://minecraft.wiki/w/Server.properties#accepts-transfers) |
|
| ACCEPTS_TRANSFERS | [accepts-transfers](https://minecraft.wiki/w/Server.properties#accepts-transfers) |
|
||||||
| ALLOW_FLIGHT | [allow-flight](https://minecraft.wiki/w/Server.properties#allow-flight) |
|
| ALLOW_FLIGHT | [allow-flight](https://minecraft.wiki/w/Server.properties#allow-flight) |
|
||||||
| ALLOW_NETHER | [allow-nether](https://minecraft.wiki/w/Server.properties#allow-nether) |
|
| ALLOW_NETHER | [allow-nether](https://minecraft.wiki/w/Server.properties#allow-nether) |
|
||||||
| BROADCAST_CONSOLE_TO_OPS | [broadcast-console-to-ops](https://minecraft.wiki/w/Server.properties#broadcast-console-to-ops) |
|
| BROADCAST_CONSOLE_TO_OPS | [broadcast-console-to-ops](https://minecraft.wiki/w/Server.properties#broadcast-console-to-ops) |
|
||||||
| BROADCAST_RCON_TO_OPS | [broadcast-rcon-to-ops](https://minecraft.wiki/w/Server.properties#broadcast-rcon-to-ops) |
|
| BROADCAST_RCON_TO_OPS | [broadcast-rcon-to-ops](https://minecraft.wiki/w/Server.properties#broadcast-rcon-to-ops) |
|
||||||
| BUG_REPORT_LINK | [bug-report-link](https://minecraft.wiki/w/Server.properties#bug-report-link) |
|
| BUG_REPORT_LINK | [bug-report-link](https://minecraft.wiki/w/Server.properties#bug-report-link) |
|
||||||
| ENABLE_COMMAND_BLOCK | [enable-command-block](https://minecraft.wiki/w/Server.properties#enable-command-block) |
|
| ENABLE_COMMAND_BLOCK | [enable-command-block](https://minecraft.wiki/w/Server.properties#enable-command-block) |
|
||||||
| ENABLE_STATUS | [enable-status](https://minecraft.wiki/w/Server.properties#enable-status) |
|
| ENABLE_STATUS | [enable-status](https://minecraft.wiki/w/Server.properties#enable-status) |
|
||||||
| ENFORCE_SECURE_PROFILE | [enforce-secure-profile](https://minecraft.wiki/w/Server.properties#enforce-secure-profile) |
|
| ENFORCE_SECURE_PROFILE | [enforce-secure-profile](https://minecraft.wiki/w/Server.properties#enforce-secure-profile) |
|
||||||
| ENTITY_BROADCAST_RANGE_PERCENTAGE | [entity-broadcast-range-percentage](https://minecraft.wiki/w/Server.properties#entity-broadcast-range-percentage) |
|
| ENTITY_BROADCAST_RANGE_PERCENTAGE | [entity-broadcast-range-percentage](https://minecraft.wiki/w/Server.properties#entity-broadcast-range-percentage) |
|
||||||
| FORCE_GAMEMODE | [force-gamemode](https://minecraft.wiki/w/Server.properties#force-gamemode) |
|
| FORCE_GAMEMODE | [force-gamemode](https://minecraft.wiki/w/Server.properties#force-gamemode) |
|
||||||
| FUNCTION_PERMISSION_LEVEL | [function-permission-level](https://minecraft.wiki/w/Server.properties#function-permission-level) |
|
| FUNCTION_PERMISSION_LEVEL | [function-permission-level](https://minecraft.wiki/w/Server.properties#function-permission-level) |
|
||||||
| GENERATE_STRUCTURES | [generate-structures](https://minecraft.wiki/w/Server.properties#generate-structures) |
|
| GENERATE_STRUCTURES | [generate-structures](https://minecraft.wiki/w/Server.properties#generate-structures) |
|
||||||
| HARDCORE | [hardcore](https://minecraft.wiki/w/Server.properties#hardcore) |
|
| HARDCORE | [hardcore](https://minecraft.wiki/w/Server.properties#hardcore) |
|
||||||
| HIDE_ONLINE_PLAYERS | [hide-online-players](https://minecraft.wiki/w/Server.properties#hide-online-players) |
|
| HIDE_ONLINE_PLAYERS | [hide-online-players](https://minecraft.wiki/w/Server.properties#hide-online-players) |
|
||||||
| LOG_IPS | [log-ips](https://minecraft.wiki/w/Server.properties#log-ips) |
|
| LOG_IPS | [log-ips](https://minecraft.wiki/w/Server.properties#log-ips) |
|
||||||
| MANAGEMENT_SERVER_ALLOWED_ORIGINS | [management-server-allowed-origins](https://minecraft.wiki/w/Server.properties#management-server-allowed-origins) |
|
| MAX_CHAINED_NEIGHBOR_UPDATES | [max-chained-neighbor-updates](https://minecraft.wiki/w/Server.properties#max-chained-neighbor-updates) |
|
||||||
| MANAGEMENT_SERVER_ENABLED | [management-server-enabled](https://minecraft.wiki/w/Server.properties#management-server-enabled) |
|
| MAX_PLAYERS | [max-players](https://minecraft.wiki/w/Server.properties#max-players) |
|
||||||
| MANAGEMENT_SERVER_HOST | [management-server-host](https://minecraft.wiki/w/Server.properties#management-server-host) |
|
| MAX_TICK_TIME | [max-tick-time](https://minecraft.wiki/w/Server.properties#max-tick-time) |
|
||||||
| MANAGEMENT_SERVER_PORT | [management-server-port](https://minecraft.wiki/w/Server.properties#management-server-port) |
|
| MAX_WORLD_SIZE | [max-world-size](https://minecraft.wiki/w/Server.properties#max-world-size) |
|
||||||
| MANAGEMENT_SERVER_SECRET | [management-server-secret](https://minecraft.wiki/w/Server.properties#management-server-secret) |
|
| NETWORK_COMPRESSION_THRESHOLD | [network-compression-threshold](https://minecraft.wiki/w/Server.properties#network-compression-threshold) |
|
||||||
| MANAGEMENT_SERVER_TLS_ENABLED | [management-server-tls-enabled](https://minecraft.wiki/w/Server.properties#management-server-tls-enabled) |
|
| ONLINE_MODE | [online-mode](https://minecraft.wiki/w/Server.properties#online-mode) |
|
||||||
| MANAGEMENT_SERVER_TLS_KEYSTORE | [management-server-tls-keystore](https://minecraft.wiki/w/Server.properties#management-server-tls-keystore) |
|
| OP_PERMISSION_LEVEL | [op-permission-level](https://minecraft.wiki/w/Server.properties#op-permission-level) |
|
||||||
| MANAGEMENT_SERVER_TLS_KEYSTORE_PASSWORD | [management-server-tls-keystore-password](https://minecraft.wiki/w/Server.properties#management-server-tls-keystore-password) |
|
| PAUSE_WHEN_EMPTY_SECONDS | [pause-when-empty-seconds](https://minecraft.wiki/w/Server.properties#pause-when-empty-seconds) |
|
||||||
| MAX_CHAINED_NEIGHBOR_UPDATES | [max-chained-neighbor-updates](https://minecraft.wiki/w/Server.properties#max-chained-neighbor-updates) |
|
| PLAYER_IDLE_TIMEOUT | [player-idle-timeout](https://minecraft.wiki/w/Server.properties#player-idle-timeout) |
|
||||||
| MAX_PLAYERS | [max-players](https://minecraft.wiki/w/Server.properties#max-players) |
|
| PREVENT_PROXY_CONNECTIONS | [prevent-proxy-connections](https://minecraft.wiki/w/Server.properties#prevent-proxy-connections) |
|
||||||
| MAX_TICK_TIME | [max-tick-time](https://minecraft.wiki/w/Server.properties#max-tick-time) |
|
| PVP | [pvp](https://minecraft.wiki/w/Server.properties#pvp) |
|
||||||
| MAX_WORLD_SIZE | [max-world-size](https://minecraft.wiki/w/Server.properties#max-world-size) |
|
| RATE_LIMIT | [rate-limit](https://minecraft.wiki/w/Server.properties#rate-limit) |
|
||||||
| NETWORK_COMPRESSION_THRESHOLD | [network-compression-threshold](https://minecraft.wiki/w/Server.properties#network-compression-threshold) |
|
| REGION_FILE_COMPRESSION | [region-file-compression](https://minecraft.wiki/w/Server.properties#region-file-compression) |
|
||||||
| ONLINE_MODE | [online-mode](https://minecraft.wiki/w/Server.properties#online-mode) |
|
| RESOURCE_PACK_ID | [resource-pack-id](https://minecraft.wiki/w/Server.properties#resource-pack-id) |
|
||||||
| OP_PERMISSION_LEVEL | [op-permission-level](https://minecraft.wiki/w/Server.properties#op-permission-level) |
|
| RESOURCE_PACK_PROMPT | [resource-pack-prompt](https://minecraft.wiki/w/Server.properties#resource-pack-prompt) |
|
||||||
| PAUSE_WHEN_EMPTY_SECONDS | [pause-when-empty-seconds](https://minecraft.wiki/w/Server.properties#pause-when-empty-seconds) |
|
| SERVER_NAME | [server-name](https://minecraft.wiki/w/Server.properties#server-name) |
|
||||||
| PLAYER_IDLE_TIMEOUT | [player-idle-timeout](https://minecraft.wiki/w/Server.properties#player-idle-timeout) |
|
| SIMULATION_DISTANCE | [simulation-distance](https://minecraft.wiki/w/Server.properties#simulation-distance) |
|
||||||
| PREVENT_PROXY_CONNECTIONS | [prevent-proxy-connections](https://minecraft.wiki/w/Server.properties#prevent-proxy-connections) |
|
| SPAWN_MONSTERS | [spawn-monsters](https://minecraft.wiki/w/Server.properties#spawn-monsters) |
|
||||||
| PVP | [pvp](https://minecraft.wiki/w/Server.properties#pvp) |
|
| SPAWN_PROTECTION | [spawn-protection](https://minecraft.wiki/w/Server.properties#spawn-protection) |
|
||||||
| RATE_LIMIT | [rate-limit](https://minecraft.wiki/w/Server.properties#rate-limit) |
|
| SYNC_CHUNK_WRITES | [sync-chunk-writes](https://minecraft.wiki/w/Server.properties#sync-chunk-writes) |
|
||||||
| REGION_FILE_COMPRESSION | [region-file-compression](https://minecraft.wiki/w/Server.properties#region-file-compression) |
|
| USE_NATIVE_TRANSPORT | [use-native-transport](https://minecraft.wiki/w/Server.properties#use-native-transport) |
|
||||||
| RESOURCE_PACK_ID | [resource-pack-id](https://minecraft.wiki/w/Server.properties#resource-pack-id) |
|
| VIEW_DISTANCE | [view-distance](https://minecraft.wiki/w/Server.properties#view-distance) |
|
||||||
| RESOURCE_PACK_PROMPT | [resource-pack-prompt](https://minecraft.wiki/w/Server.properties#resource-pack-prompt) |
|
|
||||||
| SERVER_NAME | [server-name](https://minecraft.wiki/w/Server.properties#server-name) |
|
|
||||||
| SIMULATION_DISTANCE | [simulation-distance](https://minecraft.wiki/w/Server.properties#simulation-distance) |
|
|
||||||
| SPAWN_MONSTERS | [spawn-monsters](https://minecraft.wiki/w/Server.properties#spawn-monsters) |
|
|
||||||
| SPAWN_PROTECTION | [spawn-protection](https://minecraft.wiki/w/Server.properties#spawn-protection) |
|
|
||||||
| STATUS_HEARTBEAT_INTERVAL | [status-heartbeat-interval](https://minecraft.wiki/w/Server.properties#status-heartbeat-interval) |
|
|
||||||
| SYNC_CHUNK_WRITES | [sync-chunk-writes](https://minecraft.wiki/w/Server.properties#sync-chunk-writes) |
|
|
||||||
| USE_NATIVE_TRANSPORT | [use-native-transport](https://minecraft.wiki/w/Server.properties#use-native-transport) |
|
|
||||||
| VIEW_DISTANCE | [view-distance](https://minecraft.wiki/w/Server.properties#view-distance) |
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 15 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 13 KiB |
@@ -8,7 +8,7 @@ An auto-pause functionality is provided that monitors whether clients are connec
|
|||||||
|
|
||||||
!!! important
|
!!! important
|
||||||
|
|
||||||
**You must greatly increase or disable max-tick-time watchdog functionality.** From the server's point of view, the pausing causes a single tick to take as long as the process is stopped, so the server watchdog might intervene after the process is continued, possibly forcing a container restart. To prevent this, ensure that the `max-tick-time` in the `server.properties` file is set to a very large value or -1 to disable it entirely, which is highly recommended. That can be set with `MAX_TICK_TIME` as described in [server properties](../../configuration/server-properties.md).
|
**You must greatly increase or disable max-tick-time watchdog functionality.** From the server's point of view, the pausing causes a single tick to take as long as the process is stopped, so the server watchdog might intervene after the process is continued, possibly forcing a container restart. To prevent this, ensure that the `max-tick-time` in the `server.properties` file is set to a very large value or -1 to disable it entirely, which is highly recommended. That can be set with `MAX_TICK_TIME` as described in [the section below](../../configuration/server-properties.md#max-tick-time).
|
||||||
|
|
||||||
Non-vanilla versions might have their own configuration file, you might have to disable their watchdogs separately. For PaperMC servers, you need to send the JVM flag `-Ddisable.watchdog=true`, this can be done with the docker env variable `-e JVM_DD_OPTS=disable.watchdog:true`
|
Non-vanilla versions might have their own configuration file, you might have to disable their watchdogs separately. For PaperMC servers, you need to send the JVM flag `-Ddisable.watchdog=true`, this can be done with the docker env variable `-e JVM_DD_OPTS=disable.watchdog:true`
|
||||||
|
|
||||||
|
|||||||
@@ -47,20 +47,20 @@ popd
|
|||||||
Using the baseline image, an interactive container can be started to iteratively run the scripts to be developed. By attaching the current workspace directory, you can use the local editor of your choice to iteratively modify scripts while using the container to run them.
|
Using the baseline image, an interactive container can be started to iteratively run the scripts to be developed. By attaching the current workspace directory, you can use the local editor of your choice to iteratively modify scripts while using the container to run them.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
docker run -it --rm -v ${PWD}:/image/scripts --entrypoint bash mc-dev
|
docker run -it --rm -v ${PWD}:/scripts -e SCRIPTS=/scripts/ --entrypoint bash mc-dev
|
||||||
```
|
```
|
||||||
|
|
||||||
From within the container you can run individual scripts via the attached `/image/scripts/` path; however, be sure to set any environment variables expected by the scripts by either `export`ing them manually:
|
From within the container you can run individual scripts via the attached `/scripts/` path; however, be sure to set any environment variables expected by the scripts by either `export`ing them manually:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
export VERSION=1.12.2
|
export VERSION=1.12.2
|
||||||
/image/scripts/start-deployFabric
|
/scripts/start-magma
|
||||||
```
|
```
|
||||||
|
|
||||||
...or pre-pending script execution:
|
...or pre-pending script execution:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
VERSION=1.12.2 /image/scripts/start-deployFabric
|
VERSION=1.12.2 /scripts/start-magma
|
||||||
```
|
```
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
@@ -69,38 +69,15 @@ VERSION=1.12.2 /image/scripts/start-deployFabric
|
|||||||
|
|
||||||
## Using development copy of tools
|
## Using development copy of tools
|
||||||
|
|
||||||
In the cloned repo, such as [`mc-image-helper`](https://github.com/itzg/mc-image-helper), install the distribution locally by running:
|
In the cloned repo, such as [`mc-image-helper`](https://github.com/itzg/mc-image-helper), create an up-to-date snapshot build of the tgz distribution using:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
./gradlew installDist
|
./gradlew distTar
|
||||||
```
|
```
|
||||||
|
|
||||||
The distribution will be installed in the project's `build/install/mc-image-helper`. Obtain the absolute path to that directory use in the next step.
|
!!! note
|
||||||
|
|
||||||
Refer to the instructions above to mount any locally modified image scripts or build a local copy of the image using or with alternate `BASE_IMAGE`, as described above:
|
The distribution's version will be `0.0.0-<branch>-SNAPSHOT`
|
||||||
|
|
||||||
```shell
|
|
||||||
docker build -t itzg/minecraft-server .
|
|
||||||
```
|
|
||||||
|
|
||||||
Mount the local mc-image-helper distribution directory as a volume in the container at the path `/usr/share/mc-image-helper`, such as
|
|
||||||
|
|
||||||
```shell
|
|
||||||
docker run -it --rm \
|
|
||||||
-v /path/to/mc-image-helper/build/install/mc-image-helper:/usr/share/mc-image-helper \
|
|
||||||
-e EULA=true \
|
|
||||||
itzg/minecraft-server
|
|
||||||
```
|
|
||||||
|
|
||||||
In a compose file, include the volume mount in the `volumes` section of the container definition:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
services:
|
|
||||||
mc:
|
|
||||||
# ... usual container definition
|
|
||||||
volumes:
|
|
||||||
- /path/to/mc-image-helper/build/install/mc-image-helper:/usr/share/mc-image-helper:ro
|
|
||||||
```
|
|
||||||
|
|
||||||
For Go base tools, run
|
For Go base tools, run
|
||||||
|
|
||||||
|
|||||||
@@ -65,31 +65,7 @@ These paths work well if you want to have a common set of modules in a separate
|
|||||||
|
|
||||||
Alternatively, you can declare other directories along with files and URLs to use in [the `MODS` / `PLUGINS` variables](#modsplugins-list).
|
Alternatively, you can declare other directories along with files and URLs to use in [the `MODS` / `PLUGINS` variables](#modsplugins-list).
|
||||||
|
|
||||||
## Applying extra configuration files
|
|
||||||
|
|
||||||
You can download/copy additional configuration files or other resources before the server starts by using the `APPLY_EXTRA_FILES` environment variable. This is useful for downloading configs that you want to patch or modify during the startup process.
|
|
||||||
|
|
||||||
The format uses a `<` separator between the destination path and the source URL/path. The destination path is relative to the `/data` directory. If specifying a source path, it needs to be path mounted within the container.
|
|
||||||
|
|
||||||
!!! example
|
|
||||||
|
|
||||||
With `docker run`
|
|
||||||
|
|
||||||
```
|
|
||||||
-e APPLY_EXTRA_FILES=destination<source_url[,destination2<source_url2,...]
|
|
||||||
```
|
|
||||||
|
|
||||||
With a compose file:
|
|
||||||
```yaml
|
|
||||||
environment:
|
|
||||||
APPLY_EXTRA_FILES: |
|
|
||||||
destination<source1_url
|
|
||||||
destination2<source2_path
|
|
||||||
```
|
|
||||||
|
|
||||||
!!! tip "Patch-able"
|
|
||||||
|
|
||||||
The `APPLY_EXTRA_FILES` feature is processed prior to [patch processing](../configuration/interpolating.md#patching-existing-files), so this can be used as for baseline files to be patched further at runtime.
|
|
||||||
|
|
||||||
## Zip file modpack
|
## Zip file modpack
|
||||||
|
|
||||||
@@ -157,14 +133,6 @@ The newline delimiting allows for compose file usage like:
|
|||||||
https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/spigot
|
https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/spigot
|
||||||
```
|
```
|
||||||
|
|
||||||
!!! note "Auto-removal"
|
|
||||||
|
|
||||||
Entries that are removed from the `MODS` or `PLUGINS` list will be automatically removed from the `mods` or `plugins` directory. This is useful for removing mods/plugins that are no longer needed. An empty `MODS` or `PLUGINS` list will remove all mods/plugins.
|
|
||||||
|
|
||||||
!!! note "Disable processing"
|
|
||||||
|
|
||||||
To temporarily disable processing of the `MODS` or `PLUGINS` list, then comment out the `MODS` or `PLUGINS` environment variable.
|
|
||||||
|
|
||||||
## Mod/Plugin URL Listing File
|
## Mod/Plugin URL Listing File
|
||||||
|
|
||||||
As an alternative to `MODS`/`PLUGINS`, the variable `MODS_FILE` or `PLUGINS_FILE` can be set with the container path or URL of a text file listing a mod/plugin URLs on each line. For example, the following
|
As an alternative to `MODS`/`PLUGINS`, the variable `MODS_FILE` or `PLUGINS_FILE` can be set with the container path or URL of a text file listing a mod/plugin URLs on each line. For example, the following
|
||||||
|
|||||||
@@ -2,64 +2,28 @@
|
|||||||
|
|
||||||
[Modrinth](https://modrinth.com/) is an open source modding platform with a clean, easy to use website for finding [Fabric, Forge, etc mods](https://modrinth.com/mods) and [Paper, etc plugins](https://modrinth.com/plugins), and [datapacks](https://modrinth.com/datapacks). At startup, the container will automatically locate and download the newest versions of mod/plugin files that correspond to the `TYPE` and `VERSION` in use. Older file versions downloaded previously will automatically be cleaned up.
|
[Modrinth](https://modrinth.com/) is an open source modding platform with a clean, easy to use website for finding [Fabric, Forge, etc mods](https://modrinth.com/mods) and [Paper, etc plugins](https://modrinth.com/plugins), and [datapacks](https://modrinth.com/datapacks). At startup, the container will automatically locate and download the newest versions of mod/plugin files that correspond to the `TYPE` and `VERSION` in use. Older file versions downloaded previously will automatically be cleaned up.
|
||||||
|
|
||||||
## Usage
|
- **MODRINTH_PROJECTS** : comma or newline separated list of project slugs (short name) or IDs. The project ID is located in the "Technical information" section. The project slug is the part of the URL that follows `/mod/`, `/plugin/`, or `/datapack/`. For example:
|
||||||
|
```
|
||||||
|
https://modrinth.com/mod/fabric-api
|
||||||
|
----------
|
||||||
|
|
|
||||||
|
+-- project slug
|
||||||
|
```
|
||||||
|
Also, a specific version (or release type) can be declared adding a colon and then the version id, version number/name, or release type after the project slug. The version ID or number can be found in the 'Metadata' section. Valid release types are `release`, `beta`, `alpha`.
|
||||||
|
|
||||||
To use this feature, set the environment variable `MODRINTH_PROJECTS` to a comma or newline separated list of projects.
|
To select a datapack from a Modrinth project, prefix the entry with "datapack:". When running a vanilla server, this is optional since only datapacks will be available for vanilla servers to select.
|
||||||
|
|
||||||
Each project entry can be any of the following combinations where a colon (`:`) is used to separate the different parts:
|
You can also reference a file containing project entries by prefixing the **container path** path with `@`.
|
||||||
|
|
||||||
```
|
| Description | Example projects entry |
|
||||||
Project
|
|---------------------------------|-------------------------------------------------------|
|
||||||
Project : Version
|
| Select latest version | `fabric-api` |
|
||||||
Project : Release Type
|
| Select specific version | `fabric-api:bQZpGIz0`<br/>`fabric-api:0.119.2+1.21.4` |
|
||||||
Prefix : Project
|
| Select latest beta version | `fabric-api:beta` |
|
||||||
Prefix : Project : Version
|
| Latest version using project ID | `P7dR8mSH` |
|
||||||
Prefix : Project : Release Type
|
| Latest version of datapack | `datapack:terralith` |
|
||||||
@ Listing File
|
| Specific version of datapack | `datapack:terralith:2.5.5` |
|
||||||
```
|
| Projects Listing File | `@/path/to/modrinth-mods.txt` |
|
||||||
|
|
||||||
Where:
|
|
||||||
|
|
||||||
- **Project** is the project slug or ID, see below
|
|
||||||
- **Version** is the version ID (such as "Oa9ZDzZq") or number (such as "2.21.2"). When omitted, the latest release version will be selected. Using version ID will override Minecraft and loader compatibility checks.
|
|
||||||
- **Release Type** is `release`, `beta`, or `alpha` indicating the latest version to select.
|
|
||||||
- **Prefix** is `datapack`, `fabric`, `forge`, or `paper`
|
|
||||||
- The `datapack` prefix is optional when running a vanilla server
|
|
||||||
- The `fabric`, `forge`, and `paper` prefixes allow for installing mods/plugins that differ from server's `TYPE`. Using [Sinytra Connector](https://modrinth.com/mod/connector) is an example of this, where Fabric mods can be loaded into a NeoForge server.
|
|
||||||
- **Listing file** is a container path to a file containing a list of projects
|
|
||||||
|
|
||||||
!!! tip "Project ID"
|
|
||||||
|
|
||||||
The project ID can be copied to the clipboard from the project page menu:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
!!! tip "Project Slug"
|
|
||||||
|
|
||||||
The project slug is the part of the URL that follows `/mod/`, `/plugin/`, or `/datapack/`. For example, this one is "essentialsx".
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
!!! tip "Version number and ID"
|
|
||||||
|
|
||||||
The version number and ID are located in the metadata panel on a version specific page, such as <https://modrinth.com/plugin/essentialsx/version/2.21.2>
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### Examples
|
|
||||||
|
|
||||||
| Description | Example projects entry |
|
|
||||||
|---------------------------------|-------------------------------------------------------|
|
|
||||||
| Select latest version | `fabric-api` |
|
|
||||||
| Select specific version | `fabric-api:bQZpGIz0`<br/>`fabric-api:0.119.2+1.21.4` |
|
|
||||||
| Select latest beta version | `fabric-api:beta` |
|
|
||||||
| Latest version using project ID | `P7dR8mSH` |
|
|
||||||
| Latest version of datapack | `datapack:terralith` |
|
|
||||||
| Specific version of datapack | `datapack:terralith:2.5.5` |
|
|
||||||
| Mod loader override | `fabric:fabric-api`<br/>`fabric:fabric-api:bQZpGIz0` |
|
|
||||||
| Projects Listing File | `@/path/to/modrinth-mods.txt` |
|
|
||||||
|
|
||||||
### Notes
|
|
||||||
|
|
||||||
!!! info "More about listing files"
|
!!! info "More about listing files"
|
||||||
|
|
||||||
@@ -78,14 +42,6 @@ Where:
|
|||||||
datapack:terralith
|
datapack:terralith
|
||||||
```
|
```
|
||||||
|
|
||||||
!!! note "Auto-removal"
|
|
||||||
|
|
||||||
Entries that are removed from the `MODRINTH_PROJECTS` list will be automatically removed from the `mods` or `plugins` directory. This is useful for removing mods/plugins that are no longer needed. An empty `MODRINTH_PROJECTS` list will remove all mods/plugins.
|
|
||||||
|
|
||||||
!!! note "Disable processing"
|
|
||||||
|
|
||||||
To temporarily disable processing of the `MODRINTH_PROJECTS` list, then comment out the `MODRINTH_PROJECTS` environment variable.
|
|
||||||
|
|
||||||
## Version from Projects
|
## Version from Projects
|
||||||
|
|
||||||
When the environment variable `VERSION_FROM_MODRINTH_PROJECTS` is set to "true" the Minecraft [`VERSION`](../versions/minecraft.md) will be automatically determined by looking at the most recent version of Minecraft that is supported by all the projects provided in `MODRINTH_PROJECTS`.
|
When the environment variable `VERSION_FROM_MODRINTH_PROJECTS` is set to "true" the Minecraft [`VERSION`](../versions/minecraft.md) will be automatically determined by looking at the most recent version of Minecraft that is supported by all the projects provided in `MODRINTH_PROJECTS`.
|
||||||
@@ -110,7 +66,7 @@ When the environment variable `VERSION_FROM_MODRINTH_PROJECTS` is set to "true"
|
|||||||
`MODRINTH_DOWNLOAD_DEPENDENCIES`
|
`MODRINTH_DOWNLOAD_DEPENDENCIES`
|
||||||
: Can be set to `none` (the default), `required`, or `optional` to download required and/or optional dependencies.
|
: Can be set to `none` (the default), `required`, or `optional` to download required and/or optional dependencies.
|
||||||
|
|
||||||
`MODRINTH_PROJECTS_DEFAULT_VERSION_TYPE`
|
`MODRINTH_ALLOWED_VERSION_TYPE`
|
||||||
: The version type is used to determine the newest version to use from each project. The allowed values are `release` (default), `beta`, `alpha`. Setting to `beta` will pick up both release and beta versions. Setting to `alpha` will pick up release, beta, and alpha versions.
|
: The version type is used to determine the newest version to use from each project. The allowed values are `release` (default), `beta`, `alpha`. Setting to `beta` will pick up both release and beta versions. Setting to `alpha` will pick up release, beta, and alpha versions.
|
||||||
|
|
||||||
`MODRINTH_LOADER`
|
`MODRINTH_LOADER`
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
mkdocs-material == 9.6.22
|
mkdocs-material == 9.6.16
|
||||||
mkdocs-autorefs == 1.4.3
|
mkdocs-autorefs == 1.4.2
|
||||||
mkdocstrings[python] == 0.30.1
|
mkdocstrings[python] == 0.30.0
|
||||||
mkdocs-literate-nav == 0.6.2
|
mkdocs-literate-nav == 0.6.2
|
||||||
mdx-gh-links == 0.4
|
mdx-gh-links == 0.4
|
||||||
mkdocs-click == 0.9.0
|
mkdocs-click == 0.9.0
|
||||||
|
|||||||
@@ -216,17 +216,6 @@ If needing to iterate on the options above, set `CF_FORCE_SYNCHRONIZE` to "true"
|
|||||||
!!! important
|
!!! important
|
||||||
These options are provided to empower you to get your server up and running quickly. Please help out by reporting an issue with the respective mod project. Ideally mod developers should [use correct registrations for one-sided client mods](https://docs.minecraftforge.net/en/latest/concepts/sides/#writing-one-sided-mods). Understandably, those code changes may be non-trivial, so mod authors can also add "Client" to the game versions when publishing.
|
These options are provided to empower you to get your server up and running quickly. Please help out by reporting an issue with the respective mod project. Ideally mod developers should [use correct registrations for one-sided client mods](https://docs.minecraftforge.net/en/latest/concepts/sides/#writing-one-sided-mods). Understandably, those code changes may be non-trivial, so mod authors can also add "Client" to the game versions when publishing.
|
||||||
|
|
||||||
!!! tip "Embedded comments"
|
|
||||||
|
|
||||||
Comments can be embedded in the list using the `#` character.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
CF_EXCLUDE_MODS: |
|
|
||||||
# Exclude client-side mods not published correctly
|
|
||||||
creative-core
|
|
||||||
default-options
|
|
||||||
```
|
|
||||||
|
|
||||||
## Excluding Overrides Files
|
## Excluding Overrides Files
|
||||||
|
|
||||||
Modpack zip files typically include an `overrides` subdirectory that may contain config files, world data, and extra mod files. All of those files will be extracted into the `/data` path of the container. If any of those files, such as incompatible mods, need to be excluded from extraction, then the `CF_OVERRIDES_EXCLUSIONS` variable can be set with a comma or newline delimited list of ant-style paths ([see below](#ant-style-paths)) to exclude, relative to the overrides (or `/data`) directory.
|
Modpack zip files typically include an `overrides` subdirectory that may contain config files, world data, and extra mod files. All of those files will be extracted into the `/data` path of the container. If any of those files, such as incompatible mods, need to be excluded from extraction, then the `CF_OVERRIDES_EXCLUSIONS` variable can be set with a comma or newline delimited list of ant-style paths ([see below](#ant-style-paths)) to exclude, relative to the overrides (or `/data`) directory.
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ The desired modpack project is specified with the `MODRINTH_MODPACK` environment
|
|||||||
|
|
||||||
The automatic modpack version resolving can be narrowed in a few ways:
|
The automatic modpack version resolving can be narrowed in a few ways:
|
||||||
|
|
||||||
The latest release or beta version, respectively, of the Modrinth modpack is selected when `VERSION` is "LATEST" or "SNAPSHOT". That can be overridden by setting `MODRINTH_MODPACK_VERSION_TYPE` to "release", "beta", or "alpha".
|
The latest release or beta version, respectively, of the Modrinth modpack is selected when `VERSION` is "LATEST" or "SNAPSHOT". That can be overridden by setting `MODRINTH_DEFAULT_VERSION_TYPE` to "release", "beta", or "alpha".
|
||||||
|
|
||||||
The resolved modpack version can be narrowed by setting `VERSION` to a specific Minecraft version, such as "1.19.2".
|
The resolved modpack version can be narrowed by setting `VERSION` to a specific Minecraft version, such as "1.19.2".
|
||||||
|
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ where `<tag>` refers to the first column of this table:
|
|||||||
|----------------|--------------|--------|--------------------|---------------------|------|
|
|----------------|--------------|--------|--------------------|---------------------|------|
|
||||||
| latest | 21 | Ubuntu | Hotspot | amd64, arm64 | |
|
| latest | 21 | Ubuntu | Hotspot | amd64, arm64 | |
|
||||||
| stable | 21 | Ubuntu | Hotspot | amd64, arm64 | |
|
| stable | 21 | Ubuntu | Hotspot | amd64, arm64 | |
|
||||||
| java25 | 25 | Ubuntu | Hotspot | amd64, arm64 | |
|
| java24 | 24 | Ubuntu | Hotspot | amd64, arm64 | (2) |
|
||||||
| java25-graalvm | 25 | Oracle | Oracle GraalVM (3) | amd64, arm64 | |
|
| java24-graalvm | 24 | Oracle | Oracle GraalVM (3) | amd64, arm64 | (2) |
|
||||||
| java21 | 21 | Ubuntu | Hotspot | amd64, arm64 | |
|
| java21 | 21 | Ubuntu | Hotspot | amd64, arm64 | |
|
||||||
| java21-jdk | 21 | Ubuntu | Hotspot+JDK | amd64, arm64 | |
|
| java21-jdk | 21 | Ubuntu | Hotspot+JDK | amd64, arm64 | |
|
||||||
| java21-alpine | 21 | Alpine | Hotspot | amd64, arm64 | |
|
| java21-alpine | 21 | Alpine | Hotspot | amd64, arm64 | |
|
||||||
@@ -137,7 +137,6 @@ The following image tags have been deprecated and are no longer receiving update
|
|||||||
- java19
|
- java19
|
||||||
- java20-graalvm, java20, java20-alpine
|
- java20-graalvm, java20, java20-alpine
|
||||||
- java23-*
|
- java23-*
|
||||||
- java24, java24-graalvm
|
|
||||||
- java8-multiarch is still built and pushed, but please move to java8 instead
|
- java8-multiarch is still built and pushed, but please move to java8 instead
|
||||||
- java8-alpine, java8-jdk, java8-openj9, java8-graalvm-ce
|
- java8-alpine, java8-jdk, java8-openj9, java8-graalvm-ce
|
||||||
|
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
services:
|
|
||||||
mc:
|
|
||||||
image: itzg/minecraft-server
|
|
||||||
environment:
|
|
||||||
EULA: "TRUE"
|
|
||||||
TYPE: PAPER
|
|
||||||
MAX_MEMORY: 4G
|
|
||||||
MODRINTH_PROJECTS: |
|
|
||||||
luckperms
|
|
||||||
APPLY_EXTRA_FILES: |
|
|
||||||
plugins/LuckPerms</shared-configs/LuckPerms/
|
|
||||||
DEBUG: true
|
|
||||||
volumes:
|
|
||||||
- data:/data
|
|
||||||
- ./shared-configs:/shared-configs:ro
|
|
||||||
ports:
|
|
||||||
- "25565:25565"
|
|
||||||
volumes:
|
|
||||||
data:
|
|
||||||
@@ -1,753 +0,0 @@
|
|||||||
####################################################################################################
|
|
||||||
# LOCALLY MODIFIED
|
|
||||||
####################################################################################################
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
# | __ __ ___ __ __ | #
|
|
||||||
# | | | | / ` |__/ |__) |__ |__) |\/| /__` | #
|
|
||||||
# | |___ \__/ \__, | \ | |___ | \ | | .__/ | #
|
|
||||||
# | | #
|
|
||||||
# | https://luckperms.net | #
|
|
||||||
# | | #
|
|
||||||
# | WIKI: https://luckperms.net/wiki | #
|
|
||||||
# | DISCORD: https://discord.gg/luckperms | #
|
|
||||||
# | BUG REPORTS: https://github.com/LuckPerms/LuckPerms/issues | #
|
|
||||||
# | | #
|
|
||||||
# | Each option in this file is documented and explained here: | #
|
|
||||||
# | ==> https://luckperms.net/wiki/Configuration | #
|
|
||||||
# | | #
|
|
||||||
# | New options are not added to this file automatically. Default values are used if an | #
|
|
||||||
# | option cannot be found. The latest config versions can be obtained at the link above. | #
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
####################################################################################################
|
|
||||||
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
# | | #
|
|
||||||
# | ESSENTIAL SETTINGS | #
|
|
||||||
# | | #
|
|
||||||
# | Important settings that control how LuckPerms functions. | #
|
|
||||||
# | | #
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
|
|
||||||
# The name of the server, used for server specific permissions.
|
|
||||||
#
|
|
||||||
# - When set to "global" this setting is effectively ignored.
|
|
||||||
# - In all other cases, the value here is added to all players in a "server" context.
|
|
||||||
# - See: https://luckperms.net/wiki/Context
|
|
||||||
server: global
|
|
||||||
|
|
||||||
# If the servers own UUID cache/lookup facility should be used when there is no record for a player
|
|
||||||
# already in LuckPerms.
|
|
||||||
#
|
|
||||||
# - When this is set to 'false', commands using a player's username will not work unless the player
|
|
||||||
# has joined since LuckPerms was first installed.
|
|
||||||
# - To get around this, you can use a player's uuid directly in the command, or enable this option.
|
|
||||||
# - When this is set to 'true', the server facility is used. This may use a number of methods,
|
|
||||||
# including checking the servers local cache, or making a request to the Mojang API.
|
|
||||||
use-server-uuid-cache: false
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
# | | #
|
|
||||||
# | STORAGE SETTINGS | #
|
|
||||||
# | | #
|
|
||||||
# | Controls which storage method LuckPerms will use to store data. | #
|
|
||||||
# | | #
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
|
|
||||||
# How the plugin should store data
|
|
||||||
#
|
|
||||||
# - The various options are explained in more detail on the wiki:
|
|
||||||
# https://luckperms.net/wiki/Storage-types
|
|
||||||
#
|
|
||||||
# - Possible options:
|
|
||||||
#
|
|
||||||
# | Remote databases - require connection information to be configured below
|
|
||||||
# |=> MySQL
|
|
||||||
# |=> MariaDB (preferred over MySQL)
|
|
||||||
# |=> PostgreSQL
|
|
||||||
# |=> MongoDB
|
|
||||||
#
|
|
||||||
# | Flatfile/local database - don't require any extra configuration
|
|
||||||
# |=> H2 (preferred over SQLite)
|
|
||||||
# |=> SQLite
|
|
||||||
#
|
|
||||||
# | Readable & editable text files - don't require any extra configuration
|
|
||||||
# |=> YAML (.yml files)
|
|
||||||
# |=> JSON (.json files)
|
|
||||||
# |=> HOCON (.conf files)
|
|
||||||
# |=> TOML (.toml files)
|
|
||||||
# |
|
|
||||||
# | By default, user, group and track data is separated into different files. Data can be combined
|
|
||||||
# | and all stored in the same file by switching to a combined storage variant.
|
|
||||||
# | Just add '-combined' to the end of the storage-method, e.g. 'yaml-combined'
|
|
||||||
#
|
|
||||||
# - A H2 database is the default option.
|
|
||||||
# - If you want to edit data manually in "traditional" storage files, we suggest using YAML.
|
|
||||||
storage-method: h2
|
|
||||||
|
|
||||||
# The following block defines the settings for remote database storage methods.
|
|
||||||
#
|
|
||||||
# - You don't need to touch any of the settings here if you're using a local storage method!
|
|
||||||
# - The connection detail options are shared between all remote storage types.
|
|
||||||
data:
|
|
||||||
|
|
||||||
# Define the address and port for the database.
|
|
||||||
# - The standard DB engine port is used by default
|
|
||||||
# (MySQL: 3306, PostgreSQL: 5432, MongoDB: 27017)
|
|
||||||
# - Specify as "host:port" if differs
|
|
||||||
address: localhost
|
|
||||||
|
|
||||||
# The name of the database to store LuckPerms data in.
|
|
||||||
# - This must be created already. Don't worry about this setting if you're using MongoDB.
|
|
||||||
database: minecraft
|
|
||||||
|
|
||||||
# Credentials for the database.
|
|
||||||
username: root
|
|
||||||
password: ''
|
|
||||||
|
|
||||||
# These settings apply to the MySQL connection pool.
|
|
||||||
# - The default values will be suitable for the majority of users.
|
|
||||||
# - Do not change these settings unless you know what you're doing!
|
|
||||||
pool-settings:
|
|
||||||
|
|
||||||
# Sets the maximum size of the MySQL connection pool.
|
|
||||||
# - Basically this value will determine the maximum number of actual
|
|
||||||
# connections to the database backend.
|
|
||||||
# - More information about determining the size of connection pools can be found here:
|
|
||||||
# https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing
|
|
||||||
maximum-pool-size: 10
|
|
||||||
|
|
||||||
# Sets the minimum number of idle connections that the pool will try to maintain.
|
|
||||||
# - For maximum performance and responsiveness to spike demands, it is recommended to not set
|
|
||||||
# this value and instead allow the pool to act as a fixed size connection pool.
|
|
||||||
# (set this value to the same as 'maximum-pool-size')
|
|
||||||
minimum-idle: 10
|
|
||||||
|
|
||||||
# This setting controls the maximum lifetime of a connection in the pool in milliseconds.
|
|
||||||
# - The value should be at least 30 seconds less than any database or infrastructure imposed
|
|
||||||
# connection time limit.
|
|
||||||
maximum-lifetime: 1800000 # 30 minutes
|
|
||||||
|
|
||||||
# This setting controls how frequently the pool will 'ping' a connection in order to prevent it
|
|
||||||
# from being timed out by the database or network infrastructure, measured in milliseconds.
|
|
||||||
# - The value should be less than maximum-lifetime and greater than 30000 (30 seconds).
|
|
||||||
# - Setting the value to zero will disable the keepalive functionality.
|
|
||||||
keepalive-time: 0
|
|
||||||
|
|
||||||
# This setting controls the maximum number of milliseconds that the plugin will wait for a
|
|
||||||
# connection from the pool, before timing out.
|
|
||||||
connection-timeout: 5000 # 5 seconds
|
|
||||||
|
|
||||||
# This setting allows you to define extra properties for connections.
|
|
||||||
#
|
|
||||||
# By default, the following options are set to enable utf8 encoding. (you may need to remove
|
|
||||||
# these if you are using PostgreSQL)
|
|
||||||
# useUnicode: true
|
|
||||||
# characterEncoding: utf8
|
|
||||||
#
|
|
||||||
# You can also use this section to disable SSL connections, by uncommenting the 'useSSL' and
|
|
||||||
# 'verifyServerCertificate' options below.
|
|
||||||
properties:
|
|
||||||
useUnicode: true
|
|
||||||
characterEncoding: utf8
|
|
||||||
#useSSL: false
|
|
||||||
#verifyServerCertificate: false
|
|
||||||
|
|
||||||
# The prefix for all LuckPerms SQL tables.
|
|
||||||
#
|
|
||||||
# - This only applies for remote SQL storage types (MySQL, MariaDB, etc).
|
|
||||||
# - Change this if you want to use different tables for different servers.
|
|
||||||
table-prefix: 'luckperms_'
|
|
||||||
|
|
||||||
# The prefix to use for all LuckPerms MongoDB collections.
|
|
||||||
#
|
|
||||||
# - This only applies for the MongoDB storage type.
|
|
||||||
# - Change this if you want to use different collections for different servers. The default is no
|
|
||||||
# prefix.
|
|
||||||
mongodb-collection-prefix: ''
|
|
||||||
|
|
||||||
# The connection string URI to use to connect to the MongoDB instance.
|
|
||||||
#
|
|
||||||
# - When configured, this setting will override anything defined in the address, database,
|
|
||||||
# username or password fields above.
|
|
||||||
# - If you have a connection string that starts with 'mongodb://' or 'mongodb+srv://', enter it
|
|
||||||
# below.
|
|
||||||
# - For more information, please see https://docs.mongodb.com/manual/reference/connection-string/
|
|
||||||
mongodb-connection-uri: ''
|
|
||||||
|
|
||||||
# Define settings for a "split" storage setup.
|
|
||||||
#
|
|
||||||
# - This allows you to define a storage method for each type of data.
|
|
||||||
# - The connection options above still have to be correct for each type here.
|
|
||||||
split-storage:
|
|
||||||
# Don't touch this if you don't want to use split storage!
|
|
||||||
enabled: false
|
|
||||||
methods:
|
|
||||||
# These options don't need to be modified if split storage isn't enabled.
|
|
||||||
user: h2
|
|
||||||
group: h2
|
|
||||||
track: h2
|
|
||||||
uuid: h2
|
|
||||||
log: h2
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
# | | #
|
|
||||||
# | UPDATE PROPAGATION & MESSAGING SERVICE | #
|
|
||||||
# | | #
|
|
||||||
# | Controls the ways in which LuckPerms will sync data & notify other servers of changes. | #
|
|
||||||
# | These options are documented on greater detail on the wiki under "Instant Updates". | #
|
|
||||||
# | | #
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
|
|
||||||
# This option controls how frequently LuckPerms will perform a sync task.
|
|
||||||
#
|
|
||||||
# - A sync task will refresh all data from the storage, and ensure that the most up-to-date data is
|
|
||||||
# being used by the plugin.
|
|
||||||
# - This is disabled by default, as most users will not need it. However, if you're using a remote
|
|
||||||
# storage type without a messaging service setup, you may wish to set this to something like 3.
|
|
||||||
# - Set to -1 to disable the task completely.
|
|
||||||
sync-minutes: -1
|
|
||||||
|
|
||||||
# If the file watcher should be enabled.
|
|
||||||
#
|
|
||||||
# - When using a file-based storage type, LuckPerms can monitor the data files for changes, and
|
|
||||||
# automatically update when changes are detected.
|
|
||||||
# - If you don't want this feature to be active, set this option to false.
|
|
||||||
watch-files: true
|
|
||||||
|
|
||||||
# Define which messaging service should be used by the plugin.
|
|
||||||
#
|
|
||||||
# - If enabled and configured, LuckPerms will use the messaging service to inform other connected
|
|
||||||
# servers of changes.
|
|
||||||
# - Use the command "/lp networksync" to manually push changes.
|
|
||||||
# - Data is NOT stored using this service. It is only used as a messaging platform.
|
|
||||||
#
|
|
||||||
# - If you decide to enable this feature, you should set "sync-minutes" to -1, as there is no need
|
|
||||||
# for LuckPerms to poll the database for changes.
|
|
||||||
#
|
|
||||||
# - Possible options:
|
|
||||||
# => sql Uses the SQL database to form a queue system for communication. Will only work when
|
|
||||||
# 'storage-method' is set to MySQL or MariaDB. This is chosen by default if the
|
|
||||||
# option is set to 'auto' and SQL storage is in use. Set to 'notsql' to disable this.
|
|
||||||
# => pluginmsg Uses the plugin messaging channels to communicate with the proxy.
|
|
||||||
# LuckPerms must be installed on your proxy & all connected servers backend servers.
|
|
||||||
# Won't work if you have more than one proxy.
|
|
||||||
# => lilypad Uses LilyPad pub-sub to push changes. You need to have the LilyPad-Connect plugin
|
|
||||||
# installed.
|
|
||||||
# => redis Uses Redis pub-sub to push changes. Your server connection info must be configured
|
|
||||||
# below.
|
|
||||||
# => rabbitmq Uses RabbitMQ pub-sub to push changes. Your server connection info must be
|
|
||||||
# configured below.
|
|
||||||
# => nats Uses Nats pub-sub to push changes. Your server connection info must be
|
|
||||||
# configured below.
|
|
||||||
# => custom Uses a messaging service provided using the LuckPerms API.
|
|
||||||
# => auto Attempts to automatically setup a messaging service using redis or sql.
|
|
||||||
messaging-service: auto
|
|
||||||
|
|
||||||
# If LuckPerms should automatically push updates after a change has been made with a command.
|
|
||||||
auto-push-updates: true
|
|
||||||
|
|
||||||
# If LuckPerms should push logging entries to connected servers via the messaging service.
|
|
||||||
push-log-entries: true
|
|
||||||
|
|
||||||
# If LuckPerms should broadcast received logging entries to players on this platform.
|
|
||||||
#
|
|
||||||
# - If you have LuckPerms installed on your backend servers as well as a BungeeCord proxy, you
|
|
||||||
# should set this option to false on either your backends or your proxies, to avoid players being
|
|
||||||
# messaged twice about log entries.
|
|
||||||
broadcast-received-log-entries: true
|
|
||||||
|
|
||||||
# Settings for Redis.
|
|
||||||
# Port 6379 is used by default; set address to "host:port" if differs
|
|
||||||
# Multiple Redis nodes can be specified in the same format as a string list under the name "addresses".
|
|
||||||
redis:
|
|
||||||
enabled: false
|
|
||||||
address: localhost
|
|
||||||
username: ''
|
|
||||||
password: ''
|
|
||||||
|
|
||||||
# Settings for Nats.
|
|
||||||
# Port 4222 is used by default; set address to "host:port" if differs
|
|
||||||
nats:
|
|
||||||
enabled: false
|
|
||||||
address: localhost
|
|
||||||
username: ''
|
|
||||||
password: ''
|
|
||||||
|
|
||||||
# Settings for RabbitMQ.
|
|
||||||
# Port 5672 is used by default; set address to "host:port" if differs
|
|
||||||
rabbitmq:
|
|
||||||
enabled: false
|
|
||||||
address: localhost
|
|
||||||
vhost: '/'
|
|
||||||
username: 'guest'
|
|
||||||
password: 'guest'
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
# | | #
|
|
||||||
# | CUSTOMIZATION SETTINGS | #
|
|
||||||
# | | #
|
|
||||||
# | Settings that allow admins to customize the way LuckPerms operates. | #
|
|
||||||
# | | #
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
|
|
||||||
# Controls how temporary permissions/parents/meta should be accumulated.
|
|
||||||
#
|
|
||||||
# - The default behaviour is "deny".
|
|
||||||
# - This behaviour can also be specified when the command is executed. See the command usage
|
|
||||||
# documentation for more info.
|
|
||||||
#
|
|
||||||
# - Possible options:
|
|
||||||
# => accumulate durations will be added to the existing expiry time
|
|
||||||
# => replace durations will be replaced if the new duration is later than the current
|
|
||||||
# expiration
|
|
||||||
# => deny the command will just fail if you try to add another node with the same expiry
|
|
||||||
temporary-add-behaviour: deny
|
|
||||||
|
|
||||||
# Controls how LuckPerms will determine a users "primary" group.
|
|
||||||
#
|
|
||||||
# - The meaning and influence of "primary groups" are explained in detail on the wiki.
|
|
||||||
# - The preferred approach is to let LuckPerms automatically determine a users primary group
|
|
||||||
# based on the relative weight of their parent groups.
|
|
||||||
#
|
|
||||||
# - Possible options:
|
|
||||||
# => stored use the value stored against the users record in the file/database
|
|
||||||
# => parents-by-weight just use the users most highly weighted parent
|
|
||||||
# => all-parents-by-weight same as above, but calculates based upon all parents inherited from
|
|
||||||
# both directly and indirectly
|
|
||||||
primary-group-calculation: parents-by-weight
|
|
||||||
|
|
||||||
# If the plugin should check for "extra" permissions with users run LP commands.
|
|
||||||
#
|
|
||||||
# - These extra permissions allow finer control over what users can do with each command, and who
|
|
||||||
# they have access to edit.
|
|
||||||
# - The nature of the checks are documented on the wiki under "Argument based command permissions".
|
|
||||||
# - Argument based permissions are *not* static, unlike the 'base' permissions, and will depend upon
|
|
||||||
# the arguments given within the command.
|
|
||||||
argument-based-command-permissions: false
|
|
||||||
|
|
||||||
# If the plugin should check whether senders are a member of a given group before they're able to
|
|
||||||
# edit the groups data or add/remove other users to/from it.
|
|
||||||
# Note: these limitations do not apply to the web editor!
|
|
||||||
require-sender-group-membership-to-modify: false
|
|
||||||
|
|
||||||
# If the plugin should send log notifications to users whenever permissions are modified.
|
|
||||||
#
|
|
||||||
# - Notifications are only sent to those with the appropriate permission to receive them
|
|
||||||
# - They can also be temporarily enabled/disabled on a per-user basis using
|
|
||||||
# '/lp log notify <on|off>'
|
|
||||||
log-notify: true
|
|
||||||
|
|
||||||
# Defines a list of log entries which should not be sent as notifications to users.
|
|
||||||
#
|
|
||||||
# - Each entry in the list is a RegEx expression which is matched against the log entry description.
|
|
||||||
log-notify-filtered-descriptions:
|
|
||||||
# - "parent add example"
|
|
||||||
|
|
||||||
# If LuckPerms should automatically install translation bundles and periodically update them.
|
|
||||||
auto-install-translations: true
|
|
||||||
|
|
||||||
# Defines the options for prefix and suffix stacking.
|
|
||||||
#
|
|
||||||
# - The feature allows you to display multiple prefixes or suffixes alongside a players username in
|
|
||||||
# chat.
|
|
||||||
# - It is explained and documented in more detail on the wiki under "Prefix & Suffix Stacking".
|
|
||||||
#
|
|
||||||
# - The options are divided into separate sections for prefixes and suffixes.
|
|
||||||
# - The 'duplicates' setting refers to how duplicate elements are handled. Can be 'retain-all',
|
|
||||||
# 'first-only' or 'last-only'.
|
|
||||||
# - The value of 'start-spacer' is included at the start of the resultant prefix/suffix.
|
|
||||||
# - The value of 'end-spacer' is included at the end of the resultant prefix/suffix.
|
|
||||||
# - The value of 'middle-spacer' is included between each element in the resultant prefix/suffix.
|
|
||||||
#
|
|
||||||
# - Possible format options:
|
|
||||||
# => highest Selects the value with the highest weight, from all values
|
|
||||||
# held by or inherited by the player.
|
|
||||||
#
|
|
||||||
# => lowest Same as above, except takes the one with the lowest weight.
|
|
||||||
#
|
|
||||||
# => highest_own Selects the value with the highest weight, but will not
|
|
||||||
# accept any inherited values.
|
|
||||||
#
|
|
||||||
# => lowest_own Same as above, except takes the value with the lowest weight.
|
|
||||||
#
|
|
||||||
# => highest_inherited Selects the value with the highest weight, but will only
|
|
||||||
# accept inherited values.
|
|
||||||
#
|
|
||||||
# => lowest_inherited Same as above, except takes the value with the lowest weight.
|
|
||||||
#
|
|
||||||
# => highest_on_track_<track> Selects the value with the highest weight, but only if the
|
|
||||||
# value was inherited from a group on the given track.
|
|
||||||
#
|
|
||||||
# => lowest_on_track_<track> Same as above, except takes the value with the lowest weight.
|
|
||||||
#
|
|
||||||
# => highest_not_on_track_<track> Selects the value with the highest weight, but only if the
|
|
||||||
# value was inherited from a group not on the given track.
|
|
||||||
#
|
|
||||||
# => lowest_not_on_track_<track> Same as above, except takes the value with the lowest weight.
|
|
||||||
#
|
|
||||||
# => highest_from_group_<group> Selects the value with the highest weight, but only if the
|
|
||||||
# value was inherited from the given group.
|
|
||||||
#
|
|
||||||
# => lowest_from_group_<group> Same as above, except takes the value with the lowest weight.
|
|
||||||
#
|
|
||||||
# => highest_not_from_group_<group> Selects the value with the highest weight, but only if the
|
|
||||||
# value was not inherited from the given group.
|
|
||||||
#
|
|
||||||
# => lowest_not_from_group_<group> Same as above, except takes the value with the lowest weight.
|
|
||||||
meta-formatting:
|
|
||||||
prefix:
|
|
||||||
format:
|
|
||||||
- "highest"
|
|
||||||
duplicates: first-only
|
|
||||||
start-spacer: ""
|
|
||||||
middle-spacer: " "
|
|
||||||
end-spacer: ""
|
|
||||||
suffix:
|
|
||||||
format:
|
|
||||||
- "highest"
|
|
||||||
duplicates: first-only
|
|
||||||
start-spacer: ""
|
|
||||||
middle-spacer: " "
|
|
||||||
end-spacer: ""
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
# | | #
|
|
||||||
# | PERMISSION CALCULATION AND INHERITANCE | #
|
|
||||||
# | | #
|
|
||||||
# | Modify the way permission checks, meta lookups and inheritance resolutions are handled. | #
|
|
||||||
# | | #
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
|
|
||||||
# The algorithm LuckPerms should use when traversing the "inheritance tree".
|
|
||||||
#
|
|
||||||
# - Possible options:
|
|
||||||
# => breadth-first See: https://en.wikipedia.org/wiki/Breadth-first_search
|
|
||||||
# => depth-first-pre-order See: https://en.wikipedia.org/wiki/Depth-first_search
|
|
||||||
# => depth-first-post-order See: https://en.wikipedia.org/wiki/Depth-first_search
|
|
||||||
inheritance-traversal-algorithm: depth-first-pre-order
|
|
||||||
|
|
||||||
# If a final sort according to "inheritance rules" should be performed after the traversal algorithm
|
|
||||||
# has resolved the inheritance tree.
|
|
||||||
#
|
|
||||||
# "Inheritance rules" refers to things such as group weightings, primary group status, and the
|
|
||||||
# natural contextual ordering of the group nodes.
|
|
||||||
#
|
|
||||||
# Setting this to 'true' will allow for the inheritance rules to take priority over the structure of
|
|
||||||
# the inheritance tree.
|
|
||||||
#
|
|
||||||
# Effectively when this setting is 'true': the tree is flattened, and rules applied afterwards,
|
|
||||||
# and when this setting is 'false':, the rules are just applied during each step of the traversal.
|
|
||||||
post-traversal-inheritance-sort: false
|
|
||||||
|
|
||||||
# Defines the mode used to determine whether a set of contexts are satisfied.
|
|
||||||
#
|
|
||||||
# - Possible options:
|
|
||||||
# => at-least-one-value-per-key Set A will be satisfied by another set B, if at least one of the
|
|
||||||
# key-value entries per key in A are also in B.
|
|
||||||
# => all-values-per-key Set A will be satisfied by another set B, if all key-value
|
|
||||||
# entries in A are also in B.
|
|
||||||
context-satisfy-mode: at-least-one-value-per-key
|
|
||||||
|
|
||||||
# LuckPerms has a number of built-in contexts. These can be disabled by adding the context key to
|
|
||||||
# the list below.
|
|
||||||
disabled-contexts:
|
|
||||||
# - "world"
|
|
||||||
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
# | Permission resolution settings | #
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
|
|
||||||
# If users on this server should have their global permissions applied.
|
|
||||||
# When set to false, only server specific permissions will apply for users on this server
|
|
||||||
include-global: true
|
|
||||||
|
|
||||||
# If users on this server should have their global world permissions applied.
|
|
||||||
# When set to false, only world specific permissions will apply for users on this server
|
|
||||||
include-global-world: true
|
|
||||||
|
|
||||||
# If users on this server should have global (non-server specific) groups applied
|
|
||||||
apply-global-groups: true
|
|
||||||
|
|
||||||
# If users on this server should have global (non-world specific) groups applied
|
|
||||||
apply-global-world-groups: true
|
|
||||||
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
# | Meta lookup settings | #
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
|
|
||||||
# Defines how meta values should be selected.
|
|
||||||
#
|
|
||||||
# - Possible options:
|
|
||||||
# => inheritance Selects the meta value that was inherited first
|
|
||||||
# => highest-number Selects the highest numerical meta value
|
|
||||||
# => lowest-number Selects the lowest numerical meta value
|
|
||||||
meta-value-selection-default: inheritance
|
|
||||||
|
|
||||||
# Defines how meta values should be selected per key.
|
|
||||||
meta-value-selection:
|
|
||||||
# max-homes: highest-number
|
|
||||||
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
# | Inheritance settings | #
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
|
|
||||||
# If the plugin should apply wildcard permissions.
|
|
||||||
#
|
|
||||||
# - If set to true, LuckPerms will detect wildcard permissions, and resolve & apply all registered
|
|
||||||
# permissions matching the wildcard.
|
|
||||||
apply-wildcards: true
|
|
||||||
|
|
||||||
# If LuckPerms should resolve and apply permissions according to the Sponge style implicit wildcard
|
|
||||||
# inheritance system.
|
|
||||||
#
|
|
||||||
# - That being: If a user has been granted "example", then the player should have also be
|
|
||||||
# automatically granted "example.function", "example.another", "example.deeper.nesting",
|
|
||||||
# and so on.
|
|
||||||
apply-sponge-implicit-wildcards: false
|
|
||||||
|
|
||||||
# If the plugin should apply negated Bukkit default permissions before it considers wildcard
|
|
||||||
# assignments.
|
|
||||||
#
|
|
||||||
# - Plugin authors can define permissions which explicitly should not be given automatically to OPs.
|
|
||||||
# This is usually used for so called "anti-permissions" - permissions which, when granted, apply
|
|
||||||
# something negative.
|
|
||||||
# - If this option is set to true, LuckPerms will consider any negated declarations made by
|
|
||||||
# plugins before it considers wildcards. (similar to the way the OP system works)
|
|
||||||
# - If this option is set to false, LuckPerms will consider any wildcard assignments first.
|
|
||||||
apply-default-negated-permissions-before-wildcards: false
|
|
||||||
|
|
||||||
# If the plugin should parse regex permissions.
|
|
||||||
#
|
|
||||||
# - If set to true, LuckPerms will detect regex permissions, marked with "r=" at the start of the
|
|
||||||
# node, and resolve & apply all registered permissions matching the regex.
|
|
||||||
apply-regex: true
|
|
||||||
|
|
||||||
# If the plugin should complete and apply shorthand permissions.
|
|
||||||
#
|
|
||||||
# - If set to true, LuckPerms will detect and expand shorthand node patterns.
|
|
||||||
apply-shorthand: true
|
|
||||||
|
|
||||||
# If the plugin should apply Bukkit child permissions.
|
|
||||||
#
|
|
||||||
# - Plugin authors can define custom permissions structures for their plugin, which will be resolved
|
|
||||||
# and used by LuckPerms if this setting is enabled.
|
|
||||||
apply-bukkit-child-permissions: true
|
|
||||||
|
|
||||||
# If the plugin should apply Bukkit default permissions.
|
|
||||||
#
|
|
||||||
# - Plugin authors can define permissions which should be given to all users by default, or setup
|
|
||||||
# permissions which should/shouldn't be given to opped players.
|
|
||||||
# - If this option is set to false, LuckPerms will ignore these defaults.
|
|
||||||
apply-bukkit-default-permissions: true
|
|
||||||
|
|
||||||
# If the plugin should apply attachment permissions.
|
|
||||||
#
|
|
||||||
# - Other plugins on the server are able to add their own "permission attachments" to players.
|
|
||||||
# - This allows them to grant players additional permissions which last until the end of the
|
|
||||||
# session, or until they're removed.
|
|
||||||
# - If this option is set to false, LuckPerms will not include these attachment permissions when
|
|
||||||
# considering if a player should have access to a certain permission.
|
|
||||||
apply-bukkit-attachment-permissions: true
|
|
||||||
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
# | Extra settings | #
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
|
|
||||||
# A list of context calculators which will be skipped when calculating contexts.
|
|
||||||
#
|
|
||||||
# - You can disable context calculators by either:
|
|
||||||
# => specifying the Java class name used by the calculator (e.g. com.example.ExampleCalculator)
|
|
||||||
# => specifying a sub-section of the Java package used by the calculator (e.g. com.example)
|
|
||||||
disabled-context-calculators: []
|
|
||||||
|
|
||||||
# Allows you to set "aliases" for the worlds sent forward for context calculation.
|
|
||||||
#
|
|
||||||
# - These aliases are provided in addition to the real world name. Applied recursively.
|
|
||||||
# - Remove the comment characters for the default aliases to apply.
|
|
||||||
world-rewrite:
|
|
||||||
# world_nether: world
|
|
||||||
# world_the_end: world
|
|
||||||
|
|
||||||
# Define special group weights for this server.
|
|
||||||
#
|
|
||||||
# - Group weights can also be applied directly to group data, using the setweight command.
|
|
||||||
# - This section allows weights to be set on a per-server basis.
|
|
||||||
group-weight:
|
|
||||||
# admin: 10
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
# | | #
|
|
||||||
# | FINE TUNING OPTIONS | #
|
|
||||||
# | | #
|
|
||||||
# | A number of more niche settings for tweaking and changing behaviour. The section also | #
|
|
||||||
# | contains toggles for some more specialised features. It is only necessary to make changes to | #
|
|
||||||
# | these options if you want to fine-tune LuckPerms behaviour. | #
|
|
||||||
# | | #
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
# | Server Operator (OP) settings | #
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
|
|
||||||
# Controls whether server operators should exist at all.
|
|
||||||
#
|
|
||||||
# - When set to 'false', all players will be de-opped, and the /op and /deop commands will be
|
|
||||||
# disabled. Note that vanilla features like the spawn-protection require an operator on the
|
|
||||||
# server to work.
|
|
||||||
enable-ops: true
|
|
||||||
|
|
||||||
# Enables or disables a special permission based system in LuckPerms for controlling OP status.
|
|
||||||
#
|
|
||||||
# - If set to true, any user with the permission "luckperms.autoop" will automatically be granted
|
|
||||||
# server operator status. This permission can be inherited, or set on specific servers/worlds,
|
|
||||||
# temporarily, etc.
|
|
||||||
# - Additionally, setting this to true will force the "enable-ops" option above to false. All users
|
|
||||||
# will be de-opped unless they have the permission node, and the op/deop commands will be
|
|
||||||
# disabled.
|
|
||||||
# - It is recommended that you use this option instead of assigning a single '*' permission.
|
|
||||||
auto-op: false
|
|
||||||
|
|
||||||
# Defines if "opped" players should be able to use all LuckPerms commands by default.
|
|
||||||
#
|
|
||||||
# - Set to false to only allow users who have the permissions access to the commands
|
|
||||||
commands-allow-op: true
|
|
||||||
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
# | Vault integration settings | #
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
|
|
||||||
# If Vault lookups for offline players on the main server thread should be enabled.
|
|
||||||
#
|
|
||||||
# LuckPerms has a "catch" for plugins attempting to perform unsafe offline player data lookups
|
|
||||||
# from the main server thread. This catch raises an exception (causes an error to occur) when unsafe
|
|
||||||
# lookups are made, instead of allowing the lookup to happen, which would likely cause the server
|
|
||||||
# to lag.
|
|
||||||
#
|
|
||||||
# However, if you're willing to accept the consequences, the catch can be disabled by setting this
|
|
||||||
# option to 'true.
|
|
||||||
vault-unsafe-lookups: false
|
|
||||||
|
|
||||||
# If LuckPerms should use the 'display name' of a group when returning groups in Vault API calls.
|
|
||||||
#
|
|
||||||
# - When this option is set to true, the display name of the group is returned.
|
|
||||||
# - When this option is set to false, the standard name/id of the group is returned.
|
|
||||||
vault-group-use-displaynames: true
|
|
||||||
|
|
||||||
# Controls which group LuckPerms should use for NPC players when handling Vault requests.
|
|
||||||
#
|
|
||||||
# - As NPCs aren't actually real players, LuckPerms does not load any user data for them. This
|
|
||||||
# becomes an issue when plugins want to check for their permissions using Vault.
|
|
||||||
# - As a solution, Vault checks for NPCs fallback to a group, which is defined below.
|
|
||||||
vault-npc-group: default
|
|
||||||
|
|
||||||
# Controls how LuckPerms should consider the OP status of NPC players when handing Vault requests.
|
|
||||||
#
|
|
||||||
# - If you want NPCs to have the same permissions as "normal" players, set this option to false.
|
|
||||||
# - If you want NPCs to have OP status, set this option to true.
|
|
||||||
vault-npc-op-status: false
|
|
||||||
|
|
||||||
# If the vault-server option below should be used.
|
|
||||||
#
|
|
||||||
# - When this option is set to false, the server value defined above under "server" is used.
|
|
||||||
use-vault-server: false
|
|
||||||
|
|
||||||
# The name of the server used within Vault operations.
|
|
||||||
#
|
|
||||||
# - If you don't want Vault operations to be server specific, set this to "global".
|
|
||||||
# - Will only take effect if use-vault-server is set to true above.
|
|
||||||
vault-server: global
|
|
||||||
|
|
||||||
# If global permissions should be considered when retrieving meta or player groups
|
|
||||||
vault-include-global: true
|
|
||||||
|
|
||||||
# If Vault operations should ignore any world arguments if supplied.
|
|
||||||
vault-ignore-world: false
|
|
||||||
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
# | Miscellaneous (and rarely used) settings | #
|
|
||||||
# +----------------------------------------------------------------------------------------------+ #
|
|
||||||
|
|
||||||
# If LuckPerms should produce extra logging output when it handles logins.
|
|
||||||
#
|
|
||||||
# - Useful if you're having issues with UUID forwarding or data not being loaded.
|
|
||||||
debug-logins: false
|
|
||||||
|
|
||||||
# If LuckPerms should allow usernames with non alphanumeric characters.
|
|
||||||
#
|
|
||||||
# - Note that due to the design of the storage implementation, usernames must still be 16 characters
|
|
||||||
# or less.
|
|
||||||
allow-invalid-usernames: false
|
|
||||||
|
|
||||||
# If LuckPerms should not require users to confirm bulkupdate operations.
|
|
||||||
#
|
|
||||||
# - When set to true, operations will be executed immediately.
|
|
||||||
# - This is not recommended, as bulkupdate has the potential to irreversibly delete large amounts of
|
|
||||||
# data, and is not designed to be executed automatically.
|
|
||||||
# - If automation is needed, users should prefer using the LuckPerms API.
|
|
||||||
skip-bulkupdate-confirmation: false
|
|
||||||
|
|
||||||
# If LuckPerms should prevent bulkupdate operations.
|
|
||||||
#
|
|
||||||
# - When set to true, bulkupdate operations (the /lp bulkupdate command) will not work.
|
|
||||||
# - When set to false, bulkupdate operations will be allowed via the console.
|
|
||||||
disable-bulkupdate: false
|
|
||||||
|
|
||||||
# If LuckPerms should allow a users primary group to be removed with the 'parent remove' command.
|
|
||||||
#
|
|
||||||
# - When this happens, the plugin will set their primary group back to default.
|
|
||||||
prevent-primary-group-removal: false
|
|
||||||
|
|
||||||
# If LuckPerms should update the list of commands sent to the client when permissions are changed.
|
|
||||||
update-client-command-list: true
|
|
||||||
|
|
||||||
# If LuckPerms should attempt to register "Brigadier" command list data for its commands.
|
|
||||||
register-command-list-data: true
|
|
||||||
|
|
||||||
# If LuckPerms should attempt to resolve Vanilla command target selectors for LP commands.
|
|
||||||
# See here for more info: https://minecraft.wiki/w/Target_selectors
|
|
||||||
resolve-command-selectors: false
|
|
||||||
|
|
||||||
# If the plugin should run in "read-only" mode for commands.
|
|
||||||
#
|
|
||||||
# In this mode, players or the console will only be able to execute commands that read or view
|
|
||||||
# data, and will not be able to execute any LP commands that modify data.
|
|
||||||
#
|
|
||||||
# If enabling read-only mode for just players, be aware that some other plugins may allow players
|
|
||||||
# to execute commands as the console, allowing them to run LP commands indirectly.
|
|
||||||
#
|
|
||||||
# Note: This does not affect interactions with LuckPerms via the API.
|
|
||||||
commands-read-only-mode:
|
|
||||||
players: false
|
|
||||||
console: false
|
|
||||||
|
|
||||||
# If LuckPerms commands should be disabled. When true, this will prevent all LP commands from being
|
|
||||||
# executed. In a sense this is a more extreme version of read-only mode (see above).
|
|
||||||
#
|
|
||||||
# LuckPerms will still act as the permission manager, but server administrators will be unable to
|
|
||||||
# make changes via commands.
|
|
||||||
#
|
|
||||||
# If disabling commands just for players, be aware that some other plugins may allow players to
|
|
||||||
# execute commands as the console, allowing them to run commands indirectly.
|
|
||||||
#
|
|
||||||
# If commands are disabled for both players and the console, LuckPerms will not attempt to register
|
|
||||||
# a command with the server at all & in a sense will be invisible to both players and admins.
|
|
||||||
#
|
|
||||||
# Note: This does not affect interactions with LuckPerms via the API.
|
|
||||||
disable-luckperms-commands:
|
|
||||||
players: false
|
|
||||||
console: false
|
|
||||||
@@ -18,7 +18,6 @@ services:
|
|||||||
# CF_FILENAME_MATCHER: "1.17"
|
# CF_FILENAME_MATCHER: "1.17"
|
||||||
MEMORY: 4G
|
MEMORY: 4G
|
||||||
CF_OVERRIDES_EXCLUSIONS: |
|
CF_OVERRIDES_EXCLUSIONS: |
|
||||||
# Not applicable for server side
|
|
||||||
shaderpacks/**
|
shaderpacks/**
|
||||||
volumes:
|
volumes:
|
||||||
# Use managed volume by default, but can change to a relative path like
|
# Use managed volume by default, but can change to a relative path like
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ services:
|
|||||||
EULA: true
|
EULA: true
|
||||||
ALLOW_FLIGHT: true
|
ALLOW_FLIGHT: true
|
||||||
MOD_PLATFORM: AUTO_CURSEFORGE
|
MOD_PLATFORM: AUTO_CURSEFORGE
|
||||||
CF_API_KEY: ${CF_API_KEY}
|
|
||||||
CF_SLUG: craftoria
|
CF_SLUG: craftoria
|
||||||
MOTD: |
|
MOTD: |
|
||||||
A %TYPE% server on %VERSION%
|
A %TYPE% server on %VERSION%
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ services:
|
|||||||
# Optional: select a specific version/file
|
# Optional: select a specific version/file
|
||||||
#CF_FILENAME_MATCHER: "0.2.34"
|
#CF_FILENAME_MATCHER: "0.2.34"
|
||||||
CF_EXCLUDE_MODS: |
|
CF_EXCLUDE_MODS: |
|
||||||
# Exclude client-side mods not published correctly
|
|
||||||
creative-core
|
creative-core
|
||||||
default-options
|
default-options
|
||||||
itemphysic-lite
|
itemphysic-lite
|
||||||
@@ -26,7 +25,6 @@ services:
|
|||||||
MEMORY: 4G
|
MEMORY: 4G
|
||||||
volumes:
|
volumes:
|
||||||
- mc-data:/data
|
- mc-data:/data
|
||||||
- C:\Users\geoff\git\mc-image-helper\build\install\mc-image-helper:/usr/share/mc-image-helper:ro
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
mc-data: {}
|
mc-data: {}
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
services:
|
|
||||||
mc:
|
|
||||||
image: itzg/minecraft-server
|
|
||||||
environment:
|
|
||||||
EULA: "TRUE"
|
|
||||||
TYPE: PAPER
|
|
||||||
DEBUG: true
|
|
||||||
PLUGINS: |
|
|
||||||
https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/spigot
|
|
||||||
https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/spigot
|
|
||||||
https://hangarcdn.papermc.io/plugins/BentoboxWorld/bentobox/versions/3.7.4/PAPER/BentoBox-3.7.4.jar
|
|
||||||
DOWNLOAD_EXTRA_CONFIGS: |
|
|
||||||
# Even though it's a jar can be treated just like any other file
|
|
||||||
plugins/BentoBox/addons<https://github.com/BentoBoxWorld/AOneBlock/releases/download/1.20.0/AOneBlock-1.20.0.jar
|
|
||||||
ports:
|
|
||||||
- "25565:25565"
|
|
||||||
- "25565:25565/udp"
|
|
||||||
- "19132:19132/udp"
|
|
||||||
volumes:
|
|
||||||
- data:/data
|
|
||||||
volumes:
|
|
||||||
data:
|
|
||||||
@@ -11,9 +11,8 @@ services:
|
|||||||
CF_API_KEY: ${CF_API_KEY}
|
CF_API_KEY: ${CF_API_KEY}
|
||||||
VERSION: 1.19.2
|
VERSION: 1.19.2
|
||||||
CURSEFORGE_FILES: |
|
CURSEFORGE_FILES: |
|
||||||
geckolib # some comment
|
geckolib
|
||||||
# Removing temporarily
|
aquaculture
|
||||||
#aquaculture
|
|
||||||
naturalist
|
naturalist
|
||||||
ports:
|
ports:
|
||||||
- "25565:25565"
|
- "25565:25565"
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
mc:
|
mc:
|
||||||
# make sure this java version matches with pack java version
|
# make sure this java version matches with pack java version
|
||||||
image: itzg/minecraft-server:java25
|
image: itzg/minecraft-server:java21
|
||||||
tty: true
|
tty: true
|
||||||
stdin_open: true
|
stdin_open: true
|
||||||
ports:
|
ports:
|
||||||
@@ -9,26 +9,15 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
EULA: "TRUE"
|
EULA: "TRUE"
|
||||||
TYPE: CUSTOM
|
TYPE: CUSTOM
|
||||||
GENERIC_PACKS: GT_New_Horizons_2.8.0_Server_Java_17-25
|
GENERIC_PACKS: GT_New_Horizons_2.7.2_Server_Java_17-21
|
||||||
GENERIC_PACKS_SUFFIX: .zip
|
GENERIC_PACKS_SUFFIX: .zip
|
||||||
GENERIC_PACKS_PREFIX: https://downloads.gtnewhorizons.com/ServerPacks/
|
GENERIC_PACKS_PREFIX: https://downloads.gtnewhorizons.com/ServerPacks/
|
||||||
# if this isn't true, then the container tries to download the modpack every run
|
# if this isn't true, then the container tries to download the modpack every run
|
||||||
SKIP_GENERIC_PACK_UPDATE_CHECK: "true"
|
SKIP_GENERIC_PACK_UPDATE_CHECK: "true"
|
||||||
MEMORY: 6G
|
MEMORY: 6G
|
||||||
# Make sure that this matches what is in your pack's startserver bash file
|
# Make sure that this matches what is in your pack's startserver bash file
|
||||||
JVM_OPTS: "-Dfml.readTimeout=180 @java9args.txt"
|
JVM_OPTS: -Dfml.readTimeout=180 @java9args.txt
|
||||||
# You may choose to instead download a specific jar version yourself, and change this value to the local jar.
|
CUSTOM_JAR_EXEC: -jar lwjgl3ify-forgePatches.jar nogui
|
||||||
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/configuration/misc-options/#running-with-a-custom-server-jar
|
|
||||||
CUSTOM_SERVER: "https://github.com/GTNewHorizons/lwjgl3ify/releases/download/2.1.16/lwjgl3ify-2.1.16-forgePatches.jar"
|
|
||||||
# Set server.properties according to GTNH server defaults
|
|
||||||
MOTD: "GT:New Horizons 2.8.0"
|
|
||||||
DIFFICULTY: "hard"
|
|
||||||
ENABLE_COMMAND_BLOCK: "true"
|
|
||||||
SPAWN_PROTECTION: 1
|
|
||||||
VIEW_DISTANCE: 8
|
|
||||||
MODE: 0
|
|
||||||
LEVEL_TYPE: "rwg"
|
|
||||||
ALLOW_FLIGHT: "TRUE"
|
|
||||||
volumes:
|
volumes:
|
||||||
# attach a managed volume, change to a relative or absolute host directory if needed
|
# attach a managed volume, change to a relative or absolute host directory if needed
|
||||||
- mc-data:/data
|
- mc-data:/data
|
||||||
|
|||||||
@@ -8,14 +8,14 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
EULA: "TRUE"
|
EULA: "TRUE"
|
||||||
MODPACK_PLATFORM: MODRINTH
|
MODPACK_PLATFORM: MODRINTH
|
||||||
MODRINTH_MODPACK: https://modrinth.com/modpack/cobblemon-fabric/version/1.6.1.4
|
MODRINTH_MODPACK: https://modrinth.com/modpack/cobblemon-fabric/version/1.3.2
|
||||||
# or for auto-upgrading to latest
|
# or for auto-upgrading to latest
|
||||||
# MODRINTH_MODPACK: https://modrinth.com/modpack/cobblemon-fabric
|
# MODRINTH_MODPACK: https://modrinth.com/modpack/cobblemon-fabric
|
||||||
# or just cobblemon-fabric or 5FFgwNNP
|
# or just cobblemon-fabric or 5FFgwNNP
|
||||||
# and could replace version URL with
|
# and could replace version URL with
|
||||||
# MODRINTH_VERSION: 98odLiu9
|
# MODRINTH_VERSION: nvrqJg44
|
||||||
# MODRINTH_VERSION: 1.6.1.4
|
# MODRINTH_VERSION: 1.3.2
|
||||||
# MODRINTH_VERSION: "Cobblemon [Fabric] 1.6.1.4"
|
# MODRINTH_VERSION: "Cobblemon [Fabric] 1.3.2"
|
||||||
volumes:
|
volumes:
|
||||||
# attach the relative directory 'data' to the container's /data path
|
# attach the relative directory 'data' to the container's /data path
|
||||||
- ./data:/data
|
- ./data:/data
|
||||||
|
|||||||
@@ -6,6 +6,6 @@ services:
|
|||||||
TYPE: PAPER
|
TYPE: PAPER
|
||||||
VERSION: 1.19.3
|
VERSION: 1.19.3
|
||||||
MODRINTH_PROJECTS: "coreprotect"
|
MODRINTH_PROJECTS: "coreprotect"
|
||||||
MODRINTH_PROJECTS_DEFAULT_VERSION_TYPE: "release"
|
MODRINTH_ALLOWED_VERSION_TYPE: "release"
|
||||||
volumes:
|
volumes:
|
||||||
- ./data:/data
|
- ./data:/data
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ services:
|
|||||||
EULA: "TRUE"
|
EULA: "TRUE"
|
||||||
TYPE: MOHIST
|
TYPE: MOHIST
|
||||||
VERSION: 1.12.2
|
VERSION: 1.12.2
|
||||||
MOHIST_BUILD: 347
|
DEBUG: "true"
|
||||||
volumes:
|
volumes:
|
||||||
- data:/data
|
- data:/data
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
. "$(dirname "$0")/autopause-fcns.sh"
|
. /auto/autopause-fcns.sh
|
||||||
|
|
||||||
# shellcheck source=../start-utils
|
# shellcheck source=../../scripts/start-utils
|
||||||
. "$(dirname "$0")/../start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
if isTrue "${DEBUG_AUTOPAUSE}"; then
|
if isTrue "${DEBUG_AUTOPAUSE}"; then
|
||||||
set -x
|
set -x
|
||||||
fi
|
fi
|
||||||
@@ -84,7 +84,7 @@ do
|
|||||||
else
|
else
|
||||||
if [[ $(current_uptime) -ge $TIME_THRESH ]] ; then
|
if [[ $(current_uptime) -ge $TIME_THRESH ]] ; then
|
||||||
logAutopause "No client connected since startup / knocked - pausing"
|
logAutopause "No client connected since startup / knocked - pausing"
|
||||||
"$(dirname "$0")/pause.sh"
|
/auto/pause.sh
|
||||||
STATE=S
|
STATE=S
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -109,7 +109,7 @@ do
|
|||||||
else
|
else
|
||||||
if [[ $(current_uptime) -ge $TIME_THRESH ]] ; then
|
if [[ $(current_uptime) -ge $TIME_THRESH ]] ; then
|
||||||
logAutopause "No client reconnected - pausing"
|
logAutopause "No client reconnected - pausing"
|
||||||
"$(dirname "$0")/pause.sh"
|
/auto/pause.sh
|
||||||
STATE=S
|
STATE=S
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -117,7 +117,7 @@ do
|
|||||||
XS)
|
XS)
|
||||||
# Stopped
|
# Stopped
|
||||||
if rcon_client_exists ; then
|
if rcon_client_exists ; then
|
||||||
"$(dirname "$0")/resume.sh"
|
/auto/resume.sh
|
||||||
fi
|
fi
|
||||||
if java_running ; then
|
if java_running ; then
|
||||||
if java_clients_connected ; then
|
if java_clients_connected ; then
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# shellcheck source=../scripts/start-utils
|
# shellcheck source=../scripts/start-utils
|
||||||
. "$(dirname "$0")/../start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
current_uptime() {
|
current_uptime() {
|
||||||
awk '{print $1}' /proc/uptime | cut -d . -f 1
|
awk '{print $1}' /proc/uptime | cut -d . -f 1
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# needed for the clients connected function residing in autopause
|
# needed for the clients connected function residing in autopause
|
||||||
. "$(dirname "$0")/autopause-fcns.sh"
|
. /auto/autopause-fcns.sh
|
||||||
|
|
||||||
# shellcheck source=../../scripts/start-utils
|
# shellcheck source=../../scripts/start-utils
|
||||||
. "$(dirname "$0")/../start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
if isTrue "${DEBUG_AUTOSTOP}"; then
|
if isTrue "${DEBUG_AUTOSTOP}"; then
|
||||||
set -x
|
set -x
|
||||||
fi
|
fi
|
||||||
@@ -49,7 +49,7 @@ do
|
|||||||
else
|
else
|
||||||
if [[ $(current_uptime) -ge $TIME_THRESH ]] ; then
|
if [[ $(current_uptime) -ge $TIME_THRESH ]] ; then
|
||||||
logAutostop "No client connected since startup - stopping server"
|
logAutostop "No client connected since startup - stopping server"
|
||||||
"$(dirname "$0")"/stop.sh
|
/auto/stop.sh
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -74,7 +74,7 @@ do
|
|||||||
else
|
else
|
||||||
if [[ $(current_uptime) -ge $TIME_THRESH ]] ; then
|
if [[ $(current_uptime) -ge $TIME_THRESH ]] ; then
|
||||||
logAutostop "No client reconnected - stopping"
|
logAutostop "No client reconnected - stopping"
|
||||||
"$(dirname "$0")"/stop.sh
|
/auto/stop.sh
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -3,14 +3,14 @@
|
|||||||
[unpauseMCServer-server]
|
[unpauseMCServer-server]
|
||||||
sequence = 25565
|
sequence = 25565
|
||||||
seq_timeout = 1
|
seq_timeout = 1
|
||||||
command = /image/scripts/auto/resume.sh %IP%
|
command = /auto/resume.sh %IP%
|
||||||
tcpflags = syn
|
tcpflags = syn
|
||||||
[unpauseMCServer-rcon]
|
[unpauseMCServer-rcon]
|
||||||
sequence = 25575
|
sequence = 25575
|
||||||
seq_timeout = 1
|
seq_timeout = 1
|
||||||
command = /image/scripts/auto/resume.sh %IP%
|
command = /auto/resume.sh %IP%
|
||||||
tcpflags = syn
|
tcpflags = syn
|
||||||
[unpauseMCServer-bedrock]
|
[unpauseMCServer-bedrock]
|
||||||
sequence = 19132:udp
|
sequence = 19132:udp
|
||||||
command = /image/scripts/auto/resume.sh %IP%
|
command = /auto/resume.sh %IP%
|
||||||
seq_cooldown = 60
|
seq_cooldown = 60
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
. "$(dirname "$0")/../start-utils"
|
. /start-utils
|
||||||
if isTrue "${DEBUG_AUTOPAUSE}"; then
|
if isTrue "${DEBUG_AUTOPAUSE}"; then
|
||||||
set -x
|
set -x
|
||||||
fi
|
fi
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
. "$(dirname "$0")/../start-utils"
|
. /start-utils
|
||||||
if isTrue "${DEBUG_AUTOPAUSE}"; then
|
if isTrue "${DEBUG_AUTOPAUSE}"; then
|
||||||
set -x
|
set -x
|
||||||
fi
|
fi
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
. "$(dirname "$0")/../start-utils"
|
. /start-utils
|
||||||
if isTrue "${DEBUG_AUTOSTOP}"; then
|
if isTrue "${DEBUG_AUTOSTOP}"; then
|
||||||
set -x
|
set -x
|
||||||
fi
|
fi
|
||||||
@@ -27,8 +27,6 @@
|
|||||||
"cherished-worlds",
|
"cherished-worlds",
|
||||||
"chunk-animator",
|
"chunk-animator",
|
||||||
"clickable-advancements",
|
"clickable-advancements",
|
||||||
"colorwheel",
|
|
||||||
"colorwheel-patcher",
|
|
||||||
"compass-coords",
|
"compass-coords",
|
||||||
"config-menus-forge",
|
"config-menus-forge",
|
||||||
"configured",
|
"configured",
|
||||||
@@ -110,14 +108,12 @@
|
|||||||
"no-recipe-book",
|
"no-recipe-book",
|
||||||
"not-enough-animations",
|
"not-enough-animations",
|
||||||
"oculus",
|
"oculus",
|
||||||
"ok-zoomer",
|
|
||||||
"oldjavawarning",
|
"oldjavawarning",
|
||||||
"overloaded-armor-bar",
|
"overloaded-armor-bar",
|
||||||
"packmenu",
|
"packmenu",
|
||||||
"packmodemenu",
|
"packmodemenu",
|
||||||
"particle-effects",
|
"particle-effects",
|
||||||
"particle-effects-reforged",
|
"particle-effects-reforged",
|
||||||
"particle-rain",
|
|
||||||
"particular",
|
"particular",
|
||||||
"particular-reforged",
|
"particular-reforged",
|
||||||
"reauth",
|
"reauth",
|
||||||
@@ -179,17 +175,6 @@
|
|||||||
"create-arcane-engineering": {
|
"create-arcane-engineering": {
|
||||||
"forceIncludes": ["just-enough-resources-jer"]
|
"forceIncludes": ["just-enough-resources-jer"]
|
||||||
},
|
},
|
||||||
"mc-eternal-2": {
|
|
||||||
"forceIncludes": [
|
|
||||||
"particular-reforged",
|
|
||||||
"mob-player-animator"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"reclamation-reclaim-the-world": {
|
|
||||||
"forceIncludes": [
|
|
||||||
"more-overlays-updated"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"skyfactory-5": {
|
"skyfactory-5": {
|
||||||
"forceIncludes": [
|
"forceIncludes": [
|
||||||
"colored-torches",
|
"colored-torches",
|
||||||
|
|||||||
@@ -26,7 +26,6 @@
|
|||||||
"clickadv",
|
"clickadv",
|
||||||
"cobblemon-ui-tweaks",
|
"cobblemon-ui-tweaks",
|
||||||
"compass-coords",
|
"compass-coords",
|
||||||
"colorwheel",
|
|
||||||
"connectedness",
|
"connectedness",
|
||||||
"connector",
|
"connector",
|
||||||
"continuity",
|
"continuity",
|
||||||
@@ -75,9 +74,7 @@
|
|||||||
"nicer-skies",
|
"nicer-skies",
|
||||||
"notenoughanimations",
|
"notenoughanimations",
|
||||||
"oculus",
|
"oculus",
|
||||||
"ok_zoomer",
|
|
||||||
"OverflowingBars",
|
"OverflowingBars",
|
||||||
"particlerain",
|
|
||||||
"PickUpNotifier",
|
"PickUpNotifier",
|
||||||
"PresenceFootsteps",
|
"PresenceFootsteps",
|
||||||
"Prism",
|
"Prism",
|
||||||
|
|||||||
@@ -28,14 +28,6 @@
|
|||||||
"level-seed": {"env": "SEED"},
|
"level-seed": {"env": "SEED"},
|
||||||
"level-type": {"env": "LEVEL_TYPE"},
|
"level-type": {"env": "LEVEL_TYPE"},
|
||||||
"log-ips": {"env": "LOG_IPS"},
|
"log-ips": {"env": "LOG_IPS"},
|
||||||
"management-server-allowed-origins": {"env": "MANAGEMENT_SERVER_ALLOWED_ORIGINS"},
|
|
||||||
"management-server-enabled": {"env": "MANAGEMENT_SERVER_ENABLED"},
|
|
||||||
"management-server-host": {"env": "MANAGEMENT_SERVER_HOST"},
|
|
||||||
"management-server-port": {"env": "MANAGEMENT_SERVER_PORT"},
|
|
||||||
"management-server-secret": {"env": "MANAGEMENT_SERVER_SECRET"},
|
|
||||||
"management-server-tls-enabled": {"env": "MANAGEMENT_SERVER_TLS_ENABLED"},
|
|
||||||
"management-server-tls-keystore": {"env": "MANAGEMENT_SERVER_TLS_KEYSTORE"},
|
|
||||||
"management-server-tls-keystore-password": {"env": "MANAGEMENT_SERVER_TLS_KEYSTORE_PASSWORD"},
|
|
||||||
"max-build-height": {"env": "MAX_BUILD_HEIGHT"},
|
"max-build-height": {"env": "MAX_BUILD_HEIGHT"},
|
||||||
"max-chained-neighbor-updates": {"env": "MAX_CHAINED_NEIGHBOR_UPDATES"},
|
"max-chained-neighbor-updates": {"env": "MAX_CHAINED_NEIGHBOR_UPDATES"},
|
||||||
"max-players": {"env": "MAX_PLAYERS"},
|
"max-players": {"env": "MAX_PLAYERS"},
|
||||||
@@ -69,7 +61,6 @@
|
|||||||
"spawn-monsters": {"env": "SPAWN_MONSTERS"},
|
"spawn-monsters": {"env": "SPAWN_MONSTERS"},
|
||||||
"spawn-npcs": {"env": "SPAWN_NPCS"},
|
"spawn-npcs": {"env": "SPAWN_NPCS"},
|
||||||
"spawn-protection": {"env": "SPAWN_PROTECTION"},
|
"spawn-protection": {"env": "SPAWN_PROTECTION"},
|
||||||
"status-heartbeat-interval": {"env": "STATUS_HEARTBEAT_INTERVAL"},
|
|
||||||
"sync-chunk-writes": {"env": "SYNC_CHUNK_WRITES"},
|
"sync-chunk-writes": {"env": "SYNC_CHUNK_WRITES"},
|
||||||
"use-native-transport": {"env": "USE_NATIVE_TRANSPORT"},
|
"use-native-transport": {"env": "USE_NATIVE_TRANSPORT"},
|
||||||
"view-distance": {"env": "VIEW_DISTANCE"},
|
"view-distance": {"env": "VIEW_DISTANCE"},
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
. "/image/scripts/start-utils"
|
# shellcheck source=../scripts/start-utils
|
||||||
|
. "${SCRIPTS:-/}start-utils"
|
||||||
if [ -f /data/.mc-health.env ]; then
|
if [ -f /data/.mc-health.env ]; then
|
||||||
. /data/.mc-health.env
|
. /data/.mc-health.env
|
||||||
fi
|
fi
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
. "/image/scripts/start-utils"
|
. "/start-utils"
|
||||||
: "${CONSOLE_IN_NAMED_PIPE:=/tmp/minecraft-console-in}"
|
: "${CONSOLE_IN_NAMED_PIPE:=/tmp/minecraft-console-in}"
|
||||||
|
|
||||||
if isFalse "${CREATE_CONSOLE_IN_PIPE:-false}"; then
|
if isFalse "${CREATE_CONSOLE_IN_PIPE:-false}"; then
|
||||||
@@ -9,10 +9,10 @@
|
|||||||
|
|
||||||
# needed for the clients connected function residing in autopause
|
# needed for the clients connected function residing in autopause
|
||||||
# shellcheck source=../auto/autopause-fcns.sh
|
# shellcheck source=../auto/autopause-fcns.sh
|
||||||
. /image/scripts/auto/autopause-fcns.sh
|
. /auto/autopause-fcns.sh
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. /image/scripts/start-utils
|
. ${SCRIPTS:-/}start-utils
|
||||||
|
|
||||||
run_command(){
|
run_command(){
|
||||||
rcon_cmd="$1"
|
rcon_cmd="$1"
|
||||||
+4
-20
@@ -17,35 +17,19 @@
|
|||||||
"architectures": ["amd64", "arm64"],
|
"architectures": ["amd64", "arm64"],
|
||||||
"lts": true
|
"lts": true
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"tag": "java25",
|
|
||||||
"java": "25",
|
|
||||||
"distribution": "ubuntu",
|
|
||||||
"jvm": "hotspot",
|
|
||||||
"architectures": ["amd64", "arm64"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tag": "java25-graalvm",
|
|
||||||
"java": "25",
|
|
||||||
"distribution": "oracle",
|
|
||||||
"jvm": "graalvm",
|
|
||||||
"architectures": ["amd64", "arm64"]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"tag": "java24",
|
"tag": "java24",
|
||||||
"java": "24",
|
"java": "24",
|
||||||
"distribution": "ubuntu",
|
"distribution": "ubuntu",
|
||||||
"jvm": "hotspot",
|
"jvm": "hotspot",
|
||||||
"architectures": ["amd64", "arm64"],
|
"architectures": ["amd64", "arm64"]
|
||||||
"deprecated": true
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"tag": "java24-graalvm",
|
"tag": "java24-graalvm",
|
||||||
"java": "24",
|
"java": "24",
|
||||||
"distribution": "oracle",
|
"distribution": "oracle",
|
||||||
"jvm": "graalvm",
|
"jvm": "graalvm",
|
||||||
"architectures": ["amd64", "arm64"],
|
"architectures": ["amd64", "arm64"]
|
||||||
"deprecated": true
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"tag": "java21",
|
"tag": "java21",
|
||||||
@@ -67,7 +51,7 @@
|
|||||||
"java": "21",
|
"java": "21",
|
||||||
"distribution": "oracle",
|
"distribution": "oracle",
|
||||||
"jvm": "graalvm",
|
"jvm": "graalvm",
|
||||||
"architectures": ["amd64", "arm64"]
|
"architectures": ["amd64", "arm64"],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"tag": "java21-jdk",
|
"tag": "java21-jdk",
|
||||||
@@ -82,7 +66,7 @@
|
|||||||
"java": "21",
|
"java": "21",
|
||||||
"distribution": "oracle",
|
"distribution": "oracle",
|
||||||
"jvm": "graalvm",
|
"jvm": "graalvm",
|
||||||
"architectures": ["amd64", "arm64"]
|
"architectures": ["amd64", "arm64"],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"tag": "java17",
|
"tag": "java17",
|
||||||
|
|||||||
+3
-3
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
|
|
||||||
# The Dockerfile ENVs take precedence here, but defaulting for testing consistency
|
# The Dockerfile ENVs take precedence here, but defaulting for testing consistency
|
||||||
: "${UID:=1000}"
|
: "${UID:=1000}"
|
||||||
@@ -48,7 +48,7 @@ if ! isTrue "${SKIP_SUDO:-false}" && [ "$(id -u)" = 0 ]; then
|
|||||||
echo 'hosts: files dns' > /etc/nsswitch.conf
|
echo 'hosts: files dns' > /etc/nsswitch.conf
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec gosu ${runAsUser}:${runAsGroup} "$(dirname "$0")/start-configuration" "$@"
|
exec $(getSudoFromDistro) ${runAsUser}:${runAsGroup} "${SCRIPTS:-/}start-configuration" "$@"
|
||||||
else
|
else
|
||||||
exec "$(dirname "$0")/start-configuration" "$@"
|
exec "${SCRIPTS:-/}start-configuration" "$@"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
|
|
||||||
: "${SERVER_PORT:=25565}"
|
: "${SERVER_PORT:=25565}"
|
||||||
: "${ENABLE_AUTOPAUSE:=false}"
|
: "${ENABLE_AUTOPAUSE:=false}"
|
||||||
@@ -24,7 +24,7 @@ log "Autopause functionality enabled"
|
|||||||
|
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
|
|
||||||
cp /image/knockd-config.cfg /tmp/knockd-config.cfg
|
cp /auto/knockd-config.cfg /tmp/knockd-config.cfg
|
||||||
|
|
||||||
function updatePort() {
|
function updatePort() {
|
||||||
regseq="^\s*sequence\s*=\s*$1\s*$"
|
regseq="^\s*sequence\s*=\s*$1\s*$"
|
||||||
@@ -69,4 +69,4 @@ fi
|
|||||||
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/" /tmp/knockd-config.cfg
|
||||||
|
|
||||||
"$(dirname "$0")/auto/autopause-daemon.sh" &
|
/auto/autopause-daemon.sh &
|
||||||
|
|||||||
@@ -1,14 +1,16 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
|
|
||||||
: "${SERVER_PORT:=25565}"
|
: "${SERVER_PORT:=25565}"
|
||||||
|
: "${ENABLE_AUTOSTOP:=false}"
|
||||||
: "${AUTOSTOP_TIMEOUT_EST:=3600}"
|
: "${AUTOSTOP_TIMEOUT_EST:=3600}"
|
||||||
: "${AUTOSTOP_TIMEOUT_INIT:=1800}"
|
: "${AUTOSTOP_TIMEOUT_INIT:=1800}"
|
||||||
: "${AUTOSTOP_PERIOD:=10}"
|
: "${AUTOSTOP_PERIOD:=10}"
|
||||||
: "${DEBUG_AUTOSTOP:=false}"
|
: "${DEBUG_AUTOSTOP:=false}"
|
||||||
export SERVER_PORT
|
export SERVER_PORT
|
||||||
|
export ENABLE_AUTOSTOP
|
||||||
export AUTOSTOP_TIMEOUT_EST
|
export AUTOSTOP_TIMEOUT_EST
|
||||||
export AUTOSTOP_TIMEOUT_INIT
|
export AUTOSTOP_TIMEOUT_INIT
|
||||||
export AUTOSTOP_PERIOD
|
export AUTOSTOP_PERIOD
|
||||||
@@ -23,4 +25,4 @@ checkIfNotZeroElseSetToDefault "AUTOSTOP_PERIOD" 10
|
|||||||
isNumericElseSetToDefault "AUTOSTOP_TIMEOUT_EST" 3600
|
isNumericElseSetToDefault "AUTOSTOP_TIMEOUT_EST" 3600
|
||||||
isNumericElseSetToDefault "AUTOSTOP_TIMEOUT_INIT" 1800
|
isNumericElseSetToDefault "AUTOSTOP_TIMEOUT_INIT" 1800
|
||||||
|
|
||||||
"$(dirname "$0")/auto/autostop-daemon.sh" &
|
/auto/autostop-daemon.sh &
|
||||||
|
|||||||
+36
-34
@@ -3,7 +3,7 @@ set -euo pipefail
|
|||||||
IFS=$'\n\t'
|
IFS=$'\n\t'
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
|
|
||||||
: "${EULA:=}"
|
: "${EULA:=}"
|
||||||
: "${PROXY:=}"
|
: "${PROXY:=}"
|
||||||
@@ -50,7 +50,7 @@ fi
|
|||||||
|
|
||||||
if isTrue "${DEBUG_MEMORY:-false}"; then
|
if isTrue "${DEBUG_MEMORY:-false}"; then
|
||||||
log "Memory usage and availability (in MB)"
|
log "Memory usage and availability (in MB)"
|
||||||
uname -pars
|
uname -parts
|
||||||
free -m
|
free -m
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -166,9 +166,11 @@ if isTrue "${VERSION_FROM_MODRINTH_PROJECTS:-}" && [[ ${MODRINTH_PROJECTS:-} ]];
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if isTrue "${ENABLE_AUTOPAUSE}"; then
|
if isTrue "${ENABLE_AUTOPAUSE}"; then
|
||||||
"$(dirname "$0")/start-autopause"
|
"${SCRIPTS:-/}start-autopause"
|
||||||
elif isTrue "${ENABLE_AUTOSTOP}"; then
|
fi
|
||||||
"$(dirname "$0")/start-autostop"
|
|
||||||
|
if isTrue "${ENABLE_AUTOSTOP}"; then
|
||||||
|
"${SCRIPTS:-/}start-autostop"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if
|
if
|
||||||
@@ -180,7 +182,7 @@ if
|
|||||||
then
|
then
|
||||||
log "Starting RCON commands"
|
log "Starting RCON commands"
|
||||||
# shellcheck source=start-rconcmds
|
# shellcheck source=start-rconcmds
|
||||||
"$(dirname "$0")/start-rconcmds"
|
"${SCRIPTS:-/}start-rconcmds"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
: "${MODPACK_PLATFORM:=${MOD_PLATFORM:-}}"
|
: "${MODPACK_PLATFORM:=${MOD_PLATFORM:-}}"
|
||||||
@@ -198,19 +200,19 @@ esac
|
|||||||
if [[ $MODPACK_PLATFORM ]]; then
|
if [[ $MODPACK_PLATFORM ]]; then
|
||||||
case "${MODPACK_PLATFORM^^}" in
|
case "${MODPACK_PLATFORM^^}" in
|
||||||
FTB|CURSEFORGE)
|
FTB|CURSEFORGE)
|
||||||
exec "$(dirname "$0")/start-deployCF" "$@"
|
exec "${SCRIPTS:-/}start-deployCF" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
FTBA)
|
FTBA)
|
||||||
exec "$(dirname "$0")/start-deployFTBA" "$@"
|
exec "${SCRIPTS:-/}start-deployFTBA" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
AUTO_CURSEFORGE)
|
AUTO_CURSEFORGE)
|
||||||
exec "$(dirname "$0")/start-deployAutoCF" "$@"
|
exec "${SCRIPTS:-/}start-deployAutoCF" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
MODRINTH)
|
MODRINTH)
|
||||||
exec "$(dirname "$0")/start-deployModrinth" "$@"
|
exec "${SCRIPTS:-/}start-deployModrinth" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
@@ -223,99 +225,99 @@ fi
|
|||||||
log "Resolving type given ${TYPE}"
|
log "Resolving type given ${TYPE}"
|
||||||
case "${TYPE^^}" in
|
case "${TYPE^^}" in
|
||||||
*BUKKIT|SPIGOT)
|
*BUKKIT|SPIGOT)
|
||||||
exec "$(dirname "$0")/start-deployBukkitSpigot" "$@"
|
exec "${SCRIPTS:-/}start-deployBukkitSpigot" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
PAPER)
|
PAPER)
|
||||||
exec "$(dirname "$0")/start-deployPaper" "$@"
|
exec "${SCRIPTS:-/}start-deployPaper" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
FOLIA)
|
FOLIA)
|
||||||
exec "$(dirname "$0")/start-deployFolia" "$@"
|
exec "${SCRIPTS:-/}start-deployFolia" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
FORGE)
|
FORGE)
|
||||||
exec "$(dirname "$0")/start-deployForge" "$@"
|
exec "${SCRIPTS:-/}start-deployForge" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
NEOFORGE|NEOFORGED)
|
NEOFORGE|NEOFORGED)
|
||||||
exec "$(dirname "$0")/start-deployNeoForge" "$@"
|
exec "${SCRIPTS:-/}start-deployNeoForge" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
FABRIC)
|
FABRIC)
|
||||||
exec "$(dirname "$0")/start-deployFabric" "$@"
|
exec "${SCRIPTS:-/}start-deployFabric" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
QUILT)
|
QUILT)
|
||||||
exec "$(dirname "$0")/start-deployQuilt" "$@"
|
exec "${SCRIPTS:-/}start-deployQuilt" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
VANILLA)
|
VANILLA)
|
||||||
exec "$(dirname "$0")/start-deployVanilla" "$@"
|
exec "${SCRIPTS:-/}start-deployVanilla" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
SPONGEVANILLA)
|
SPONGEVANILLA)
|
||||||
exec "$(dirname "$0")/start-deploySpongeVanilla" "$@"
|
exec "${SCRIPTS:-/}start-deploySpongeVanilla" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
CUSTOM)
|
CUSTOM)
|
||||||
exec "$(dirname "$0")/start-deployCustom" "$@"
|
exec "${SCRIPTS:-/}start-deployCustom" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
MAGMA)
|
MAGMA)
|
||||||
exec "$(dirname "$0")/start-deployMagma" "$@"
|
exec "${SCRIPTS:-/}start-deployMagma" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
MAGMA_MAINTAINED)
|
MAGMA_MAINTAINED)
|
||||||
exec "$(dirname "$0")/start-deployMagmaMaintained" "$@"
|
exec "${SCRIPTS:-/}start-deployMagmaMaintained" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
KETTING)
|
KETTING)
|
||||||
exec "$(dirname "$0")/start-deployKetting" "$@"
|
exec "${SCRIPTS:-/}start-deployKetting" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
MOHIST|YOUER|BANNER)
|
MOHIST|YOUER|BANNER)
|
||||||
exec "$(dirname "$0")/start-deployMohist" "$@"
|
exec "${SCRIPTS:-/}start-deployMohist" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
CATSERVER)
|
CATSERVER)
|
||||||
exec "$(dirname "$0")/start-deployCatserver" "$@"
|
exec "${SCRIPTS:-/}start-deployCatserver" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
PURPUR)
|
PURPUR)
|
||||||
exec "$(dirname "$0")/start-deployPurpur" "$@"
|
exec "${SCRIPTS:-/}start-deployPurpur" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
PUFFERFISH)
|
PUFFERFISH)
|
||||||
exec "$(dirname "$0")/start-deployPufferfish" "$@"
|
exec "${SCRIPTS:-/}start-deployPufferfish" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
CANYON)
|
CANYON)
|
||||||
exec "$(dirname "$0")/start-deployCanyon" "$@"
|
exec "${SCRIPTS:-/}start-deployCanyon" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
LIMBO)
|
LIMBO)
|
||||||
exec "$(dirname "$0")/start-deployLimbo" "$@"
|
exec "${SCRIPTS:-/}start-deployLimbo" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
NANOLIMBO)
|
NANOLIMBO)
|
||||||
exec "$(dirname "$0")/start-deployNanoLimbo" "$@"
|
exec "${SCRIPTS:-/}start-deployNanoLimbo" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
CRUCIBLE)
|
CRUCIBLE)
|
||||||
exec "$(dirname "$0")/start-deployCrucible" "$@"
|
exec "${SCRIPTS:-/}start-deployCrucible" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
LEAF)
|
LEAF)
|
||||||
exec "$(dirname "$0")/start-deployLeaf" "$@"
|
exec "${SCRIPTS:-/}start-deployLeaf" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
ARCLIGHT)
|
ARCLIGHT)
|
||||||
exec "$(dirname "$0")/start-deployArcLight" "$@"
|
exec "${SCRIPTS:-/}start-deployArcLight" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
POSEIDON)
|
POSEIDON)
|
||||||
exec "$(dirname "$0")/start-deployPoseidon" "$@"
|
exec "${SCRIPTS:-/}start-deployPoseidon" "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
|
|||||||
@@ -38,4 +38,4 @@ export SERVER
|
|||||||
export FAMILY=HYBRID
|
export FAMILY=HYBRID
|
||||||
export HYBRIDTYPE="${ARCLIGHT_TYPE,,}"
|
export HYBRIDTYPE="${ARCLIGHT_TYPE,,}"
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-spiget" "$@"
|
exec "${SCRIPTS:-/}start-spiget" "$@"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
|
|
||||||
: "${CF_PAGE_URL:=}"
|
: "${CF_PAGE_URL:=}"
|
||||||
: "${CF_SLUG:=}"
|
: "${CF_SLUG:=}"
|
||||||
@@ -75,4 +75,4 @@ fi
|
|||||||
applyResultsFile ${resultsFile}
|
applyResultsFile ${resultsFile}
|
||||||
resolveFamily
|
resolveFamily
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-setupWorld" "$@"
|
exec "${SCRIPTS:-/}start-setupWorld" "$@"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
|
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
@@ -123,4 +123,4 @@ export JVM_OPTS
|
|||||||
# Normalize on Spigot for operations below
|
# Normalize on Spigot for operations below
|
||||||
export FAMILY=SPIGOT
|
export FAMILY=SPIGOT
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-spiget" "$@"
|
exec "${SCRIPTS:-/}start-spiget" "$@"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
|
|
||||||
loadForgeVars() {
|
loadForgeVars() {
|
||||||
cfgFile=${1?}
|
cfgFile=${1?}
|
||||||
@@ -138,7 +138,7 @@ if ! isTrue "${USE_MODPACK_START_SCRIPT:-true}"; then
|
|||||||
FTB_DIR=$(dirname "${SERVER}")
|
FTB_DIR=$(dirname "${SERVER}")
|
||||||
export FTB_DIR
|
export FTB_DIR
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-setupWorld" "$@"
|
exec "${SCRIPTS:-/}start-setupWorld" "$@"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@@ -250,4 +250,4 @@ if isTrue "${FTB_LEGACYJAVAFIXER}" && [ ! -e "${legacyJavaFixerPath}" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
export FAMILY=FORGE
|
export FAMILY=FORGE
|
||||||
exec "$(dirname "$0")/start-setupWorld" "$@"
|
exec "${SCRIPTS:-/}start-setupWorld" "$@"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ set -euo pipefail
|
|||||||
IFS=$'\n\t'
|
IFS=$'\n\t'
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
|
|
||||||
: "${CANYON_BUILD:=lastSuccessfulBuild}"
|
: "${CANYON_BUILD:=lastSuccessfulBuild}"
|
||||||
@@ -58,4 +58,4 @@ fi
|
|||||||
# Normalize on Spigot for later operations
|
# Normalize on Spigot for later operations
|
||||||
export FAMILY=SPIGOT
|
export FAMILY=SPIGOT
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-spiget" "$@"
|
exec ${SCRIPTS:-/}start-spiget "$@"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
@@ -30,4 +30,4 @@ fi
|
|||||||
export FAMILY=HYBRID
|
export FAMILY=HYBRID
|
||||||
export HYBRIDTYPE=forge
|
export HYBRIDTYPE=forge
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-spiget" "$@"
|
exec "${SCRIPTS:-/}start-spiget" "$@"
|
||||||
|
|||||||
@@ -58,4 +58,4 @@ export SERVER
|
|||||||
export FAMILY=HYBRID
|
export FAMILY=HYBRID
|
||||||
export HYBRIDTYPE=forge
|
export HYBRIDTYPE=forge
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-spiget" "$@"
|
exec "${SCRIPTS:-/}start-spiget" "$@"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
: "${CUSTOM_JAR_EXEC:=}"
|
: "${CUSTOM_JAR_EXEC:=}"
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
|
|
||||||
if isURL "${CUSTOM_SERVER}"; then
|
if isURL "${CUSTOM_SERVER}"; then
|
||||||
@@ -42,4 +42,4 @@ fi
|
|||||||
export FAMILY="${FAMILY:-HYBRID}"
|
export FAMILY="${FAMILY:-HYBRID}"
|
||||||
export HYBRIDTYPE="${HYBRIDTYPE:-any}"
|
export HYBRIDTYPE="${HYBRIDTYPE:-any}"
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-spiget" "$@"
|
exec "${SCRIPTS:-/}start-spiget" "$@"
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
ftbInstallMarker=".ftb-installed"
|
ftbInstallMarker=".ftb-installed"
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
@@ -160,4 +160,4 @@ else
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-setupWorld" "$@"
|
exec "${SCRIPTS:-/}start-setupWorld" "$@"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
|
|
||||||
export TYPE=FABRIC
|
export TYPE=FABRIC
|
||||||
: "${FABRIC_LAUNCHER_VERSION:=${FABRIC_INSTALLER_VERSION:-LATEST}}"
|
: "${FABRIC_LAUNCHER_VERSION:=${FABRIC_INSTALLER_VERSION:-LATEST}}"
|
||||||
@@ -56,4 +56,4 @@ fi
|
|||||||
applyResultsFile ${resultsFile}
|
applyResultsFile ${resultsFile}
|
||||||
|
|
||||||
export FAMILY=FABRIC
|
export FAMILY=FABRIC
|
||||||
exec "$(dirname "$0")/start-setupWorld" "$@"
|
exec "${SCRIPTS:-/}start-setupWorld" "$@"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
: "${FOLIA_CHANNEL:=experimental}"
|
: "${FOLIA_CHANNEL:=experimental}"
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
handleDebugMode
|
handleDebugMode
|
||||||
|
|
||||||
@@ -18,4 +18,4 @@ fi
|
|||||||
PAPER_PROJECT="folia" \
|
PAPER_PROJECT="folia" \
|
||||||
PAPER_NAME="FoliaMC" \
|
PAPER_NAME="FoliaMC" \
|
||||||
PAPER_CHANNEL="${FOLIA_CHANNEL}" \
|
PAPER_CHANNEL="${FOLIA_CHANNEL}" \
|
||||||
exec "$(dirname "$0")/start-deployPaper" "$@"
|
exec "${SCRIPTS:-/}start-deployPaper" "$@"
|
||||||
|
|||||||
@@ -46,4 +46,4 @@ applyResultsFile ${resultsFile}
|
|||||||
|
|
||||||
export FAMILY=FORGE
|
export FAMILY=FORGE
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-setupWorld" "$@"
|
exec "${SCRIPTS:-/}start-setupWorld" "$@"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
|
|
||||||
if ! SERVER=$(mc-image-helper github download-latest-asset \
|
if ! SERVER=$(mc-image-helper github download-latest-asset \
|
||||||
@@ -30,4 +30,4 @@ export SERVER
|
|||||||
export FAMILY=HYBRID
|
export FAMILY=HYBRID
|
||||||
export HYBRIDTYPE=forge
|
export HYBRIDTYPE=forge
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-spiget" "$@"
|
exec "${SCRIPTS:-/}start-spiget" "$@"
|
||||||
|
|||||||
@@ -48,4 +48,4 @@ fi
|
|||||||
export FAMILY=SPIGOT
|
export FAMILY=SPIGOT
|
||||||
export SERVER
|
export SERVER
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-spiget" "$@"
|
exec "${SCRIPTS:-/}start-spiget" "$@"
|
||||||
@@ -2,15 +2,15 @@
|
|||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
IFS=$'\n\t'
|
IFS=$'\n\t'
|
||||||
|
|
||||||
. "$(dirname "$0")/start-utils"
|
. ${SCRIPTS:-/}start-utils
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
|
|
||||||
: "${LIMBO_BUILD:=LATEST}"
|
: ${LIMBO_BUILD:=LATEST}
|
||||||
: "${FORCE_REDOWNLOAD:=false}"
|
: ${FORCE_REDOWNLOAD:=false}
|
||||||
: "${LIMBO_SCHEMA_FILENAME:=default.schem}"
|
: ${LIMBO_SCHEMA_FILENAME:=default.schem}
|
||||||
: "${LEVEL:=default;${LIMBO_SCHEMA_FILENAME}}"
|
: ${LEVEL:=default;${LIMBO_SCHEMA_FILENAME}}
|
||||||
# defaults to localhost, if this is not set
|
# defaults to localhost, if this is not set
|
||||||
: "${SERVER_IP:=0.0.0.0}"
|
: ${SERVER_IP:=0.0.0.0}
|
||||||
|
|
||||||
export LEVEL SERVER_IP
|
export LEVEL SERVER_IP
|
||||||
|
|
||||||
@@ -65,4 +65,4 @@ fi
|
|||||||
export LEVEL
|
export LEVEL
|
||||||
|
|
||||||
export FAMILY=LIMBO
|
export FAMILY=LIMBO
|
||||||
exec "$(dirname "$0")/start-setupWorld" "$@"
|
exec ${SCRIPTS:-/}start-setupWorld "$@"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
|
|
||||||
: "${MAGMA_VERSION:=}"
|
: "${MAGMA_VERSION:=}"
|
||||||
@@ -27,4 +27,4 @@ export SERVER
|
|||||||
export FAMILY=HYBRID
|
export FAMILY=HYBRID
|
||||||
export HYBRIDTYPE=forge
|
export HYBRIDTYPE=forge
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-spiget" "$@"
|
exec "${SCRIPTS:-/}start-spiget" "$@"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
|
|
||||||
: "${FORGE_VERSION:=}"
|
: "${FORGE_VERSION:=}"
|
||||||
@@ -36,4 +36,4 @@ export SERVER
|
|||||||
export FAMILY=HYBRID
|
export FAMILY=HYBRID
|
||||||
export HYBRIDTYPE=forge
|
export HYBRIDTYPE=forge
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-spiget" "$@"
|
exec "${SCRIPTS:-/}start-spiget" "$@"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
|
|
||||||
resultsFile=/data/.install-modrinth.env
|
resultsFile=/data/.install-modrinth.env
|
||||||
|
|
||||||
@@ -40,14 +40,13 @@ fi
|
|||||||
|
|
||||||
case "${VERSION^^}" in
|
case "${VERSION^^}" in
|
||||||
LATEST)
|
LATEST)
|
||||||
# need to be backward compatible with old variable name, MODRINTH_DEFAULT_VERSION_TYPE
|
: "${MODRINTH_DEFAULT_VERSION_TYPE:=release}"
|
||||||
: "${MODRINTH_MODPACK_VERSION_TYPE:=${MODRINTH_DEFAULT_VERSION_TYPE:-release}}"
|
|
||||||
;;
|
;;
|
||||||
SNAPSHOT)
|
SNAPSHOT)
|
||||||
: "${MODRINTH_MODPACK_VERSION_TYPE:=${MODRINTH_DEFAULT_VERSION_TYPE:-beta}}"
|
: "${MODRINTH_DEFAULT_VERSION_TYPE:=beta}"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
: "${MODRINTH_MODPACK_VERSION_TYPE:=${MODRINTH_DEFAULT_VERSION_TYPE:-release}}"
|
: "${MODRINTH_DEFAULT_VERSION_TYPE:=release}"
|
||||||
args+=("--game-version=$VERSION")
|
args+=("--game-version=$VERSION")
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -62,7 +61,7 @@ setArg() {
|
|||||||
}
|
}
|
||||||
setArg --loader MODRINTH_LOADER
|
setArg --loader MODRINTH_LOADER
|
||||||
setArg --version MODRINTH_VERSION
|
setArg --version MODRINTH_VERSION
|
||||||
setArg --default-version-type MODRINTH_MODPACK_VERSION_TYPE
|
setArg --default-version-type MODRINTH_DEFAULT_VERSION_TYPE
|
||||||
setArg --exclude-files MODRINTH_EXCLUDE_FILES
|
setArg --exclude-files MODRINTH_EXCLUDE_FILES
|
||||||
setArg --force-include-files MODRINTH_FORCE_INCLUDE_FILES
|
setArg --force-include-files MODRINTH_FORCE_INCLUDE_FILES
|
||||||
setArg --overrides-exclusions MODRINTH_OVERRIDES_EXCLUSIONS
|
setArg --overrides-exclusions MODRINTH_OVERRIDES_EXCLUSIONS
|
||||||
@@ -76,4 +75,4 @@ fi
|
|||||||
applyResultsFile ${resultsFile}
|
applyResultsFile ${resultsFile}
|
||||||
resolveFamily
|
resolveFamily
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-setupWorld" "$@"
|
exec "${SCRIPTS:-/}start-setupWorld" "$@"
|
||||||
|
|||||||
+27
-28
@@ -14,39 +14,38 @@ mohistType="${TYPE,,}"
|
|||||||
mohistApiUrl="https://api.mohistmc.com/project/${mohistType}"
|
mohistApiUrl="https://api.mohistmc.com/project/${mohistType}"
|
||||||
mohistDownloadsPage="https://mohistmc.com/downloadSoftware?project=${mohistType}"
|
mohistDownloadsPage="https://mohistmc.com/downloadSoftware?project=${mohistType}"
|
||||||
|
|
||||||
if [[ "${MOHIST_BUILD}" != "lastSuccessfulBuild" ]] && [[ "${VERSION,,}" != latest ]] && [[ -f "/data/${mohistType}-${VERSION}-${MOHIST_BUILD}-server.jar" ]]; then
|
if ! get --exists "${mohistApiUrl}/${VERSION}/builds"; then
|
||||||
log "Skipping Mohist build lookup since server jar exists"
|
logError "${mohistType} builds do not exist for ${VERSION}"
|
||||||
SERVER="/data/${mohistType}-${VERSION}-${MOHIST_BUILD}-server.jar"
|
logError " check ${mohistDownloadsPage} for available versions"
|
||||||
else
|
logError " and set VERSION accordingly"
|
||||||
if ! get --exists "${mohistApiUrl}/${VERSION}/builds"; then
|
exit 1
|
||||||
logError "${mohistType} builds do not exist for ${VERSION}"
|
fi
|
||||||
logError " check ${mohistDownloadsPage} for available versions"
|
|
||||||
logError " and set VERSION accordingly"
|
if [[ "${MOHIST_BUILD}" == "lastSuccessfulBuild" ]]; then
|
||||||
|
# Get the latest build number from the API
|
||||||
|
if ! buildNumber=$(
|
||||||
|
get --json-path '$[0].id' "${mohistApiUrl}/${VERSION}/builds"
|
||||||
|
); then
|
||||||
|
logError "failed to list ${mohistType} builds for ${VERSION}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
MOHIST_BUILD="${buildNumber}"
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ "${MOHIST_BUILD}" == "lastSuccessfulBuild" ]]; then
|
downloadUrl="${mohistApiUrl}/${VERSION}/builds/${MOHIST_BUILD}/download"
|
||||||
# Get the latest build number from the API
|
|
||||||
if ! buildNumber=$(
|
|
||||||
get --json-path '$[0].id' "${mohistApiUrl}/${VERSION}/builds"
|
|
||||||
); then
|
|
||||||
logError "failed to list ${mohistType} builds for ${VERSION}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
MOHIST_BUILD="${buildNumber}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
downloadUrl="${mohistApiUrl}/${VERSION}/builds/${MOHIST_BUILD}/download"
|
if [[ -z "${downloadUrl}" ]]; then
|
||||||
|
logError "Could not find build ${MOHIST_BUILD} for version ${VERSION}"
|
||||||
|
logError " check ${mohistDownloadsPage} for available versions"
|
||||||
|
logError " and set VERSION accordingly"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ -z "${downloadUrl}" ]]; then
|
SERVER="/data/${mohistType}-${VERSION}-${MOHIST_BUILD}-server.jar"
|
||||||
logError "Could not find build ${MOHIST_BUILD} for version ${VERSION}"
|
|
||||||
logError " check ${mohistDownloadsPage} for available versions"
|
|
||||||
logError " and set VERSION accordingly"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
SERVER="/data/${mohistType}-${VERSION}-${MOHIST_BUILD}-server.jar"
|
if [ ! -f "${SERVER}" ]; then
|
||||||
get --skip-existing -o "${SERVER}" "${downloadUrl}"
|
log "Downloading ${mohistType^} build ${MOHIST_BUILD} for ${VERSION}"
|
||||||
|
get -o "${SERVER}" "${downloadUrl}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${mohistType}" == "mohist" ]]; then
|
if [[ "${mohistType}" == "mohist" ]]; then
|
||||||
@@ -62,4 +61,4 @@ fi
|
|||||||
export SERVER
|
export SERVER
|
||||||
export FAMILY=HYBRID
|
export FAMILY=HYBRID
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-spiget" "$@"
|
exec "${SCRIPTS:-/}start-spiget" "$@"
|
||||||
|
|||||||
@@ -1,164 +1,19 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
|
|
||||||
if ! SERVER=$(mc-image-helper github download-latest-asset \
|
if ! SERVER=$(mc-image-helper github download-latest-asset \
|
||||||
--output-directory=/data \
|
--output-directory=/data \
|
||||||
--name-pattern="NanoLimbo(-.+?(?<!-sources))?\.jar" \
|
--name-pattern="NanoLimbo-.+?(?<!-sources)\.jar" \
|
||||||
BoomEaro/NanoLimbo
|
BoomEaro/NanoLimbo
|
||||||
); then
|
); then
|
||||||
logError "Failed to download NanoLimbo"
|
logError "Failed to download NanoLimbo"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
: "${SERVER_PORT:=25565}"
|
|
||||||
cat <<EOF > /data/settings.yml
|
|
||||||
#
|
|
||||||
# NanoLimbo configuration
|
|
||||||
#
|
|
||||||
|
|
||||||
# Server's host address and port. Set ip empty to use public address
|
|
||||||
bind:
|
|
||||||
ip: '0.0.0.0'
|
|
||||||
port: ${SERVER_PORT}
|
|
||||||
|
|
||||||
# Max number of players can join to server
|
|
||||||
# Set -1 to make it infinite
|
|
||||||
maxPlayers: 100
|
|
||||||
|
|
||||||
# Server's data in servers list
|
|
||||||
ping:
|
|
||||||
description: '{"text": "&9NanoLimbo"}'
|
|
||||||
version: 'NanoLimbo'
|
|
||||||
# Return static protocol version number in ping result
|
|
||||||
# By default, its -1 to return the client version if it supported
|
|
||||||
# https://wiki.vg/Protocol_version_numbers
|
|
||||||
protocol: -1
|
|
||||||
|
|
||||||
# Available dimensions: OVERWORLD, NETHER, THE_END
|
|
||||||
dimension: THE_END
|
|
||||||
|
|
||||||
# Whether to display the player in the player list
|
|
||||||
# For 1.16.5 clients, the player list will be sent even if disabled, to avoid crash
|
|
||||||
playerList:
|
|
||||||
enable: false
|
|
||||||
username: 'NanoLimbo'
|
|
||||||
|
|
||||||
# Whether to display header and footer in player list
|
|
||||||
# For 1.8+ clients
|
|
||||||
headerAndFooter:
|
|
||||||
enable: false
|
|
||||||
header: '{"text": "&eWelcome!"}'
|
|
||||||
footer: '{"text": "&9NanoLimbo"}'
|
|
||||||
|
|
||||||
# Setup player's game mode
|
|
||||||
# 0 - Survival
|
|
||||||
# 1 - Creative (hide HP and food bar)
|
|
||||||
# 2 - Adventure
|
|
||||||
# 3 - Spectator (hide all UI bars)
|
|
||||||
# Spectator works on 1.8+ clients
|
|
||||||
gameMode: 3
|
|
||||||
|
|
||||||
# Remove secure-chat toast
|
|
||||||
# For 1.20.5+ clients
|
|
||||||
secureProfile: false
|
|
||||||
|
|
||||||
# Server name which is shown under F3
|
|
||||||
# For 1.13+ clients
|
|
||||||
brandName:
|
|
||||||
enable: true
|
|
||||||
content: 'NanoLimbo'
|
|
||||||
|
|
||||||
# Message sends when player joins to the server
|
|
||||||
joinMessage:
|
|
||||||
enable: true
|
|
||||||
text: '{"text": "&eWelcome to the Limbo!"}'
|
|
||||||
|
|
||||||
# BossBar displays when player joins to the server
|
|
||||||
# For 1.9+ clients
|
|
||||||
bossBar:
|
|
||||||
enable: true
|
|
||||||
text: '{"text": "Welcome to the Limbo!"}'
|
|
||||||
health: 1.0
|
|
||||||
# Available colors: PINK, BLUE, RED, GREEN, YELLOW, PURPLE, WHITE
|
|
||||||
color: PINK
|
|
||||||
# Available divisions: SOLID, DASHES_6, DASHES_10, DASHES_12, DASHES_20
|
|
||||||
division: SOLID
|
|
||||||
|
|
||||||
# Display title and subtitle
|
|
||||||
# For 1.8+ clients
|
|
||||||
title:
|
|
||||||
enable: true
|
|
||||||
# Set title text value empty, if you need only subtitle
|
|
||||||
title: '{"text": "&9&lWelcome!"}'
|
|
||||||
# Set subtitle text value empty, if you need only title
|
|
||||||
subtitle: '{"text": "&6NanoLimbo"}'
|
|
||||||
# Fade in time in ticks (1 sec = 20 ticks)
|
|
||||||
fadeIn: 10
|
|
||||||
# Stay time in ticks
|
|
||||||
stay: 100
|
|
||||||
# Fade out time in ticks
|
|
||||||
fadeOut: 10
|
|
||||||
|
|
||||||
# Player info forwarding support.
|
|
||||||
# Available types:
|
|
||||||
# - NONE
|
|
||||||
# - LEGACY
|
|
||||||
# - MODERN
|
|
||||||
# - BUNGEE_GUARD
|
|
||||||
# Don't use secret if you do not use MODERN type
|
|
||||||
infoForwarding:
|
|
||||||
type: NONE
|
|
||||||
secret: '<YOUR_SECRET_HERE>'
|
|
||||||
tokens:
|
|
||||||
- '<BUNGEE_GUARD_TOKEN>'
|
|
||||||
|
|
||||||
# Read timeout for connections in milliseconds
|
|
||||||
readTimeout: 30000
|
|
||||||
|
|
||||||
# Define log level. For production, I'd recommend to use level 2
|
|
||||||
# Log levels:
|
|
||||||
# 0 - Display only errors
|
|
||||||
# 1 - Display errors, warnings
|
|
||||||
# 2 - Display errors, warnings, info
|
|
||||||
# 3 - Display errors, warnings, info, debug
|
|
||||||
debugLevel: 2
|
|
||||||
|
|
||||||
# Warning! Do not touch params of this block if you are not completely sure what is this!
|
|
||||||
netty:
|
|
||||||
# Use a Linux native transport type, if it possible
|
|
||||||
useEpoll: true
|
|
||||||
# EventLoopGroup threads count
|
|
||||||
threads:
|
|
||||||
bossGroup: 1
|
|
||||||
workerGroup: 4
|
|
||||||
|
|
||||||
# Options to check incoming traffic and kick potentially malicious connections.
|
|
||||||
# Take into account that player can send many small packets, for example, just moving mouse.
|
|
||||||
traffic:
|
|
||||||
# If true, then additional handler will be added to the channel pipeline
|
|
||||||
enable: true
|
|
||||||
# Max packet size in bytes
|
|
||||||
# Unlimited if -1
|
|
||||||
maxPacketSize: 8192
|
|
||||||
# The interval to measure packets over
|
|
||||||
# Lowering this value will limit peak packets from players which would target people with bad connections
|
|
||||||
# Raising this value will allow higher peak packet rates, which will help with people who have poor connections
|
|
||||||
# Ignored if -1.0
|
|
||||||
interval: 7.0
|
|
||||||
# The maximum packets per second for players
|
|
||||||
# It is measured over the configured interval
|
|
||||||
# Ignored if -1.0
|
|
||||||
maxPacketRate: 500.0
|
|
||||||
# The maximum packet bytes per second for players
|
|
||||||
# It is measured over the configured interval as an average bytes/sec
|
|
||||||
# Ignored if -1.0
|
|
||||||
maxPacketBytesRate: 2048.0
|
|
||||||
EOF
|
|
||||||
|
|
||||||
export SERVER
|
export SERVER
|
||||||
export FAMILY=LIMBO
|
export FAMILY=LIMBO
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-setupMounts" "$@"
|
exec ${SCRIPTS:-/}start-setupMounts "$@"
|
||||||
|
|||||||
@@ -23,4 +23,4 @@ applyResultsFile ${resultsFile}
|
|||||||
|
|
||||||
export FAMILY=FORGE
|
export FAMILY=FORGE
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-setupWorld" "$@"
|
exec "${SCRIPTS:-/}start-setupWorld" "$@"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
handleDebugMode
|
handleDebugMode
|
||||||
|
|
||||||
@@ -58,4 +58,4 @@ export DOWNLOAD_DEFAULTS
|
|||||||
# Normalize on Spigot for downstream operations
|
# Normalize on Spigot for downstream operations
|
||||||
export FAMILY=SPIGOT
|
export FAMILY=SPIGOT
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-spiget" "$@"
|
exec "${SCRIPTS:-/}start-spiget" "$@"
|
||||||
|
|||||||
@@ -34,4 +34,4 @@ fi
|
|||||||
export SERVER
|
export SERVER
|
||||||
export FAMILY=SPIGOT
|
export FAMILY=SPIGOT
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-spiget" "$@"
|
exec "${SCRIPTS:-/}start-spiget" "$@"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
@@ -45,4 +45,4 @@ fi
|
|||||||
# Normalize on Spigot for later operations
|
# Normalize on Spigot for later operations
|
||||||
export FAMILY=SPIGOT
|
export FAMILY=SPIGOT
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-spiget" "$@"
|
exec "${SCRIPTS:-/}start-spiget" "$@"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ IFS=$'\n\t'
|
|||||||
: "${PURPUR_DOWNLOAD_URL:=}"
|
: "${PURPUR_DOWNLOAD_URL:=}"
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
|
|
||||||
resultsFile=/data/.purpur.env
|
resultsFile=/data/.purpur.env
|
||||||
@@ -39,4 +39,4 @@ applyResultsFile ${resultsFile}
|
|||||||
# Normalize on Spigot for later operations
|
# Normalize on Spigot for later operations
|
||||||
export FAMILY=SPIGOT
|
export FAMILY=SPIGOT
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-spiget" "$@"
|
exec "${SCRIPTS:-/}start-spiget" "$@"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
|
|
||||||
: "${QUILT_LAUNCHER:=}"
|
: "${QUILT_LAUNCHER:=}"
|
||||||
: "${QUILT_LAUNCHER_URL:=}"
|
: "${QUILT_LAUNCHER_URL:=}"
|
||||||
@@ -29,7 +29,7 @@ if [[ $QUILT_LAUNCHER ]]; then
|
|||||||
resolveVersion
|
resolveVersion
|
||||||
|
|
||||||
export FAMILY=FABRIC
|
export FAMILY=FABRIC
|
||||||
exec "$(dirname "$0")/start-setupWorld" "$@"
|
exec "${SCRIPTS:-/}start-setupWorld" "$@"
|
||||||
|
|
||||||
elif [[ $QUILT_LAUNCHER_URL ]]; then
|
elif [[ $QUILT_LAUNCHER_URL ]]; then
|
||||||
logError "QUILT_LAUNCHER_URL is not longer supported. Pre-download and use QUILT_LAUNCHER."
|
logError "QUILT_LAUNCHER_URL is not longer supported. Pre-download and use QUILT_LAUNCHER."
|
||||||
@@ -52,4 +52,4 @@ fi
|
|||||||
applyResultsFile ${resultsFile}
|
applyResultsFile ${resultsFile}
|
||||||
|
|
||||||
export FAMILY=FABRIC
|
export FAMILY=FABRIC
|
||||||
exec "$(dirname "$0")/start-setupWorld" "$@"
|
exec "${SCRIPTS:-/}start-setupWorld" "$@"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. ${SCRIPTS:-/}start-utils
|
||||||
|
|
||||||
export TYPE=spongevanilla
|
export TYPE=spongevanilla
|
||||||
: ${SPONGEBRANCH:=STABLE}
|
: ${SPONGEBRANCH:=STABLE}
|
||||||
@@ -37,4 +37,4 @@ if [ ! -e "$SERVER" ] || [ -n "$FORCE_REDOWNLOAD" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
export FAMILY=SPONGE
|
export FAMILY=SPONGE
|
||||||
exec "$(dirname "$0")/start-setupWorld" "$@"
|
exec "${SCRIPTS:-/}start-setupWorld" "$@"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
|
|
||||||
@@ -53,4 +53,4 @@ fi
|
|||||||
|
|
||||||
isDebugging && ls -l
|
isDebugging && ls -l
|
||||||
export FAMILY=VANILLA
|
export FAMILY=VANILLA
|
||||||
exec "$(dirname "$0")/start-setupWorld" "$@"
|
exec "${SCRIPTS:-/}start-setupWorld" "$@"
|
||||||
|
|||||||
+6
-14
@@ -5,7 +5,7 @@
|
|||||||
: "${CUSTOM_JAR_EXEC:=}"
|
: "${CUSTOM_JAR_EXEC:=}"
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
baseDataDir=/data
|
baseDataDir=/data
|
||||||
tmpServerIconPath=/tmp/icon.img
|
tmpServerIconPath=/tmp/icon.img
|
||||||
@@ -151,22 +151,19 @@ if isTrue "${ENABLE_JMX}"; then
|
|||||||
log "JMX is enabled. Make sure you have port forwarding for ${JMX_PORT}"
|
log "JMX is enabled. Make sure you have port forwarding for ${JMX_PORT}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
: "${USE_AIKAR_FLAGS:=false}"
|
|
||||||
: "${USE_MEOWICE_FLAGS:=false}"
|
|
||||||
: "${USE_MEOWICE_GRAALVM_FLAGS:=false}"
|
|
||||||
|
|
||||||
if isTrue "${USE_MEOWICE_FLAGS}"; then
|
if isTrue "${USE_MEOWICE_FLAGS}"; then
|
||||||
java_major_version=$(mc-image-helper java-release)
|
java_major_version=$(mc-image-helper java-release)
|
||||||
if [[ $java_major_version -gt 16 ]]; then
|
if [[ $java_major_version -gt 16 ]]; then
|
||||||
|
USE_MEOWICE_GRAALVM_FLAGS="${USE_MEOWICE_GRAALVM_FLAGS:-TRUE}"
|
||||||
log "Java version $java_major_version using MeowIce's flags for Java 17+"
|
log "Java version $java_major_version using MeowIce's flags for Java 17+"
|
||||||
else
|
else
|
||||||
log "Your Java version is $java_major_version, MeowIce's flags are for Java 17+ falling back to Aikar's"
|
log "Your Java version is $java_major_version, MeowIce's flags are for Java 17+ falling back to Aikar's"
|
||||||
USE_MEOWICE_FLAGS=FALSE
|
USE_MEOWICE_FLAGS=FALSE
|
||||||
USE_AIKAR_FLAGS=TRUE
|
|
||||||
fi
|
fi
|
||||||
|
USE_AIKAR_FLAGS=TRUE
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if isTrue "${USE_AIKAR_FLAGS}" || isTrue "${USE_MEOWICE_FLAGS}"; then
|
if isTrue "${USE_AIKAR_FLAGS}"; then
|
||||||
# From https://mcflags.emc.gs/
|
# From https://mcflags.emc.gs/
|
||||||
if isTrue "${USE_MEOWICE_FLAGS}"; then
|
if isTrue "${USE_MEOWICE_FLAGS}"; then
|
||||||
log "Using MeowIce's flags"
|
log "Using MeowIce's flags"
|
||||||
@@ -216,19 +213,14 @@ if isTrue "${USE_AIKAR_FLAGS}" || isTrue "${USE_MEOWICE_FLAGS}"; then
|
|||||||
-XX:SurvivorRatio=32
|
-XX:SurvivorRatio=32
|
||||||
-XX:+PerfDisableSharedMem
|
-XX:+PerfDisableSharedMem
|
||||||
-XX:MaxTenuringThreshold=1
|
-XX:MaxTenuringThreshold=1
|
||||||
|
-Dusing.aikars.flags=https://mcflags.emc.gs
|
||||||
|
-Daikars.new.flags=true
|
||||||
"
|
"
|
||||||
if isTrue "${USE_AIKAR_FLAGS}"; then
|
|
||||||
JVM_XX_OPTS="${JVM_XX_OPTS}
|
|
||||||
-Dusing.aikars.flags=https://mcflags.emc.gs
|
|
||||||
-Daikars.new.flags=true
|
|
||||||
"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if isTrue "${USE_MEOWICE_FLAGS}"; then
|
if isTrue "${USE_MEOWICE_FLAGS}"; then
|
||||||
JVM_XX_OPTS="${JVM_XX_OPTS}
|
JVM_XX_OPTS="${JVM_XX_OPTS}
|
||||||
-XX:+UnlockDiagnosticVMOptions
|
-XX:+UnlockDiagnosticVMOptions
|
||||||
-XX:+UnlockExperimentalVMOptions
|
|
||||||
-XX:G1SATBBufferEnqueueingThresholdPercent=30
|
-XX:G1SATBBufferEnqueueingThresholdPercent=30
|
||||||
-XX:G1ConcMarkStepDurationMillis=5
|
-XX:G1ConcMarkStepDurationMillis=5
|
||||||
-XX:+UseNUMA
|
-XX:+UseNUMA
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
|
|
||||||
: "${RCON_CMDS_STARTUP:=}"
|
: "${RCON_CMDS_STARTUP:=}"
|
||||||
: "${RCON_CMDS_ON_CONNECT:=}"
|
: "${RCON_CMDS_ON_CONNECT:=}"
|
||||||
@@ -25,4 +25,4 @@ isDebugging && set -x
|
|||||||
isNumericElseSetToDefault RCON_CMDS_PERIOD 10
|
isNumericElseSetToDefault RCON_CMDS_PERIOD 10
|
||||||
checkIfNotZeroElseSetToDefault RCON_CMDS_PERIOD 10
|
checkIfNotZeroElseSetToDefault RCON_CMDS_PERIOD 10
|
||||||
|
|
||||||
"$(dirname "$0")/auto/rcon-cmds-daemon.sh" &
|
/usr/local/bin/rcon-cmds-daemon.sh &
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ set -e -o pipefail
|
|||||||
: "${REMOVE_OLD_DATAPACKS_INCLUDE:=*.zip}"
|
: "${REMOVE_OLD_DATAPACKS_INCLUDE:=*.zip}"
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
|
|
||||||
out_dir=/data/${LEVEL:-world}/datapacks
|
out_dir=/data/${LEVEL:-world}/datapacks
|
||||||
@@ -89,4 +89,4 @@ if [[ ${VANILLATWEAKS_FILE} || ${VANILLATWEAKS_SHARECODE} ]]; then
|
|||||||
--pack-files="$VANILLATWEAKS_FILE"
|
--pack-files="$VANILLATWEAKS_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-setupModpack" "$@"
|
exec "${SCRIPTS:-/}start-setupModpack" "$@"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
handleDebugMode
|
handleDebugMode
|
||||||
@@ -17,7 +17,6 @@ handleDebugMode
|
|||||||
: "${DOWNLOAD_DEFAULTS:=}"
|
: "${DOWNLOAD_DEFAULTS:=}"
|
||||||
: "${DOWNLOAD_DEFAULT_CONFIGS:=}"
|
: "${DOWNLOAD_DEFAULT_CONFIGS:=}"
|
||||||
: "${SKIP_DOWNLOAD_DEFAULTS:=false}"
|
: "${SKIP_DOWNLOAD_DEFAULTS:=false}"
|
||||||
: "${APPLY_EXTRA_FILES:=${DOWNLOAD_EXTRA_CONFIGS:-}}"
|
|
||||||
|
|
||||||
if isTrue "${REPLACE_ENV_IN_PLACE}"; then
|
if isTrue "${REPLACE_ENV_IN_PLACE}"; then
|
||||||
log "Replacing env variables in ${REPLACE_ENV_PATHS} that match the prefix '$REPLACE_ENV_VARIABLE_PREFIX' ..."
|
log "Replacing env variables in ${REPLACE_ENV_PATHS} that match the prefix '$REPLACE_ENV_VARIABLE_PREFIX' ..."
|
||||||
@@ -55,15 +54,6 @@ if isFalse "$SKIP_DOWNLOAD_DEFAULTS"; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $APPLY_EXTRA_FILES ]]; then
|
|
||||||
mc-image-helper mcopy \
|
|
||||||
--to /data \
|
|
||||||
--skip-existing \
|
|
||||||
--skip-up-to-date=false \
|
|
||||||
--quiet-when-skipped \
|
|
||||||
"$APPLY_EXTRA_FILES"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ${PATCH_DEFINITIONS} ]]; then
|
if [[ ${PATCH_DEFINITIONS} ]]; then
|
||||||
log "Applying patch definitions from ${PATCH_DEFINITIONS}"
|
log "Applying patch definitions from ${PATCH_DEFINITIONS}"
|
||||||
mc-image-helper patch \
|
mc-image-helper patch \
|
||||||
@@ -71,4 +61,4 @@ if [[ ${PATCH_DEFINITIONS} ]]; then
|
|||||||
"${PATCH_DEFINITIONS}"
|
"${PATCH_DEFINITIONS}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-setupRbac" "$@"
|
exec "${SCRIPTS:-/}start-setupRbac" "$@"
|
||||||
|
|||||||
+13
-11
@@ -3,8 +3,10 @@
|
|||||||
set -e -o pipefail
|
set -e -o pipefail
|
||||||
|
|
||||||
: "${REMOVE_OLD_MODS:=false}"
|
: "${REMOVE_OLD_MODS:=false}"
|
||||||
|
: "${MODS:=}"
|
||||||
: "${MODS_OUT_DIR:=/data/mods}"
|
: "${MODS_OUT_DIR:=/data/mods}"
|
||||||
: "${MODS_FILE:=}"
|
: "${MODS_FILE:=}"
|
||||||
|
: "${PLUGINS:=}"
|
||||||
: "${PLUGINS_OUT_DIR:=/data/plugins}"
|
: "${PLUGINS_OUT_DIR:=/data/plugins}"
|
||||||
: "${PLUGINS_FILE:=}"
|
: "${PLUGINS_FILE:=}"
|
||||||
: "${REMOVE_OLD_MODS_DEPTH:=1} "
|
: "${REMOVE_OLD_MODS_DEPTH:=1} "
|
||||||
@@ -24,7 +26,7 @@ if [[ -n ${CF_API_KEY_FILE} ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
|
|
||||||
# CURSE_URL_BASE used in manifest downloads below
|
# CURSE_URL_BASE used in manifest downloads below
|
||||||
@@ -92,7 +94,7 @@ fi
|
|||||||
|
|
||||||
function handleListings() {
|
function handleListings() {
|
||||||
if usesMods && usesPlugins; then
|
if usesMods && usesPlugins; then
|
||||||
if [[ -v MODS ]]; then
|
if [[ "$MODS" ]]; then
|
||||||
|
|
||||||
ensureRemoveAllModsOff "MODS is set"
|
ensureRemoveAllModsOff "MODS is set"
|
||||||
|
|
||||||
@@ -103,7 +105,7 @@ function handleListings() {
|
|||||||
--to="$MODS_OUT_DIR" \
|
--to="$MODS_OUT_DIR" \
|
||||||
"$MODS"
|
"$MODS"
|
||||||
fi
|
fi
|
||||||
if [[ -v PLUGINS ]]; then
|
if [[ "$PLUGINS" ]]; then
|
||||||
ensureRemoveAllModsOff "PLUGINS is set"
|
ensureRemoveAllModsOff "PLUGINS is set"
|
||||||
mkdir -p "$PLUGINS_OUT_DIR"
|
mkdir -p "$PLUGINS_OUT_DIR"
|
||||||
mc-image-helper mcopy \
|
mc-image-helper mcopy \
|
||||||
@@ -138,14 +140,14 @@ function handleListings() {
|
|||||||
outDir="$PLUGINS_OUT_DIR"
|
outDir="$PLUGINS_OUT_DIR"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -v MODS || -v PLUGINS ]]; then
|
if [[ "$MODS" || "$PLUGINS" ]]; then
|
||||||
ensureRemoveAllModsOff "MODS or PLUGINS is set"
|
ensureRemoveAllModsOff "MODS or PLUGINS is set"
|
||||||
mkdir -p "$outDir"
|
mkdir -p "$outDir"
|
||||||
mc-image-helper mcopy \
|
mc-image-helper mcopy \
|
||||||
--glob=*.jar \
|
--glob=*.jar \
|
||||||
--scope=var-list \
|
--scope=var-list \
|
||||||
--to="$outDir" \
|
--to="$outDir" \
|
||||||
"${MODS:-}" "${PLUGINS:-}"
|
"$MODS" "$PLUGINS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$MODS_FILE" || "$PLUGINS_FILE" ]]; then
|
if [[ "$MODS_FILE" || "$PLUGINS_FILE" ]]; then
|
||||||
@@ -253,15 +255,15 @@ function handleGenericPacks() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function handleModrinthProjects() {
|
function handleModrinthProjects() {
|
||||||
# need to be backward compatible with old variable name, MODRINTH_ALLOWED_VERSION_TYPE
|
: "${MODRINTH_PROJECTS:=}"
|
||||||
: "${MODRINTH_PROJECTS_DEFAULT_VERSION_TYPE:=${MODRINTH_ALLOWED_VERSION_TYPE:-release}}"
|
: "${MODRINTH_ALLOWED_VERSION_TYPE:=release}"
|
||||||
: "${MODRINTH_DOWNLOAD_DEPENDENCIES:=none}"
|
: "${MODRINTH_DOWNLOAD_DEPENDENCIES:=none}"
|
||||||
if [[ -v MODRINTH_DOWNLOAD_OPTIONAL_DEPENDENCIES ]]; then
|
if [[ -v MODRINTH_DOWNLOAD_OPTIONAL_DEPENDENCIES ]]; then
|
||||||
logWarning "The variable MODRINTH_DOWNLOAD_OPTIONAL_DEPENDENCIES is removed."
|
logWarning "The variable MODRINTH_DOWNLOAD_OPTIONAL_DEPENDENCIES is removed."
|
||||||
logWarning " Use MODRINTH_DOWNLOAD_DEPENDENCIES=optional instead"
|
logWarning " Use MODRINTH_DOWNLOAD_DEPENDENCIES=optional instead"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -v MODRINTH_PROJECTS ]]; then
|
if [[ $MODRINTH_PROJECTS ]]; then
|
||||||
|
|
||||||
if isType CUSTOM; then
|
if isType CUSTOM; then
|
||||||
if ! [[ $MODRINTH_LOADER ]]; then
|
if ! [[ $MODRINTH_LOADER ]]; then
|
||||||
@@ -284,7 +286,7 @@ function handleModrinthProjects() {
|
|||||||
--game-version="${VERSION}" \
|
--game-version="${VERSION}" \
|
||||||
--loader="$loader" \
|
--loader="$loader" \
|
||||||
--download-dependencies="$MODRINTH_DOWNLOAD_DEPENDENCIES" \
|
--download-dependencies="$MODRINTH_DOWNLOAD_DEPENDENCIES" \
|
||||||
--allowed-version-type="$MODRINTH_PROJECTS_DEFAULT_VERSION_TYPE"
|
--allowed-version-type="$MODRINTH_ALLOWED_VERSION_TYPE"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -313,7 +315,7 @@ function handleCurseForgeFiles() {
|
|||||||
# since we want CURSEFORGE_FILES to expand
|
# since we want CURSEFORGE_FILES to expand
|
||||||
mc-image-helper curseforge-files \
|
mc-image-helper curseforge-files \
|
||||||
"${args[@]}" \
|
"${args[@]}" \
|
||||||
"${CURSEFORGE_FILES}"
|
${CURSEFORGE_FILES}
|
||||||
}
|
}
|
||||||
|
|
||||||
handlePackwiz
|
handlePackwiz
|
||||||
@@ -364,4 +366,4 @@ case "X$MODCONFIG" in
|
|||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-setupMounts" "$@"
|
exec "${SCRIPTS:-/}start-setupMounts" "$@"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
|
|
||||||
: "${SYNC_SKIP_NEWER_IN_DESTINATION:=${PLUGINS_SYNC_UPDATE:-true}}"
|
: "${SYNC_SKIP_NEWER_IN_DESTINATION:=${PLUGINS_SYNC_UPDATE:-true}}"
|
||||||
: "${REPLACE_ENV_DURING_SYNC:=true}"
|
: "${REPLACE_ENV_DURING_SYNC:=true}"
|
||||||
@@ -58,4 +58,4 @@ fi
|
|||||||
log "Copying any configs from ${COPY_CONFIG_SRC} to ${COPY_CONFIG_DEST}"
|
log "Copying any configs from ${COPY_CONFIG_SRC} to ${COPY_CONFIG_DEST}"
|
||||||
mc-image-helper-mounts "${COPY_CONFIG_SRC}" "${COPY_CONFIG_DEST}"
|
mc-image-helper-mounts "${COPY_CONFIG_SRC}" "${COPY_CONFIG_DEST}"
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-setupServerProperties" "$@"
|
exec "${SCRIPTS:-/}start-setupServerProperties" "$@"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ IFS=$'\n\t'
|
|||||||
: "${EXISTING_WHITELIST_FILE:=SYNC_FILE_MERGE_LIST}"
|
: "${EXISTING_WHITELIST_FILE:=SYNC_FILE_MERGE_LIST}"
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
|
|
||||||
if [[ -v APPEND_OPS ]] && isTrue "${APPEND_OPS}"; then
|
if [[ -v APPEND_OPS ]] && isTrue "${APPEND_OPS}"; then
|
||||||
@@ -97,4 +97,4 @@ if [[ -v WHITELIST ]]; then
|
|||||||
$WHITELIST
|
$WHITELIST
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-finalExec" "$@"
|
exec "${SCRIPTS:-/}start-finalExec" "$@"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
|
|
||||||
: "${SERVER_PROPERTIES:=/data/server.properties}"
|
: "${SERVER_PROPERTIES:=/data/server.properties}"
|
||||||
: "${OVERRIDE_SERVER_PROPERTIES:=true}"
|
: "${OVERRIDE_SERVER_PROPERTIES:=true}"
|
||||||
@@ -179,4 +179,4 @@ if isTrue "${DUMP_SERVER_PROPERTIES:-false}"; then
|
|||||||
cat "${SERVER_PROPERTIES}"
|
cat "${SERVER_PROPERTIES}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-setupEnvVariables" "$@"
|
exec "${SCRIPTS:-/}start-setupEnvVariables" "$@"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
set -e
|
set -e
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
|
|
||||||
@@ -135,4 +135,4 @@ fi
|
|||||||
[[ -f ${worldDownload} ]] && rm ${worldDownload}
|
[[ -f ${worldDownload} ]] && rm ${worldDownload}
|
||||||
[[ -d ${tmpWorldData} ]] && rm -rf ${tmpWorldData}
|
[[ -d ${tmpWorldData} ]] && rm -rf ${tmpWorldData}
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-setupDatapack" "$@"
|
exec "${SCRIPTS:-/}start-setupDatapack" "$@"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ set -euo pipefail
|
|||||||
IFS=$'\n\t'
|
IFS=$'\n\t'
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
handleDebugMode
|
handleDebugMode
|
||||||
|
|
||||||
: "${SPIGET_RESOURCES:=}"
|
: "${SPIGET_RESOURCES:=}"
|
||||||
@@ -142,4 +142,4 @@ if [[ ${SPIGET_RESOURCES} ]]; then
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec "$(dirname "$0")/start-setupWorld" "$@"
|
exec "${SCRIPTS:-/}start-setupWorld" "$@"
|
||||||
|
|||||||
@@ -121,6 +121,17 @@ function log() {
|
|||||||
eval "$oldState"
|
eval "$oldState"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getSudoFromDistro(){
|
||||||
|
distro=$(getDistro)
|
||||||
|
command=
|
||||||
|
if [[ $distro == alpine ]]; then
|
||||||
|
command="su-exec"
|
||||||
|
else
|
||||||
|
command="gosu"
|
||||||
|
fi
|
||||||
|
echo $command
|
||||||
|
}
|
||||||
|
|
||||||
# Refer to https://unix.stackexchange.com/a/10065/102376
|
# Refer to https://unix.stackexchange.com/a/10065/102376
|
||||||
function isTerminal() {
|
function isTerminal() {
|
||||||
if test -t 1; then
|
if test -t 1; then
|
||||||
|
|||||||
@@ -1,2 +1 @@
|
|||||||
mc-image-helper assert fileExists "/data/NanoLimbo*.jar"
|
mc-image-helper assert fileExists "/data/NanoLimbo-*.jar"
|
||||||
mc-image-helper assert fileExists "/data/settings.yml"
|
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ image=""
|
|||||||
|
|
||||||
# Go through each folder in setuponly and test setups
|
# Go through each folder in setuponly and test setups
|
||||||
if (( $# == 0 )); then
|
if (( $# == 0 )); then
|
||||||
readarray -t folders < <(find . -maxdepth 2 -mindepth 2 -name docker-compose.yml -exec dirname "{}" \;)
|
readarray -t folders < <(find . -maxdepth 2 -mindepth 2 -name docker-compose.yml -printf '%h\n')
|
||||||
foldersList=("${folders[@]}")
|
foldersList=("${folders[@]}")
|
||||||
image=" using $IMAGE_TO_TEST"
|
image=" using $IMAGE_TO_TEST"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user