Compare commits

..

1 Commits

Author SHA1 Message Date
Geoff Bourne
288dc1f0b3 docs: avoid overly describing server properties 2025-06-23 20:14:50 -05:00
74 changed files with 346 additions and 583 deletions

View File

@@ -12,7 +12,6 @@ on:
- "examples/**" - "examples/**"
- "notes/**" - "notes/**"
- "kustomize/**" - "kustomize/**"
- "images.json"
jobs: jobs:
build: build:
@@ -30,8 +29,6 @@ jobs:
- java17 - java17
- java17-graalvm - java17-graalvm
- java17-alpine - java17-alpine
- java16
- java11
- java8 - java8
- java8-graalvm-ce - java8-graalvm-ce
- java8-openj9 - java8-openj9
@@ -77,41 +74,31 @@ jobs:
baseImage: eclipse-temurin:17-jre-alpine baseImage: eclipse-temurin:17-jre-alpine
platforms: linux/amd64 platforms: linux/amd64
mcVersion: 1.20.4 mcVersion: 1.20.4
# JAVA 16
- variant: java16
baseImage: adoptopenjdk:16-jre-hotspot
platforms: linux/amd64,linux/arm/v7,linux/arm64
mcVersion: 1.16.5
# JAVA 11
- variant: java11
baseImage: adoptopenjdk:11-jre-hotspot
platforms: linux/amd64,linux/arm/v7,linux/arm64
mcVersion: 1.16.4
# JAVA 8: NOTE: Unable to go past 8u312 because of Forge dependencies # JAVA 8: NOTE: Unable to go past 8u312 because of Forge dependencies
- variant: java8 - variant: java8
baseImage: eclipse-temurin:8u312-b07-jre-focal baseImage: eclipse-temurin:8u312-b07-jre-focal
platforms: linux/amd64,linux/arm/v7,linux/arm64 platforms: linux/amd64,linux/arm/v7,linux/arm64
mcVersion: 1.12.2 mcVersion: 1.12.2
# Pin version for Java 8 # Pin version for Java 8
# mcHelperVersion: 1.46.0 mcHelperVersion: 1.42.1
- variant: java8-graalvm-ce - variant: java8-graalvm-ce
baseImage: ghcr.io/graalvm/graalvm-ce:java8 baseImage: ghcr.io/graalvm/graalvm-ce:java8
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.46.0 mcHelperVersion: 1.42.1
- variant: java8-jdk - variant: java8-jdk
baseImage: eclipse-temurin:8u312-b07-jdk-focal baseImage: eclipse-temurin:8u312-b07-jdk-focal
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
mcVersion: 1.12.2 mcVersion: 1.12.2
# Pin version for Java 8 # Pin version for Java 8
# mcHelperVersion: 1.46.0 mcHelperVersion: 1.42.1
- variant: java8-openj9 - variant: java8-openj9
baseImage: ibm-semeru-runtimes:open-8u312-b07-jre baseImage: ibm-semeru-runtimes:open-8u312-b07-jre
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
mcVersion: 1.12.2 mcVersion: 1.12.2
# Pin version for Java 8 # Pin version for Java 8
# mcHelperVersion: 1.46.0 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 }}"
HAS_IMAGE_REPO_ACCESS: ${{ secrets.DOCKER_USER != '' && secrets.DOCKER_PASSWORD != '' }} HAS_IMAGE_REPO_ACCESS: ${{ secrets.DOCKER_USER != '' && secrets.DOCKER_PASSWORD != '' }}
@@ -126,7 +113,7 @@ jobs:
- name: Docker meta - name: Docker meta
id: meta id: meta
uses: docker/metadata-action@v5.8.0 uses: docker/metadata-action@v5.7.0
with: with:
# NOTE for forks: if your Docker Hub organization doesn't match your Github repo's, # NOTE for forks: if your Docker Hub organization doesn't match your Github repo's,
# then the use of ${{ github.repository_owner }} will need to be replaced. # then the use of ${{ github.repository_owner }} will need to be replaced.
@@ -186,14 +173,14 @@ jobs:
tests/test.sh tests/test.sh
- name: Login to DockerHub - name: Login to DockerHub
uses: docker/login-action@v3.5.0 uses: docker/login-action@v3.4.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.5.0 uses: docker/login-action@v3.4.0
if: env.HAS_IMAGE_REPO_ACCESS if: env.HAS_IMAGE_REPO_ACCESS
with: with:
registry: ghcr.io registry: ghcr.io

View File

@@ -11,7 +11,6 @@ on:
- "kustomize/**" - "kustomize/**"
- "docker-compose*.yml" - "docker-compose*.yml"
- "mkdocs.yml" - "mkdocs.yml"
- "images.json"
jobs: jobs:
build: build:

View File

@@ -33,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.2 ARG RCON_CLI_VERSION=1.7.1
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
@@ -48,7 +48,7 @@ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
--var version=${MC_SERVER_RUNNER_VERSION} --var app=mc-server-runner --file {{.app}} \ --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.48.10 ARG MC_HELPER_VERSION=1.45.0
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
@@ -65,7 +65,8 @@ STOPSIGNAL SIGTERM
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* / COPY --chmod=755 scripts/start* /
COPY --chmod=755 files/shims/ /usr/local/bin/ COPY --chmod=755 bin/ /usr/local/bin/
COPY --chmod=755 bin/mc-health /health.sh
COPY --chmod=755 files/* /image/ COPY --chmod=755 files/* /image/
COPY --chmod=755 files/auto /auto COPY --chmod=755 files/auto /auto

0
files/shims/mc-health → bin/mc-health Normal file → Executable file
View File

View File

0
files/shims/mcstatus → bin/mcstatus Normal file → Executable file
View File

View File

@@ -1,4 +1,4 @@
FROM python:3.11 FROM python:3.9
RUN pip install --upgrade pip RUN pip install --upgrade pip

View File

@@ -50,17 +50,9 @@ In order to attach and interact with the Minecraft server make sure to enable TT
tty: true tty: true
``` ```
With that you can attach and interact at any time using the following, replacing the `{...}` placeholders. With that you can attach and interact at any time using
...when container is created with `docker run` docker attach mc
```
docker attach {container name or ID}
```
...or when declared using a compose file
```
docker compose attach {service name}
```
and then Control-p Control-q to **detach**. and then Control-p Control-q to **detach**.

View File

@@ -107,7 +107,11 @@ such as:
## HTTP Proxy ## HTTP Proxy
You may configure the use of an HTTP/HTTPS proxy by passing the proxy's "host:port" via the environment variable `PROXY`. In [the example compose file](https://github.com/itzg/docker-minecraft-server/blob/master/examples/docker-compose-proxied.yml) it references a Squid proxy. The host and port can be separately passed via the environment variables `PROXY_HOST` and `PROXY_PORT`. A `|` delimited list of hosts to exclude from proxying can be passed via `PROXY_NON_PROXY_HOSTS`. You may configure the use of an HTTP/HTTPS proxy by passing the proxy's URL via the `PROXY`
environment variable. In [the example compose file](https://github.com/itzg/docker-minecraft-server/blob/master/examples/docker-compose-proxied.yml) it references
a companion squid proxy by setting the equivalent of
-e PROXY=proxy:3128
## Using "noconsole" option ## Using "noconsole" option

View File

@@ -84,19 +84,9 @@ To produce a multi-line MOTD, embed a newline character as `\n` in the string, s
# MOTD: "line one\nline two" # MOTD: "line one\nline two"
``` ```
The following example combines a multi-line MOTD with [placeholders](#placeholders) from the latest version of the installed modpack: !!! tip
!!! example You can also embed configured and resolved environment variables using [placeholders](#placeholders).
```yaml
MOD_PLATFORM: AUTO_CURSEFORGE
CF_SLUG: craftoria
MOTD: |
A %TYPE% server on %VERSION%
running %MODPACK_NAME% %MODPACK_VERSION%
```
![](../img/motd-with-placeholders.png)
### Difficulty ### Difficulty
@@ -256,7 +246,7 @@ By default, the server listens for RCON on port 25575 within the container. It c
### Query ### Query
Set the environment variable `ENABLE_QUERY` to "true" to enable the gamespy query protocol. Maps to the server property [enable-query](https://minecraft.wiki/w/Server.properties#enable-query). By default, the query port will be `25565` (UDP) but can be changed with the `QUERY_PORT` environment variable. Set the environment variable `QUERY_PORT` to "true" to enable the gamespy query protocol. Map to the server property [enable-query](https://minecraft.wiki/w/Server.properties#enable-query). By default, the query port will be `25565` (UDP) but can be changed with the `QUERY_PORT` environment variable.
### Level Seed ### Level Seed
@@ -312,28 +302,29 @@ Example for a superflat world:
- Desert biome - Desert biome
```yaml ```yaml
environment: LEVEL_TYPE: FLAT
LEVEL_TYPE: FLAT GENERATOR_SETTINGS: >-4
GENERATOR_SETTINGS: >- {
{ "layers": [
"layers": [ {
{ "block": "minecraft:bedrock",
"block": "minecraft:bedrock", "height": 1
"height": 1 },
}, {
{ "block": "minecraft:stone",
"block": "minecraft:stone", "height": 2
"height": 2 },
}, {
{ "block": "minecraft:sandstone",
"block": "minecraft:sandstone", "height": 15
"height": 15 }
} ],
], "biome": "minecraft:desert"
"biome": "minecraft:desert" }
}
``` ```
For more details, refer to the Minecraft Wiki sections for [Superflat Multiplayer](https://minecraft.wiki/w/Superflat#Multiplayer) and [generator options tag format](https://minecraft.wiki/w/Java_Edition_level_format#generatorOptions_tag_format). For more details, check the [official wiki](https://minecraft.wiki/w/Java_Edition_level_format#generatorOptions_tag_format).
### Custom Server Resource Pack ### Custom Server Resource Pack
@@ -396,43 +387,41 @@ 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) | | 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 |
| 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 |
| BROADCAST_RCON_TO_OPS | [broadcast-rcon-to-ops](https://minecraft.wiki/w/Server.properties#broadcast-rcon-to-ops) | | BUG_REPORT_LINK | 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 |
| ENABLE_STATUS | [enable-status](https://minecraft.wiki/w/Server.properties#enable-status) | | ENFORCE_SECURE_PROFILE | 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 |
| 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 |
| 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 |
| HIDE_ONLINE_PLAYERS | [hide-online-players](https://minecraft.wiki/w/Server.properties#hide-online-players) | | LOG_IPS | log-ips |
| LOG_IPS | [log-ips](https://minecraft.wiki/w/Server.properties#log-ips) | | MAX_CHAINED_NEIGHBOR_UPDATES | max-chained-neighbor-updates |
| MAX_CHAINED_NEIGHBOR_UPDATES | [max-chained-neighbor-updates](https://minecraft.wiki/w/Server.properties#max-chained-neighbor-updates) | | MAX_PLAYERS | [max-players](https://minecraft.wiki/w/Server.properties#max-players) |
| MAX_PLAYERS | [max-players](https://minecraft.wiki/w/Server.properties#max-players) | | MAX_TICK_TIME | [max-tick-time](https://minecraft.wiki/w/Server.properties#max-tick-time) |
| MAX_TICK_TIME | [max-tick-time](https://minecraft.wiki/w/Server.properties#max-tick-time) | | MAX_WORLD_SIZE | [max-world-size](https://minecraft.wiki/w/Server.properties#max-world-size) |
| MAX_WORLD_SIZE | [max-world-size](https://minecraft.wiki/w/Server.properties#max-world-size) | | NETWORK_COMPRESSION_THRESHOLD | network-compression-threshold |
| NETWORK_COMPRESSION_THRESHOLD | [network-compression-threshold](https://minecraft.wiki/w/Server.properties#network-compression-threshold) | | ONLINE_MODE | [online-mode](https://minecraft.wiki/w/Server.properties#online-mode) |
| ONLINE_MODE | [online-mode](https://minecraft.wiki/w/Server.properties#online-mode) | | OP_PERMISSION_LEVEL | op-permission-level |
| OP_PERMISSION_LEVEL | [op-permission-level](https://minecraft.wiki/w/Server.properties#op-permission-level) | | PAUSE_WHEN_EMPTY_SECONDS | pause-when-empty-seconds |
| PAUSE_WHEN_EMPTY_SECONDS | [pause-when-empty-seconds](https://minecraft.wiki/w/Server.properties#pause-when-empty-seconds) | | PLAYER_IDLE_TIMEOUT | player-idle-timeout |
| PLAYER_IDLE_TIMEOUT | [player-idle-timeout](https://minecraft.wiki/w/Server.properties#player-idle-timeout) | | PREVENT_PROXY_CONNECTIONS | prevent-proxy-connections |
| PREVENT_PROXY_CONNECTIONS | [prevent-proxy-connections](https://minecraft.wiki/w/Server.properties#prevent-proxy-connections) | | PVP | [pvp](https://minecraft.wiki/w/Server.properties#pvp) |
| PVP | [pvp](https://minecraft.wiki/w/Server.properties#pvp) | | REGION_FILE_COMPRESSION | region-file-compression |
| RATE_LIMIT | [rate-limit](https://minecraft.wiki/w/Server.properties#rate-limit) | | RESOURCE_PACK_ID | resource-pack-id |
| REGION_FILE_COMPRESSION | [region-file-compression](https://minecraft.wiki/w/Server.properties#region-file-compression) | | RESOURCE_PACK_PROMPT | resource-pack-prompt |
| RESOURCE_PACK_ID | [resource-pack-id](https://minecraft.wiki/w/Server.properties#resource-pack-id) | | SERVER_NAME | [server-name](https://minecraft.wiki/w/Server.properties#server-name) |
| RESOURCE_PACK_PROMPT | [resource-pack-prompt](https://minecraft.wiki/w/Server.properties#resource-pack-prompt) | | SIMULATION_DISTANCE | simulation-distance |
| SERVER_NAME | [server-name](https://minecraft.wiki/w/Server.properties#server-name) | | SPAWN_MONSTERS | [spawn-monsters](https://minecraft.wiki/w/Server.properties#spawn-monsters) |
| SIMULATION_DISTANCE | [simulation-distance](https://minecraft.wiki/w/Server.properties#simulation-distance) | | SPAWN_PROTECTION | [spawn-protection](https://minecraft.wiki/w/Server.properties#spawn-protection) |
| SPAWN_MONSTERS | [spawn-monsters](https://minecraft.wiki/w/Server.properties#spawn-monsters) | | SYNC_CHUNK_WRITES | sync-chunk-writes |
| SPAWN_PROTECTION | [spawn-protection](https://minecraft.wiki/w/Server.properties#spawn-protection) | | USE_NATIVE_TRANSPORT | use-native-transport |
| SYNC_CHUNK_WRITES | [sync-chunk-writes](https://minecraft.wiki/w/Server.properties#sync-chunk-writes) | | VIEW_DISTANCE | [view-distance](https://minecraft.wiki/w/Server.properties#view-distance) |
| 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: 44 KiB

View File

@@ -29,7 +29,7 @@ where, in this case, the standard server port 25565, will be exposed on your hos
**DO NOT** port forward RCON on 25575 without first setting `RCON_PASSWORD` to a secure value. It is highly recommended to only use RCON within the container, such as with `rcon-cli`. **DO NOT** port forward RCON on 25575 without first setting `RCON_PASSWORD` to a secure value. It is highly recommended to only use RCON within the container, such as with `rcon-cli`.
By default, the container will download the latest version of the "vanilla" [Minecraft: Java Edition server](https://www.minecraft.net/en-us/download/server) provided by Mojang. The [`VERSION`](versions/minecraft.md) and the [`TYPE`](types-and-platforms/index.md) can be configured to create many variations of desired Minecraft server. By default, the container will download the latest version of the "vanilla" [Minecraft: Java Edition server](https://www.minecraft.net/en-us/download/server) provided by Mojang. The [`VERSION`](versions/java.md) and the [`TYPE`](types-and-platforms/index.md) can be configured to create many variations of desired Minecraft server.
## Using [Docker Compose](https://docs.docker.com/compose/) ## Using [Docker Compose](https://docs.docker.com/compose/)

View File

@@ -1,8 +1,4 @@
# Auto-Pause # Auto-Pause
!!! important
As of [1.21.2](https://minecraft.wiki/w/Java_Edition_1.21.2) it is not recommend to use this feature since Minecraft server natively auto-pauses when the server is empty. That is configured via the enivironment variable `PAUSE_WHEN_EMPTY_SECONDS`, which maps to the `pause-when-empty-seconds` server property.
An auto-pause functionality is provided that monitors whether clients are connected to the server. If a client is not connected for a specified time, the Java process is put into a pause state. When a client attempts to connect while the process is paused, then process will be restored to a running state. The experience for the client does not change. This feature can be enabled by setting the environment variable `ENABLE_AUTOPAUSE` to "true". An auto-pause functionality is provided that monitors whether clients are connected to the server. If a client is not connected for a specified time, the Java process is put into a pause state. When a client attempts to connect while the process is paused, then process will be restored to a running state. The experience for the client does not change. This feature can be enabled by setting the environment variable `ENABLE_AUTOPAUSE` to "true".

View File

@@ -1,13 +1,7 @@
!!! tip "For advanced use only"
This page describes a capability that is not applicable to most users. It is only intended for rare cases when a very specific Java base image is needed or additional packages need to be installed that are not generally applicable or would bloat the image size.
Be sure to confirm that the desired [version and variant of Java isn't already provided](../versions/java.md).
## Building image locally with alternate Java base ## Building image locally with alternate Java base
An alternate Java base image can be specified by setting the [docker build argument](https://docs.docker.com/reference/cli/docker/buildx/build/#build-arg) `BASE_IMAGE` to the desired base image. The following shows an example of using the base image `ghcr.io/graalvm/graalvm-ce:ol8-java11`: The following shows how to change the base Java image used by the build:
```shell ```shell
docker build --build-arg BASE_IMAGE=ghcr.io/graalvm/graalvm-ce:ol8-java11 -t IMG_PREFIX/minecraft-server:java11-graalvm . docker build --build-arg BASE_IMAGE=ghcr.io/graalvm/graalvm-ce:ol8-java11 -t IMG_PREFIX/minecraft-server:java11-graalvm .

View File

@@ -7,14 +7,14 @@ CONTAINER ID IMAGE COMMAND CREATED
b418af073764 mc "/start" 43 seconds ago Up 41 seconds (healthy) 0.0.0.0:25565->25565/tcp, 25575/tcp mc b418af073764 mc "/start" 43 seconds ago Up 41 seconds (healthy) 0.0.0.0:25565->25565/tcp, 25575/tcp mc
``` ```
You can also query the container's health in a script-friendly way: You can also query the container's health in a script friendly way:
``` shell ``` shell
> docker container inspect -f "{{.State.Health.Status}}" mc > docker container inspect -f "{{.State.Health.Status}}" mc
healthy healthy
``` ```
There's actually a wrapper script called `mc-health` that takes care of calling `mc-monitor status` with the correct arguments. If needing to customize the health checks parameters, such as in a Compose file, then use something like the following in the service declaration: There's actually a wrapper script called `mc-health` that takes care of calling `mc-monitor status` with the correct arguments. If needing to customize the health checks parameters, such as in a compose file, then use something like the following in the service declaration:
``` yaml ``` yaml
healthcheck: healthcheck:
@@ -24,16 +24,9 @@ healthcheck:
retries: 20 retries: 20
``` ```
Some orchestration systems, such as Portainer, don't allow for disabling the default `HEALTHCHECK` declared by this image. In those cases you can approximate the disabling of health checks by setting the environment variable `DISABLE_HEALTHCHECK` to `true`. Some orchestration systems, such as Portainer, don't allow for disabling the default `HEALTHCHECK` declared by this image. In those cases you can approximate the disabling of healthchecks by setting the environment variable `DISABLE_HEALTHCHECK` to `true`.
The [health check in a Compose service declaration](https://docs.docker.com/reference/compose-file/services/#healthcheck) can also be disabled using: ### Healthchecks for older versions
```yaml This container disables Healthchecks for Versions before b1.8 as those versions do not support any kind of server pinging.
healthcheck: For more information see [Server List Ping](https://wiki.vg/Server_List_Ping#Beta_1.8_to_1.3)
disable: true
test: ["NONE"]
```
### Health checks for older versions
This container disables health checks for Minecraft versions before b1.8 as those versions do not support any kind of server pinging. For more information see [Server List Ping](https://minecraft.wiki/w/Java_Edition_protocol/Server_List_Ping#Beta_1.8_to_1.3).

View File

@@ -42,25 +42,6 @@
datapack:terralith datapack:terralith
``` ```
## 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`.
!!! example
Given the environment variables
```yaml
MODRINTH_PROJECTS: |
viaversion
viabackwards
griefprevention
discordsrv
VERSION_FROM_MODRINTH_PROJECTS: true
```
Let's say all are supported on Minecraft up to 1.21.8 except griefprevention, which is only supported up to 1.21.7. In that case, `VERSION` will be automatically set to 1.21.7.
## Extra options ## Extra options
`MODRINTH_DOWNLOAD_DEPENDENCIES` `MODRINTH_DOWNLOAD_DEPENDENCIES`
@@ -69,6 +50,3 @@ When the environment variable `VERSION_FROM_MODRINTH_PROJECTS` is set to "true"
`MODRINTH_ALLOWED_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`
: When using a custom server, set this to specify which loader type will be requested during lookups

View File

@@ -1,6 +1,6 @@
mkdocs-material == 9.6.16 mkdocs-material == 9.6.14
mkdocs-autorefs == 1.4.2 mkdocs-autorefs == 1.4.2
mkdocstrings[python] == 0.30.0 mkdocstrings[python] == 0.29.1
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

View File

@@ -12,7 +12,6 @@ To manage a CurseForge modpack automatically with upgrade support, pinned or lat
Example if your key is `$11$22$33aaaaaaaaaaaaaaaaaaaaaaaaaa`: Example if your key is `$11$22$33aaaaaaaaaaaaaaaaaaaaaaaaaa`:
```yaml ```yaml
# compose.yaml
environment: environment:
CF_API_KEY: '$$11$$22$$33aaaaaaaaaaaaaaaaaaaaaaaaaa' CF_API_KEY: '$$11$$22$$33aaaaaaaaaaaaaaaaaaaaaaaaaa'
``` ```
@@ -22,35 +21,17 @@ To manage a CurseForge modpack automatically with upgrade support, pinned or lat
docker run ... -e CF_API_KEY='$11$22$33aaaaaaaaaaaaaaaaaaaaaaaaaa' docker run ... -e CF_API_KEY='$11$22$33aaaaaaaaaaaaaaaaaaaaaaaaaa'
``` ```
To avoid exposing the API key, it is highly recommended to use a `.env` file, which is [loaded automatically by docker compose](https://docs.docker.com/compose/environment-variables/set-environment-variables/#substitute-with-an-env-file). You **do not** need to escape `$`'s with a second `$` in the `.env` file **as long as the key is wrapped in single quotes**. To avoid exposing the API key, it is highly recommended to use a `.env` file, which is [loaded automatically by docker compose](https://docs.docker.com/compose/environment-variables/set-environment-variables/#substitute-with-an-env-file). `$`'s in the value still need to escaped with a second `$` and the variable needs to be referenced from the compose file, such as:
```
# .env
CF_API_KEY='$11$22$33aaaaaaaaaaaaaaaaaaaaaaaaaa'
```
The variable should to be referenced from the compose file, such as:
```yaml ```yaml
# compose.yaml
environment: environment:
CF_API_KEY: ${CF_API_KEY} CF_API_KEY: ${CF_API_KEY}
``` ```
The .env file should be placed in the same directory as your compose file like so:
```
/minecraft-server
├── .env
├── compose.yaml
├── /data
```
To use the equivalent with `docker run` you need to specify the `.env` file explicitly: To use the equivalent with `docker run` you need to specify the `.env` file explicitly:
``` ```
docker run --env-file=.env itzg/minecraft-server docker run --env-file=.env itzg/minecraft-server
``` ```
Alternately you can use [docker secrets](https://docs.docker.com/compose/how-tos/use-secrets/) with a `CF_API_KEY_FILE` environment variable: Alternately you can use [docker secrets](https://docs.docker.com/compose/how-tos/use-secrets/) with a `CF_API_KEY_FILE` environment variable:
``` ```
service: service:
@@ -58,7 +39,7 @@ To manage a CurseForge modpack automatically with upgrade support, pinned or lat
CF_API_KEY_FILE: /run/secrets/cf_api_key CF_API_KEY_FILE: /run/secrets/cf_api_key
secrets: secrets:
- cf_api_key - cf_api_key
secrets: secrets:
cf_api_key: cf_api_key:
file: cf_api_key.secret file: cf_api_key.secret

View File

@@ -41,27 +41,21 @@ A specific loader or launcher version other than the latest can be requested usi
FABRIC_LOADER_VERSION: 0.13.1 FABRIC_LOADER_VERSION: 0.13.1
``` ```
!!! note !!! note "Fabric API"
See the [Working with mods and plugins](../../mods-and-plugins/index.md) section to set up Fabric mods and configuration. As [mentioned on the Fabric download page](https://fabricmc.net/use/installer/), most mods will require the Fabric API mod to be installed. That can be easily done by utilizing [the Modrinth downloads feature](../../mods-and-plugins/modrinth.md), such as adding this to the `environment` of a compose file service:
```yaml
TYPE: FABRIC
MODRINTH_PROJECTS: |
fabric-api
```
## Fabric API !!! note "Alternate launcher"
As [mentioned on the Fabric download page](https://fabricmc.net/use/installer/), most mods will require the Fabric API mod to be installed. That can be easily done by utilizing [the Modrinth downloads feature](../../mods-and-plugins/modrinth.md), such as adding this to the `environment` of a compose file service: If you wish to use an alternative launcher you can:
```yaml - Provide the path to a custom launcher jar available to the container with `FABRIC_LAUNCHER`, relative to `/data` (such as `-e FABRIC_LAUNCHER=fabric-server-custom.jar`)
TYPE: FABRIC - Provide the URL to a custom launcher jar with `FABRIC_LAUNCHER_URL` (such as `-e FABRIC_LAUNCHER_URL=http://HOST/fabric-server-custom.jar`)
MODRINTH_PROJECTS: |
fabric-api
```
## Alternate launcher See the [Working with mods and plugins](../../mods-and-plugins/index.md) section to set up Fabric mods and configuration.
If you wish to use an alternative launcher you can:
- Provide the path to a custom launcher jar available to the container with `FABRIC_LAUNCHER`, relative to `/data` (such as `-e FABRIC_LAUNCHER=fabric-server-custom.jar`)
- Provide the URL to a custom launcher jar with `FABRIC_LAUNCHER_URL` (such as `-e FABRIC_LAUNCHER_URL=http://HOST/fabric-server-custom.jar`)
## Force re-install
If the Fabric launcher jar becomes corrupted you can temporarily set FABRIC_FORCE_REINSTALL to "true" to have it re-installed on next startup.

View File

@@ -45,11 +45,6 @@ In both of the cases above, there is no need for the `VERSION` or `FORGE_VERSION
If an error occurred while installing Forge, it might be possible to resolve by temporarily setting `FORGE_FORCE_REINSTALL` to "true". Be sure to remove that variable after successfully starting the server. If an error occurred while installing Forge, it might be possible to resolve by temporarily setting `FORGE_FORCE_REINSTALL` to "true". Be sure to remove that variable after successfully starting the server.
URLs configurable via environment variables:
- `FORGE_PROMOTIONS_URL`: default is https://files.minecraftforge.net/net/minecraftforge/forge/promotions_slim.json
- `FORGE_MAVEN_REPO_URL`: default is https://maven.minecraftforge.net
## Alternatives ## Alternatives
### NeoForge ### NeoForge

View File

@@ -41,9 +41,7 @@ Configuration options with defaults:
## NanoLimbo ## NanoLimbo
A [NanoLimbo](https://github.com/BoomEaro/NanoLimbo) server can be run by setting `TYPE` to `NANOLIMBO`. A [NanoLimbo](https://github.com/Nan1t/NanoLimbo) server can be run by setting `TYPE` to `NANOLIMBO`.
Note: it is a fork of the original [NanoLimbo](https://github.com/Nan1t/NanoLimbo) made by Nan1t
An alternate Limbo server An alternate Limbo server

View File

@@ -126,7 +126,3 @@ If you have attached a host directory to the `/data` volume, then you can instal
!!! note !!! note
The Folia type inherits from the Paper type. Paper's variables will override the Folia ones. The Folia type inherits from the Paper type. Paper's variables will override the Folia ones.
## Extra config
- `SKIP_DOWNLOAD_DEFAULTS`: when set to "true" startup will entirely skip checking for default Paper/Bukkit/Spigot config files to download

View File

@@ -10,29 +10,29 @@ or explicitly include the tag, such as
where `<tag>` refers to the first column of this table: where `<tag>` refers to the first column of this table:
| Tag | Java version | Linux | JVM Type | Architecture | Note | | Tag | Java version | Linux | JVM Type | Architecture | Note |
|----------------|--------------|--------|--------------------|---------------------|------| |------------------|--------------|--------|--------------------|---------------------|------|
| latest | 21 | Ubuntu | Hotspot | amd64, arm64 | | | latest | 21 | Ubuntu | Hotspot | amd64, arm64 | |
| stable | 21 | Ubuntu | Hotspot | amd64, arm64 | | | stable | 21 | Ubuntu | Hotspot | amd64, arm64 | |
| java24 | 24 | Ubuntu | Hotspot | amd64, arm64 | (2) | | java24 | 24 | Ubuntu | Hotspot | amd64, arm64 | (2) |
| java24-graalvm | 24 | Oracle | Oracle GraalVM (3) | amd64, arm64 | (2) | | 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 | |
| java21-graalvm | 21 | Oracle | Oracle GraalVM (3) | amd64, arm64 | | | java21-graalvm | 21 | Oracle | Oracle GraalVM (3) | amd64, arm64 | |
| java17 | 17 | Ubuntu | Hotspot | amd64, arm64, armv7 | | | java17 | 17 | Ubuntu | Hotspot | amd64, arm64, armv7 | |
| java17-graalvm | 17 | Oracle | Oracle GraalVM (3) | amd64, arm64 | | | java17-graalvm | 17 | Oracle | Oracle GraalVM (3) | amd64, arm64 | |
| java17-alpine | 17 | Alpine | Hotspot | amd64 (1) | | | java17-alpine | 17 | Alpine | Hotspot | amd64 (1) | |
| java16 | 16 | Ubuntu | Hotspot | amd64, arm64, armv7 | (4) | | java8 | 8 | Ubuntu | Hotspot | amd64, arm64, armv7 | |
| java11 | 11 | Ubuntu | Hotspot | amd64, arm64, armv7 | | | java8-jdk | 8 | Ubuntu | Hotspot+JDK | amd64 | |
| java8 | 8 | Ubuntu | Hotspot | amd64, arm64, armv7 | | | java8-openj9 | 8 | Debian | OpenJ9 | amd64 | |
| java8-graalvm-ce | 8 | Oracle | GraalVM CE | amd64 | |
Notes Notes
1. Why no arm64 for Java 17 Alpine? That is because the base images, such as [elipse-temurin](https://hub.docker.com/_/eclipse-temurin/tags?page=&page_size=&ordering=&name=17-jre-alpine) do not provide support for that. Use the Ubuntu based images instead. 1. Why no arm64 for Java 17 Alpine? That is because the base images, such as [elipse-temurin](https://hub.docker.com/_/eclipse-temurin/tags?page=&page_size=&ordering=&name=17-jre-alpine) do not provide support for that. Use the Ubuntu based images instead.
2. Short-term variant, subject to deprecation upon next version introduction 2. Short-term variant, subject to deprecation upon next version introduction
3. Based on the [Oracle GraalMV images](https://blogs.oracle.com/java/post/new-oracle-graalvm-container-images), which as of JDK 17, are now under the [GraalVM Free License](https://blogs.oracle.com/java/post/graalvm-free-license) incorporating what used to be known as the GraalVM Enterprise. 3. Based on the [Oracle GraalMV images](https://blogs.oracle.com/java/post/new-oracle-graalvm-container-images), which as of JDK 17, are now under the [GraalVM Free License](https://blogs.oracle.com/java/post/graalvm-free-license) incorporating what used to be known as the GraalVM Enterprise.
4. This version of Java is [recommended for PaperMC 1.16.5](https://docs.papermc.io/paper/getting-started/#requirements)
!!! example "Example using java8" !!! example "Example using java8"
@@ -131,15 +131,12 @@ The following image tags have been deprecated and are no longer receiving update
- adopt15 - adopt15
- openj9-nightly - openj9-nightly
- multiarch-latest - multiarch-latest
- java16-openj9 - java11
- java16/java16-openj9
- java17-graalvm-ce - java17-graalvm-ce
- java17-openj9 - java17-openj9
- java19 - java19
- java20-graalvm, java20, java20-alpine - java20-graalvm, java20, java20-alpine
- java23-* - java23-*
- 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
## JSON Listing
Information about the image tags is available programmatically at <https://raw.githubusercontent.com/itzg/docker-minecraft-server/refs/heads/master/images.json>

View File

@@ -1,16 +0,0 @@
services:
mc:
image: itzg/minecraft-server:java8
environment:
EULA: "true"
MODPACK_PLATFORM: AUTO_CURSEFORGE
CF_SLUG: skyfactory-4
CF_FILENAME_MATCHER: 4.2.4
CF_API_KEY: ${CF_API_KEY}
MEMORY: 3G
ports:
- "25565:25565"
volumes:
- mc-data:/data
volumes:
mc-data:

View File

@@ -9,10 +9,12 @@ services:
EULA: true EULA: true
ALLOW_FLIGHT: true ALLOW_FLIGHT: true
MOD_PLATFORM: AUTO_CURSEFORGE MOD_PLATFORM: AUTO_CURSEFORGE
# Allocate API key from https://console.curseforge.com/
# and set in .env file making sure to double up dollar signs, such as
# CF_API_KEY=$$2a$$10$$....
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
CF_API_KEY: ${CF_API_KEY}
CF_SLUG: craftoria CF_SLUG: craftoria
MOTD: |
A %TYPE% server on %VERSION%
running %MODPACK_NAME% %MODPACK_VERSION%
MEMORY: 8G MEMORY: 8G
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

View File

@@ -0,0 +1,157 @@
####################################################################
# FORGE GENERIC_PACK #
# #
# Date: 20220828 #
# #
# Mod: TNP Limitless 5 v2.19.0 #
# #
# Notes: Verify that there is no EULA file in the modpack.zip #
# if you do not delete it the EULA flag below will be #
# overwritten when the modpack is copied and the server #
# will not start. #
# #
####################################################################
services:
####################################################################
# Service Name #
# #
# Define Service Name here. If using RCON this name will be #
# referenced again as RWA_RCON_HOST below. #
# #
# Example: 'name:' or 'mc_atm6:' #
####################################################################
mc_tnp5:
####################################################################
# Image & Container Name #
# #
# Specify Image Name and Java Version. The 'image' will always be #
# 'itzg/minecraft-server' however the tag added to the end is #
# where you can specify the java version or container architecture.#
# See readme.md for a full list. #
# #
# 'container_name:' This can be anything you like. This is the name#
# that will show when you run 'docker ps' commands. #
####################################################################
image: itzg/minecraft-server
container_name: mc_tnp5
####################################################################
# Server Ports #
# #
# Specify external port. #
####################################################################
ports:
- 25565:25565
####################################################################
# Automatic Server Restart #
# #
# Define a restart policy here. #
# - 'no' = Do not restart. #
# - 'on-failure' = Restart if container exits because an error. #
# - 'always' = Regardless of stop reason. #
# - 'unless-stopped' = Similar to always except if stopped. #
####################################################################
restart: unless-stopped
####################################################################
# Volume and Folder Access #
# #
# This section defines what folders and volumes you want to give #
# this container access to. It is recommended to leaves these set #
# to the default values unless you know what you are doing. #
# #
# Place your mod zip file in a folder called 'modpacks' in the #
# same directory you place this docker-compose file. #
# #
# Specify the data volume name or directory here as well. #
# In this example the volume name is 'data'. When docker creates #
# the volume it will add what ever name you give it here to the #
# end of the container name specified above. In this example it #
# would be named 'mc_atm6_data'. If you change this be sure to #
# update the volume name at the bottom of this config. #
####################################################################
volumes:
- ./modpacks:/modpacks:ro
- data:/data
####################################################################
# EULA #
# #
# Accept EULA by setting to "true" #
####################################################################
environment:
EULA: "true"
####################################################################
# FORGE INSTALL #
# #
# Sets install type to FORGE and specifys the zip folder name #
# and location of your mod pack. #
# #
# TYPE: Defines the install type as FORGE #
# #
# VERSION: Defines the version of MC the modpack is based on. #
# #
# FORGE_VERSION: Defines the version of FORGE the modpack uses. #
# This can usually be found in the modpack.zip as #
# installer.jar #
# #
# GENERIC_PACK: Define where the modpack.zip is located. #
# #
# Place your mod zip file in a folder called 'modpacks' in the #
# same directory you place this docker-compose file. #
####################################################################
TYPE: FORGE
VERSION: 1.18.2
FORGE_VERSION: 40.1.73
GENERIC_PACK: /modpacks/tnp5.zip
####################################################################
# Server Memory #
# #
# Set Maximum amount of memory allowed for your server. #
####################################################################
MEMORY: "8G"
####################################################################
# Logging Options #
# #
# Set to "true" to delete old logs #
####################################################################
ENABLE_ROLLING_LOGS: "true"
####################################################################
# Server Timezone #
# #
# Specify server Timezone #
####################################################################
TZ: "America/New_York"
####################################################################
# Minecraft Game Options #
# #
# List any game options you want to define here. A full list can #
# be found on the readme.md page on github. #
####################################################################
OVERRIDE_SERVER_PROPERTIES: "true"
DIFFICULTY: "easy"
MAX_TICK_TIME: "-1"
VIEW_DISTANCE: "6"
ALLOW_FLIGHT: "true"
OPS: ""
MAX_PLAYERS: 10
PVP: "false"
LEVEL_TYPE: "biomesoplenty"
MOTD: "Welcome Home"
####################################################################
# Volumes #
# #
# Define data volume name here. You should leave this set to the #
# default. #
####################################################################
volumes:
data:

View File

@@ -0,0 +1,19 @@
services:
mc:
image: itzg/minecraft-server:${IMAGE_TAG:-latest}
volumes:
- data:/data
- ./modpacks:/modpacks:ro
environment:
EULA: "true"
TYPE: FORGE
DEBUG: "${DEBUG:-false}"
VERSION: ${VERSION:-1.17.1}
FORGE_VERSION: ${FORGE_VERSION:-37.0.90}
GENERIC_PACK: /modpacks/${MODPACK:-Server-Files-0.0.21.zip}
REMOVE_OLD_MODS: "${REMOVE_OLD_MODS:-false}"
ports:
- "25565:25565"
volumes:
data: {}

View File

@@ -12,9 +12,6 @@ services:
# Use Pack ID from https://www.feed-the-beast.com/modpacks/119-ftb-presents-direwolf20-120?tab=about # Use Pack ID from https://www.feed-the-beast.com/modpacks/119-ftb-presents-direwolf20-120?tab=about
FTB_MODPACK_ID: "119" FTB_MODPACK_ID: "119"
# FTB_MODPACK_VERSION_ID: "" # FTB_MODPACK_VERSION_ID: ""
MOTD: |
An FTB server running
%MODPACK_NAME% version %MODPACK_VERSION%
MEMORY: 4G MEMORY: 4G
volumes: volumes:
# use a named, managed volume for data volume # use a named, managed volume for data volume

View File

@@ -1,15 +0,0 @@
services:
mc:
image: itzg/minecraft-server
environment:
EULA: true
TYPE: paper
MODRINTH_PROJECTS: |
viaversion
viabackwards
griefprevention
discordsrv
VERSION_FROM_MODRINTH_PROJECTS: true
MEMORY: 2G
ports:
- "25565:25565"

View File

@@ -1,16 +0,0 @@
services:
mc:
image: itzg/minecraft-server
tty: true
stdin_open: true
environment:
EULA: true
# Match loader from versions section of https://github.com/packwiz/packwiz-example-pack/blob/v1/pack.toml
TYPE: QUILT
VERSION: "1.19"
QUILT_LOADER_VERSION: "0.17.0"
PACKWIZ_URL: https://raw.githubusercontent.com/packwiz/packwiz-example-pack/refs/heads/v1/pack.toml
volumes:
- ./data:/data
ports:
- "25565:25565"

View File

@@ -18,7 +18,6 @@
"better-tips-nbt-tag", "better-tips-nbt-tag",
"betterf3", "betterf3",
"betterfps", "betterfps",
"bettergrassify",
"biomeinfo", "biomeinfo",
"block-drops-jei-addon", "block-drops-jei-addon",
"blur-forge", "blur-forge",
@@ -28,7 +27,6 @@
"chunk-animator", "chunk-animator",
"clickable-advancements", "clickable-advancements",
"compass-coords", "compass-coords",
"config-menus-forge",
"configured", "configured",
"controllable", "controllable",
"controlling", "controlling",
@@ -38,7 +36,6 @@
"dark-mode-everywhere", "dark-mode-everywhere",
"defensive-measures", "defensive-measures",
"ding", "ding",
"distraction-free-recipes",
"drippy-loading-screen", "drippy-loading-screen",
"dynamic-surroundings", "dynamic-surroundings",
"dynamic-view", "dynamic-view",
@@ -65,8 +62,6 @@
"fancymenu", "fancymenu",
"farsight", "farsight",
"faster-ladder-climbing", "faster-ladder-climbing",
"fastquit",
"fastquit-forge",
"flerovium", "flerovium",
"foamfix-optimization-mod", "foamfix-optimization-mod",
"forgeskyboxes", "forgeskyboxes",
@@ -112,8 +107,6 @@
"overloaded-armor-bar", "overloaded-armor-bar",
"packmenu", "packmenu",
"packmodemenu", "packmodemenu",
"particle-effects",
"particle-effects-reforged",
"particular", "particular",
"particular-reforged", "particular-reforged",
"reauth", "reauth",
@@ -157,10 +150,8 @@
"vanillafix", "vanillafix",
"visuality", "visuality",
"waila-harvestability", "waila-harvestability",
"waila-stages",
"wakes-reforged", "wakes-reforged",
"wawla", "wawla",
"welcome-screen",
"xaeroplus", "xaeroplus",
"yungs-menu-tweaks", "yungs-menu-tweaks",
"zume" "zume"

View File

@@ -11,8 +11,6 @@
"BadOptimizations", "BadOptimizations",
"BetterAdvancements", "BetterAdvancements",
"betterbeds", "betterbeds",
"BetterF3",
"BetterGrassify",
"BetterThirdPerson", "BetterThirdPerson",
"BHMenu", "BHMenu",
"blur", "blur",
@@ -24,21 +22,14 @@
"cherishedworlds", "cherishedworlds",
"citresewn", "citresewn",
"clickadv", "clickadv",
"cobblemon-ui-tweaks",
"compass-coords", "compass-coords",
"connectedness", "connectedness",
"connector", "connector",
"continuity",
"controlling",
"craftpresence", "craftpresence",
"cwb", "cwb",
"DisableCustomWorldsAdvice", "DisableCustomWorldsAdvice",
"distraction_free_recipes",
"drippyloadingscreen", "drippyloadingscreen",
"eating-animation", "eating-animation",
"emi",
"emi_loot",
"emi_trade",
"emiffect", "emiffect",
"emitrades", "emitrades",
"entity_model_features", "entity_model_features",
@@ -48,17 +39,14 @@
"fallingleaves", "fallingleaves",
"fancymenu", "fancymenu",
"fast-ip-ping", "fast-ip-ping",
"fastquit",
"FauxCustomEntityData", "FauxCustomEntityData",
"feytweaks", "feytweaks",
"figura", "figura",
"ForgeConfigScreens",
"GeckoLibIrisCompat", "GeckoLibIrisCompat",
"gpumemleakfix", "gpumemleakfix",
"Highlighter", "Highlighter",
"ImmediatelyFast", "ImmediatelyFast",
"indium", "indium",
"inventory-profiles-next",
"iris", "iris",
"iris-flywheel", "iris-flywheel",
"ItemBorders", "ItemBorders",
@@ -78,10 +66,9 @@
"PickUpNotifier", "PickUpNotifier",
"PresenceFootsteps", "PresenceFootsteps",
"Prism", "Prism",
"reeses_sodium_options",
"reforgium", "reforgium",
"reeses_sodium_options",
"ResourcePackOverrides", "ResourcePackOverrides",
"roughly-enough-items",
"ryoamiclights", "ryoamiclights",
"screenshot_viewer", "screenshot_viewer",
"Searchables", "Searchables",
@@ -90,24 +77,13 @@
"skinlayers3d", "skinlayers3d",
"sodium", "sodium",
"sorted_enchantments", "sorted_enchantments",
"tooltipfix",
"visuality", "visuality",
"VR-Combat", "VR-Combat",
"WailaStages",
"welcomescreen",
"Xaeros_Minimap",
"XaerosWorldMap",
"YeetusExperimentus", "YeetusExperimentus",
"yungsmenutweaks", "yungsmenutweaks",
"Zoomify", "Zoomify",
"zume" "zume"
], ],
"globalForceIncludes": [], "globalForceIncludes": [],
"modpacks": { "modpacks": {}
"cobbleverse": {
"excludes": [
"cloth-config"
]
}
}
} }

View File

@@ -1,11 +1,10 @@
{ {
"accepts-transfers": {"env": "ACCEPTS_TRANSFERS"},
"allow-flight": {"env": "ALLOW_FLIGHT"}, "allow-flight": {"env": "ALLOW_FLIGHT"},
"allow-nether": {"env": "ALLOW_NETHER"}, "allow-nether": {"env": "ALLOW_NETHER"},
"bug-report-link": {"env": "BUG_REPORT_LINK"},
"announce-player-achievements": {"env": "ANNOUNCE_PLAYER_ACHIEVEMENTS"}, "announce-player-achievements": {"env": "ANNOUNCE_PLAYER_ACHIEVEMENTS"},
"broadcast-console-to-ops": {"env": "BROADCAST_CONSOLE_TO_OPS"}, "broadcast-console-to-ops": {"env": "BROADCAST_CONSOLE_TO_OPS"},
"broadcast-rcon-to-ops": {"env": "BROADCAST_RCON_TO_OPS"}, "broadcast-rcon-to-ops": {"env": "BROADCAST_RCON_TO_OPS"},
"bug-report-link": {"env": "BUG_REPORT_LINK"},
"difficulty": {"env": "DIFFICULTY"}, "difficulty": {"env": "DIFFICULTY"},
"enable-command-block": {"env": "ENABLE_COMMAND_BLOCK"}, "enable-command-block": {"env": "ENABLE_COMMAND_BLOCK"},
"enable-jmx-monitoring": {"env": "ENABLE_JMX"}, "enable-jmx-monitoring": {"env": "ENABLE_JMX"},
@@ -43,15 +42,14 @@
"previews-chat": {"env": "PREVIEWS_CHAT"}, "previews-chat": {"env": "PREVIEWS_CHAT"},
"pvp": {"env": "PVP"}, "pvp": {"env": "PVP"},
"query.port": {"env": "QUERY_PORT"}, "query.port": {"env": "QUERY_PORT"},
"rate-limit": {"env": "RATE_LIMIT"},
"rcon.password": {"env": "RCON_PASSWORD"}, "rcon.password": {"env": "RCON_PASSWORD"},
"rcon.port": {"env": "RCON_PORT"}, "rcon.port": {"env": "RCON_PORT"},
"region-file-compression": {"env": "REGION_FILE_COMPRESSION"}, "region-file-compression": {"env": "REGION_FILE_COMPRESSION"},
"require-resource-pack": {"env": "RESOURCE_PACK_ENFORCE"}, "resource-pack": {"env": "RESOURCE_PACK"},
"resource-pack-id": {"env": "RESOURCE_PACK_ID"}, "resource-pack-id": {"env": "RESOURCE_PACK_ID"},
"resource-pack-prompt": {"env": "RESOURCE_PACK_PROMPT"}, "resource-pack-prompt": {"env": "RESOURCE_PACK_PROMPT"},
"resource-pack-sha1": {"env": "RESOURCE_PACK_SHA1"}, "resource-pack-sha1": {"env": "RESOURCE_PACK_SHA1"},
"resource-pack": {"env": "RESOURCE_PACK"}, "require-resource-pack": {"env": "RESOURCE_PACK_ENFORCE"},
"server-ip": {"env": "SERVER_IP"}, "server-ip": {"env": "SERVER_IP"},
"server-name": {"env": "SERVER_NAME"}, "server-name": {"env": "SERVER_NAME"},
"server-port": {"env": "SERVER_PORT"}, "server-port": {"env": "SERVER_PORT"},

View File

@@ -1,134 +0,0 @@
[
{
"tag": "latest",
"notes": "Always tracks the most recent commit on the main branch",
"java": "21",
"distribution": "ubuntu",
"jvm": "hotspot",
"architectures": ["amd64", "arm64"],
"lts": true
},
{
"tag": "stable",
"notes": "Always tracks the most recent release",
"java": "21",
"distribution": "ubuntu",
"jvm": "hotspot",
"architectures": ["amd64", "arm64"],
"lts": true
},
{
"tag": "java24",
"java": "24",
"distribution": "ubuntu",
"jvm": "hotspot",
"architectures": ["amd64", "arm64"]
},
{
"tag": "java24-graalvm",
"java": "24",
"distribution": "oracle",
"jvm": "graalvm",
"architectures": ["amd64", "arm64"]
},
{
"tag": "java21",
"java": "21",
"distribution": "ubuntu",
"jvm": "hotspot",
"architectures": ["amd64", "arm64"],
"lts": true
},
{
"tag": "java21-alpine",
"java": "21",
"distribution": "alpine",
"jvm": "hotspot",
"architectures": ["amd64", "arm64"]
},
{
"tag": "java21-graalvm",
"java": "21",
"distribution": "oracle",
"jvm": "graalvm",
"architectures": ["amd64", "arm64"],
},
{
"tag": "java21-jdk",
"java": "21",
"distribution": "ubuntu",
"jvm": "hotspot",
"architectures": ["amd64", "arm64"],
"jdk": true
},
{
"tag": "java21-graalvm",
"java": "21",
"distribution": "oracle",
"jvm": "graalvm",
"architectures": ["amd64", "arm64"],
},
{
"tag": "java17",
"java": "17",
"distribution": "ubuntu",
"jvm": "hotspot",
"architectures": ["amd64", "arm64"],
"lts": true
},
{
"tag": "java17-alpine",
"java": "17",
"distribution": "alpine",
"jvm": "hotspot",
"architectures": ["amd64", "arm64"]
},
{
"tag": "java17-graalvm",
"java": "17",
"distribution": "oracle",
"jvm": "graalvm",
"architectures": ["amd64", "arm64"]
},
{
"tag": "java16",
"java": "16",
"distribution": "ubuntu",
"jvm": "hotspot",
"architectures": ["amd64", "arm64", "armv7"]
},
{
"tag": "java11",
"java": "11",
"distribution": "ubuntu",
"jvm": "hotspot",
"architectures": ["amd64", "arm64", "armv7"],
"lts": true
},
{
"tag": "java8",
"java": "8",
"distribution": "ubuntu",
"jvm": "hotspot",
"architectures": ["amd64", "arm64", "armv7"],
"lts": true
},
{"tag": "adopt13", "deprecated": true},
{"tag": "adopt14", "deprecated": true},
{"tag": "adopt15", "deprecated": true},
{"tag": "openj9-nightly", "deprecated": true},
{"tag": "multiarch-latest", "deprecated": true},
{"tag": "java16-openj9", "deprecated": true},
{"tag": "java17-graalvm-ce", "deprecated": true},
{"tag": "java17-openj9", "deprecated": true},
{"tag": "java19", "deprecated": true},
{"tag": "java20-graalvm", "deprecated": true},
{"tag": "java20", "deprecated": true},
{"tag": "java20-alpine", "deprecated": true},
{"tag": "java23", "deprecated": true},
{"tag": "java8-multiarch", "deprecated": true},
{"tag": "java8-alpine", "deprecated": true},
{"tag": "java8-jdk", "deprecated": true},
{"tag": "java8-openj9", "deprecated": true},
{"tag": "java8-graalvm-ce", "deprecated": true}
]

View File

@@ -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 -parts uname -a
free -m free -m
fi fi
@@ -101,38 +101,21 @@ if isTrue "${ENABLE_AUTOPAUSE}" && isTrue "${ENABLE_AUTOSTOP}"; then
exit 1 exit 1
fi fi
proxyArgs=()
if [[ $PROXY ]]; then if [[ $PROXY ]]; then
export http_proxy="$PROXY" export http_proxy="$PROXY"
export https_proxy="$PROXY" export https_proxy="$PROXY"
export JAVA_TOOL_OPTIONS+="-Djava.net.useSystemProxies=true"
IFS=":" log "INFO: Giving proxy time to startup..."
read -ra parts <<< "$PROXY" sleep 5
IFS=" "
: "${PROXY_HOST=$(firstArrayElement parts)}"
shiftArray parts
: "${PROXY_PORT=$(firstArrayElement parts)}"
fi fi
# https://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html
proxyArgs=()
function addToProxyArgs() {
if [[ $2 ]]; then
proxyArgs+=("-D$1=$2")
fi
}
addToProxyArgs http.proxyHost "${PROXY_HOST:-}"
addToProxyArgs http.proxyPort "${PROXY_PORT:-}"
addToProxyArgs http.nonProxyHosts "${PROXY_NON_PROXY_HOSTS:-}"
export MC_IMAGE_HELPER_OPTS+=" ${proxyArgs[*]}"
function fixJavaPath() { function fixJavaPath() {
# Some Docker management UIs grab all the image declared variables and present them for configuration. # Some Docker management UIs grab all the image declared variables and present them for configuration.
# When upgrading images across Java versions, that creates parts mismatch in PATH's expected by base image. # When upgrading images across Java versions, that creates a mismatch in PATH's expected by base image.
if ! which java > /dev/null; then if ! which java > /dev/null; then
logError " Your Docker provider has an annoying flaw where it" logError " Your Docker provider has an annoying flaw where it"
logError " tries to set PATH even though the container establishes" logError " tries to set PATH even though the container establishes"
logError " parts very specific value." logError " a very specific value."
sleep 2 sleep 2
# now find where java might be # now find where java might be
for d in /opt/java/openjdk/bin /usr/bin; do for d in /opt/java/openjdk/bin /usr/bin; do
@@ -156,15 +139,6 @@ cd /data || exit 1
export DECLARED_TYPE=${TYPE^^} export DECLARED_TYPE=${TYPE^^}
export DECLARED_VERSION="$VERSION" export DECLARED_VERSION="$VERSION"
if isTrue "${VERSION_FROM_MODRINTH_PROJECTS:-}" && [[ ${MODRINTH_PROJECTS:-} ]]; then
if ! VERSION=$(mc-image-helper version-from-modrinth-projects --projects "${MODRINTH_PROJECTS}"); then
logError "failed to resolve version from MODRINTH_PROJECTS: ${MODRINTH_PROJECTS}"
exit 1
fi
log "Resolved Minecraft version $VERSION from Modrinth projects"
export VERSION
fi
if isTrue "${ENABLE_AUTOPAUSE}"; then if isTrue "${ENABLE_AUTOPAUSE}"; then
"${SCRIPTS:-/}start-autopause" "${SCRIPTS:-/}start-autopause"
fi fi

View File

@@ -36,12 +36,6 @@ function getModLoaderVersion() {
function getMinecraftVersion() { function getMinecraftVersion() {
jq -r ".modPackTargets.mcVersion" ${ftbManifest} jq -r ".modPackTargets.mcVersion" ${ftbManifest}
} }
function getModpackName() {
jq -r ".name" ${ftbManifest}
}
function getModpackVersion() {
jq -r ".versionName" ${ftbManifest}
}
if [[ $(getDistro) = alpine ]]; then if [[ $(getDistro) = alpine ]]; then
logError "The FTBA installer is not supported on Alpine. Use the java8-multiarch image tag instead." logError "The FTBA installer is not supported on Alpine. Use the java8-multiarch image tag instead."
@@ -108,9 +102,7 @@ modLoader="$(getModLoaderName)"
modLoaderVersion="$(getModLoaderVersion)" modLoaderVersion="$(getModLoaderVersion)"
mcVersion=$(getMinecraftVersion) mcVersion=$(getMinecraftVersion)
VERSION="$mcVersion" VERSION="$mcVersion"
MODPACK_NAME=$(getModpackName) export VERSION
MODPACK_VERSION=$(getModpackVersion)
export VERSION MODPACK_NAME MODPACK_VERSION
variants=( variants=(
run.sh run.sh

View File

@@ -9,24 +9,15 @@ export TYPE=FABRIC
: "${FABRIC_LAUNCHER:=}" : "${FABRIC_LAUNCHER:=}"
: "${FABRIC_LAUNCHER_URL:=}" : "${FABRIC_LAUNCHER_URL:=}"
: "${FABRIC_LOADER_VERSION:=LATEST}" : "${FABRIC_LOADER_VERSION:=LATEST}"
: "${FABRIC_FORCE_REINSTALL:=false}"
resultsFile=/data/.install-fabric.env resultsFile=/data/.install-fabric.env
isDebugging && set -x isDebugging && set -x
commonArgs=(
--results-file="${resultsFile}"
)
if isTrue "${FABRIC_FORCE_REINSTALL}"; then
log "Forcing re-install of Fabric"
commonArgs+=(--force-reinstall)
fi
# Custom fabric jar # Custom fabric jar
if [[ $FABRIC_LAUNCHER ]]; then if [[ $FABRIC_LAUNCHER ]]; then
if ! mc-image-helper install-fabric-loader \ if ! mc-image-helper install-fabric-loader \
"${commonArgs[@]}" \ --results-file=${resultsFile} \
--from-local-file="$FABRIC_LAUNCHER"; then --from-local-file="$FABRIC_LAUNCHER"; then
logError "Failed to use provided Fabric launcher" logError "Failed to use provided Fabric launcher"
exit 1 exit 1
@@ -35,7 +26,7 @@ if [[ $FABRIC_LAUNCHER ]]; then
# Custom fabric jar url # Custom fabric jar url
elif [[ $FABRIC_LAUNCHER_URL ]]; then elif [[ $FABRIC_LAUNCHER_URL ]]; then
if ! mc-image-helper install-fabric-loader \ if ! mc-image-helper install-fabric-loader \
"${commonArgs[@]}" \ --results-file=${resultsFile} \
--from-url="$FABRIC_LAUNCHER_URL"; then --from-url="$FABRIC_LAUNCHER_URL"; then
logError "Failed to installFabric launcher from $FABRIC_LAUNCHER_URL" logError "Failed to installFabric launcher from $FABRIC_LAUNCHER_URL"
exit 1 exit 1
@@ -44,7 +35,7 @@ elif [[ $FABRIC_LAUNCHER_URL ]]; then
# Official fabric launcher # Official fabric launcher
else else
if ! mc-image-helper install-fabric-loader \ if ! mc-image-helper install-fabric-loader \
"${commonArgs[@]}" \ --results-file=${resultsFile} \
--minecraft-version="${VERSION}" \ --minecraft-version="${VERSION}" \
--installer-version="${FABRIC_LAUNCHER_VERSION}" \ --installer-version="${FABRIC_LAUNCHER_VERSION}" \
--loader-version="${FABRIC_LOADER_VERSION}"; then --loader-version="${FABRIC_LOADER_VERSION}"; then

View File

@@ -14,7 +14,6 @@ resultsFile=/data/.install-modrinth.env
: "${MODRINTH_FORCE_INCLUDE_FILES=}" : "${MODRINTH_FORCE_INCLUDE_FILES=}"
: "${MODRINTH_OVERRIDES_EXCLUSIONS=}" : "${MODRINTH_OVERRIDES_EXCLUSIONS=}"
: "${MODRINTH_DEFAULT_EXCLUDE_INCLUDES=/image/modrinth-exclude-include.json}" : "${MODRINTH_DEFAULT_EXCLUDE_INCLUDES=/image/modrinth-exclude-include.json}"
: "${MODRINTH_FORCE_MODLOADER_REINSTALL:=${FORCE_MODLOADER_REINSTALL:-false}}"
if [[ ! $MODRINTH_MODPACK ]]; then if [[ ! $MODRINTH_MODPACK ]]; then
logError "MODRINTH_MODPACK must be set when using TYPE/MODPACK_PLATFORM/MOD_PLATFORM of MODRINTH" logError "MODRINTH_MODPACK must be set when using TYPE/MODPACK_PLATFORM/MOD_PLATFORM of MODRINTH"
@@ -34,9 +33,6 @@ args=(
if [[ $MODRINTH_IGNORE_MISSING_FILES ]]; then if [[ $MODRINTH_IGNORE_MISSING_FILES ]]; then
args+=(--ignore-missing-files "$MODRINTH_IGNORE_MISSING_FILES") args+=(--ignore-missing-files "$MODRINTH_IGNORE_MISSING_FILES")
fi fi
if isTrue "${MODRINTH_FORCE_MODLOADER_REINSTALL}"; then
args+=(--force-modloader-reinstall)
fi
case "${VERSION^^}" in case "${VERSION^^}" in
LATEST) LATEST)

View File

@@ -7,7 +7,7 @@ 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 Nan1t/NanoLimbo
); then ); then
logError "Failed to download NanoLimbo" logError "Failed to download NanoLimbo"
exit 1 exit 1

View File

@@ -10,7 +10,7 @@ handleDebugMode
: "${PAPER_CHANNEL:=default}" : "${PAPER_CHANNEL:=default}"
: "${PAPER_DOWNLOAD_URL:=}" : "${PAPER_DOWNLOAD_URL:=}"
: "${PAPER_CUSTOM_JAR:=}" : "${PAPER_CUSTOM_JAR:=}"
: "${PAPER_CONFIG_DEFAULTS_REPO:=${PAPER_CONFIG_REPO:=https://raw.githubusercontent.com/Shonz1/minecraft-default-configs/main}}" : "${PAPER_CONFIG_DEFAULTS_REPO:=${PAPER_CONFIG_REPO:=https://raw.githubusercontent.com/dayyeeet/minecraft-default-configs/main}}"
resultsFile=/data/.paper.env resultsFile=/data/.paper.env
if [[ $PAPER_CUSTOM_JAR ]]; then if [[ $PAPER_CUSTOM_JAR ]]; then

View File

@@ -21,9 +21,7 @@ PUFFERFISH_BUILD_JSON=$(curl -X GET -s "https://ci.pufferfish.host/job/Pufferfis
PUFFERFISH_BUILD_URL=$(jq -n "$PUFFERFISH_BUILD_JSON" | jq -jc '.url // empty' ) PUFFERFISH_BUILD_URL=$(jq -n "$PUFFERFISH_BUILD_JSON" | jq -jc '.url // empty' )
# Example: "fileName": "pufferfish-paperclip-1.18.2-R0.1-SNAPSHOT-reobf.jar", # Example: "fileName": "pufferfish-paperclip-1.18.2-R0.1-SNAPSHOT-reobf.jar",
PUFFERFISH_BUILD_FILENAME=$(jq -n "$PUFFERFISH_BUILD_JSON" | jq -jc '.artifacts[].fileName // empty' ) PUFFERFISH_BUILD_FILENAME=$(jq -n "$PUFFERFISH_BUILD_JSON" | jq -jc '.artifacts[].fileName // empty' )
# Example: "relativePath": "pufferfish-server/build/libs/pufferfish-paperclip-1.21.7-R0.1-SNAPSHOT-mojmap.jar", PUFFERFISH_BUILD_DOWNLOAD_URL="${PUFFERFISH_BUILD_URL}artifact/build/libs/${PUFFERFISH_BUILD_FILENAME}"
PUFFERFISH_BUILD_PATH=$(jq -n "$PUFFERFISH_BUILD_JSON" | jq -jc '.artifacts[].relativePath // empty' )
PUFFERFISH_BUILD_DOWNLOAD_URL="${PUFFERFISH_BUILD_URL}artifact/${PUFFERFISH_BUILD_PATH}"
# Setting server to the Jar filename for export. # Setting server to the Jar filename for export.
export SERVER=$PUFFERFISH_BUILD_FILENAME export SERVER=$PUFFERFISH_BUILD_FILENAME

View File

@@ -14,9 +14,7 @@ handleDebugMode
: "${REPLACE_ENV_VARIABLES_EXCLUDE_PATHS:=}" : "${REPLACE_ENV_VARIABLES_EXCLUDE_PATHS:=}"
: "${PATCH_DEFINITIONS:=}" : "${PATCH_DEFINITIONS:=}"
: "${DEBUG:=false}" : "${DEBUG:=false}"
: "${DOWNLOAD_DEFAULTS:=}"
: "${DOWNLOAD_DEFAULT_CONFIGS:=}" : "${DOWNLOAD_DEFAULT_CONFIGS:=}"
: "${SKIP_DOWNLOAD_DEFAULTS:=false}"
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' ..."
@@ -29,28 +27,22 @@ if isTrue "${REPLACE_ENV_IN_PLACE}"; then
"${REPLACE_ENV_PATHS[@]}" "${REPLACE_ENV_PATHS[@]}"
fi fi
if isFalse "$SKIP_DOWNLOAD_DEFAULTS"; then if [[ $DOWNLOAD_DEFAULT_CONFIGS ]]; then
commonArgs=( log "Downloading default configs, if needed"
--skip-existing if ! mc-image-helper mcopy \
--skip-up-to-date=false --to /data/config \
--quiet-when-skipped --skip-existing --skip-up-to-date=false \
--ignore-missing-sources "$DOWNLOAD_DEFAULT_CONFIGS" 2> /dev/null; then
) logWarning "One or more default config files were not available from $DOWNLOAD_DEFAULT_CONFIGS"
if [[ $DOWNLOAD_DEFAULT_CONFIGS ]]; then
if ! mc-image-helper mcopy \
--to /data/config \
"${commonArgs[@]}" \
"$DOWNLOAD_DEFAULT_CONFIGS"; then
logWarning "One or more default config files were not available from $DOWNLOAD_DEFAULT_CONFIGS"
fi
fi fi
if [[ $DOWNLOAD_DEFAULTS ]]; then fi
if ! mc-image-helper mcopy \ if [[ $DOWNLOAD_DEFAULTS ]]; then
--to /data \ log "Downloading default top-level configs, if needed"
"${commonArgs[@]}" \ if ! mc-image-helper mcopy \
"$DOWNLOAD_DEFAULTS"; then --to /data \
logWarning "One or more default files were not available from $DOWNLOAD_DEFAULTS" --skip-existing --skip-up-to-date=false \
fi "$DOWNLOAD_DEFAULTS" 2> /dev/null; then
logWarning "One or more default files were not available from $DOWNLOAD_DEFAULTS"
fi fi
fi fi

View File

@@ -12,7 +12,6 @@ set -e -o pipefail
: "${REMOVE_OLD_MODS_DEPTH:=1} " : "${REMOVE_OLD_MODS_DEPTH:=1} "
: "${REMOVE_OLD_MODS_INCLUDE:=*.jar,*-version.json}" : "${REMOVE_OLD_MODS_INCLUDE:=*.jar,*-version.json}"
: "${CF_API_KEY_FILE:=}" # Path to file containing CurseForge API key : "${CF_API_KEY_FILE:=}" # Path to file containing CurseForge API key
: "${MODRINTH_LOADER:=}"
sum_file=/data/.generic_pack.sum sum_file=/data/.generic_pack.sum
if [[ -n ${CF_API_KEY_FILE} ]]; then if [[ -n ${CF_API_KEY_FILE} ]]; then
@@ -264,21 +263,13 @@ function handleModrinthProjects() {
fi fi
if [[ $MODRINTH_PROJECTS ]]; then if [[ $MODRINTH_PROJECTS ]]; then
if isFamily HYBRID; then
if isType CUSTOM; then
if ! [[ $MODRINTH_LOADER ]]; then
logError "MODRINTH_LOADER must be set when using TYPE=CUSTOM and MODRINTH_PROJECTS"
exit 1
fi
loader="${MODRINTH_LOADER,,}"
elif isFamily HYBRID; then
loader=${HYBRIDTYPE} loader=${HYBRIDTYPE}
elif isFamily VANILLA; then elif isFamily VANILLA; then
loader=datapack loader=datapack
else else
loader="${TYPE,,}" loader="${TYPE,,}"
fi fi
mc-image-helper modrinth \ mc-image-helper modrinth \
--output-directory=/data \ --output-directory=/data \
--world-directory="${LEVEL:-world}" \ --world-directory="${LEVEL:-world}" \

View File

@@ -411,7 +411,7 @@ function isFamily() {
function isType() { function isType() {
for t in "${@}"; do for t in "${@}"; do
# shellcheck disable=SC2153 # shellcheck disable=SC2153
if [[ ${TYPE^^} == "${t^^}" ]]; then if [[ $TYPE == "$t" ]]; then
return 0 return 0
fi fi
done done
@@ -538,18 +538,4 @@ function buildDownloadList() {
result+="${repoUrl}/${version}/$c" result+="${repoUrl}/${version}/$c"
done done
echo "$result" echo "$result"
} }
function firstArrayElement {
local -n a="$1"
if (( ${#a[@]} )); then
echo "${a[0]}"
fi
}
function shiftArray {
local -n a="$1"
if (( ${#a[@]} )); then
a=("${a[@]:1}")
fi
}

View File

@@ -1,9 +0,0 @@
services:
mc:
restart: "no"
image: ${IMAGE_TO_TEST:-itzg/minecraft-server}
environment:
EULA: "TRUE"
TYPE: NANOLIMBO
volumes:
- ./data:/data

View File

@@ -1 +0,0 @@
mc-image-helper assert fileExists "/data/NanoLimbo-*.jar"