Compare commits

..

107 Commits

Author SHA1 Message Date
Geoff Bourne 08f2e4a551 Auto-merging via docker-versions-create 2021-12-23 16:09:44 -06:00
itzg 2f1fed822c docs: Auto update markdown TOC 2021-12-22 13:01:44 +00:00
Caden Kriese bf5824b6e5 Added support for downloading and installing datapacks (#1214) 2021-12-22 07:01:23 -06:00
itzg 52bf2ae094 docs: Auto update markdown TOC 2021-12-21 00:27:44 +00:00
Michael Kirsch fa4a0e92ce Autostop feature (#1212) 2021-12-20 18:27:27 -06:00
Geoff Bourne c15e231d7e fix: write to console pipe as minecraft user (#1216) 2021-12-20 07:09:29 -06:00
Daniel Hoffend cc885276f5 fix: verify that the downloaded resource is a valid plugin (#1210) 2021-12-19 19:24:02 -06:00
Geoff Bourne 9dee47cb6d docs: exclude dependabot from changelog 2021-12-13 21:35:14 -06:00
Geoff Bourne 0d44a18183 Auto-merging via docker-versions-create 2021-12-13 21:29:40 -06:00
Geoff Bourne debcc45e83 Auto-merging via docker-versions-create 2021-12-12 19:52:44 -06:00
Geoff Bourne 6729ba462e Merge branch 'master' of github.com:itzg/docker-minecraft-server 2021-12-12 15:35:14 -06:00
Geoff Bourne 4b28d5e472 fix: qualify Fabric server jar by installer version
Fixes #1191
2021-12-12 15:28:30 -06:00
Geoff Bourne 958aedf731 Merging latest from master 2021-12-12 09:18:51 -06:00
Geoff Bourne 0e1c9261d1 Auto-merging via docker-versions-create 2021-12-11 16:25:20 -06:00
Geoff Bourne 3f2022da40 Merge branch 'master' of github.com:itzg/docker-minecraft-server 2021-12-11 16:23:25 -06:00
Geoff Bourne 0f7464403c build: added github release creation step to docker-versions-create.sh 2021-12-11 16:09:15 -06:00
Geoff Bourne acc7c0568a Auto-merging via docker-versions-create 2021-12-10 21:05:18 -06:00
Geoff Bourne 3b0f82fedd Auto-merging via docker-versions-create 2021-12-10 10:43:00 -06:00
Geoff Bourne ac234ae658 Auto-merging via docker-versions-create 2021-12-10 07:58:17 -06:00
Geoff Bourne 0f9d81e5f1 Auto-merging via docker-versions-create 2021-12-06 22:06:46 -06:00
Geoff Bourne 7072f5dc91 Auto-merging via docker-versions-create 2021-12-04 10:00:46 -06:00
Geoff Bourne 9b155f2496 Auto-merging via docker-versions-create 2021-12-02 19:47:29 -06:00
Geoff Bourne add00ad38d Auto-merging via docker-versions-create 2021-11-24 15:58:14 -06:00
Geoff Bourne a3cff3ce88 Auto-merging via docker-versions-create 2021-11-24 14:35:05 -06:00
Geoff Bourne 601d587927 Track latest from master 2021-11-16 19:02:49 -06:00
Geoff Bourne e195a38faa Auto-merging via docker-versions-create 2021-11-16 18:52:40 -06:00
Geoff Bourne e704348630 Auto-merging via docker-versions-create 2021-11-15 20:49:24 -06:00
Geoff Bourne 893f6754f0 Auto-merging via docker-versions-create 2021-11-13 19:18:35 -06:00
Geoff Bourne f137251e22 Auto-merging via docker-versions-create 2021-11-13 18:53:09 -06:00
Geoff Bourne 869f167c0c Auto-merging via docker-versions-create 2021-11-12 21:24:57 -06:00
Geoff Bourne 3d7107bdbd Auto-merging via docker-versions-create 2021-11-06 21:40:38 -05:00
Geoff Bourne bce01eb1a2 Auto-merging via docker-versions-create 2021-11-04 21:07:26 -05:00
Geoff Bourne c5d1b655ce Auto-merging via docker-versions-create 2021-10-31 09:48:44 -05:00
Geoff Bourne 529e9fd058 Switched base image to JDK
#1064
2021-10-27 21:28:11 -05:00
Geoff Bourne 905768d050 Merge branch 'master' into java16-openj9 2021-10-27 21:27:47 -05:00
Geoff Bourne 0dd0199d5c Auto-merging via docker-versions-create 2021-10-25 19:26:11 -05:00
Geoff Bourne 925a63f035 Auto-merging via docker-versions-create 2021-10-24 20:31:17 -05:00
Geoff Bourne f4be04ceb4 Auto-merging via docker-versions-create 2021-10-23 09:46:52 -05:00
Geoff Bourne db4594b3b3 Auto-merging via docker-versions-create 2021-10-22 15:57:06 -05:00
Geoff Bourne bfd4e6247c Auto-merging via docker-versions-create 2021-10-18 22:16:50 -05:00
Geoff Bourne 4e31acb896 Auto-merging via docker-versions-create 2021-10-17 14:55:46 -05:00
Geoff Bourne 78e4ecc1d7 Auto-merging via docker-versions-create 2021-10-15 19:00:24 -05:00
Geoff Bourne a2251f23e1 Auto-merging via docker-versions-create 2021-10-15 18:51:30 -05:00
Geoff Bourne 6ef0da9a63 Auto-merging via docker-versions-create 2021-10-10 09:59:06 -05:00
Geoff Bourne 4321d2a7e6 Auto-merging via docker-versions-create 2021-10-09 15:28:15 -05:00
Geoff Bourne 639e0264c2 Auto-merging via docker-versions-create 2021-10-09 12:06:49 -05:00
Geoff Bourne 1c4db94b1b Auto-merging via docker-versions-create 2021-10-02 19:24:42 -05:00
Geoff Bourne f0cebe526a Auto-merging via docker-versions-create 2021-09-29 10:27:14 -05:00
Geoff Bourne 20b1477672 Auto-merging via docker-versions-create 2021-09-27 20:53:03 -05:00
Geoff Bourne c4b4997fac Auto-merging via docker-versions-create 2021-09-20 12:32:48 -05:00
Geoff Bourne d442f164ba Auto-merging via docker-versions-create 2021-09-15 21:33:29 -05:00
Geoff Bourne 34d4385ea6 Auto-merging via docker-versions-create 2021-09-15 21:11:04 -05:00
Geoff Bourne cc84e65979 Auto-merging via docker-versions-create 2021-09-15 20:39:44 -05:00
Geoff Bourne 6f5fcc42f9 Auto-merging via docker-versions-create 2021-08-30 21:40:08 -05:00
Geoff Bourne 071621b54a Auto-merging via docker-versions-create 2021-08-10 12:58:17 -05:00
Geoff Bourne 230a64af1b Auto-merging via docker-versions-create 2021-08-01 12:15:47 -05:00
Geoff Bourne 1f980edeb1 Auto-merging via docker-versions-create 2021-07-31 09:29:52 -05:00
Geoff Bourne 649263290f Auto-merging via docker-versions-create 2021-07-26 19:37:48 -05:00
Geoff Bourne 990de92dd7 Merge branch 'master' into java16-openj9 2021-07-25 18:22:02 -05:00
Geoff Bourne 4f15c244b2 Auto-merging via docker-versions-create 2021-07-25 09:39:28 -05:00
Geoff Bourne 5f9c8f53e4 Auto-merging via docker-versions-create 2021-07-23 21:29:47 -05:00
Geoff Bourne 57fee8b46d Auto-merging via docker-versions-create 2021-07-17 21:16:49 -05:00
Geoff Bourne 79face2d60 Auto-merging via docker-versions-create 2021-07-17 20:59:35 -05:00
Geoff Bourne ceec69391c Auto-merging via docker-versions-create 2021-07-17 18:06:45 -05:00
Geoff Bourne dfa5add6ba Auto-merging via docker-versions-create 2021-07-14 18:43:35 -05:00
Geoff Bourne 02677ce1e2 Auto-merging via docker-versions-create 2021-07-12 19:11:49 -05:00
Geoff Bourne 2902e13c61 Auto-merging via docker-versions-create 2021-07-09 20:00:33 -05:00
Geoff Bourne 6d01021a30 Auto-merging via docker-versions-create 2021-07-08 18:01:57 -05:00
Geoff Bourne 07ded28d20 Auto-merging via docker-versions-create 2021-07-08 08:06:08 -05:00
itzg a2d79fb85b Auto-merging via docker-versions-create 2021-07-08 12:56:12 +00:00
Geoff Bourne ecf9a090b1 Auto-merging via docker-versions-create 2021-07-08 07:41:13 -05:00
itzg 17a3aa8079 Auto-merging via docker-versions-create 2021-07-04 19:54:11 +00:00
Geoff Bourne 14fb905ec1 Auto-merging from master 2021-07-03 14:29:24 -05:00
Geoff Bourne 8629bf5cb5 ci: auto-merge from master 2021-07-02 16:06:34 -05:00
itzg f05891e475 Auto-merging via docker-versions-create 2021-07-02 16:56:06 +00:00
itzg f1453dd4c1 Auto-merging via docker-versions-create 2021-06-28 12:14:17 +00:00
itzg 22b560ba5d Auto-merging via docker-versions-create 2021-06-27 13:13:22 +00:00
itzg e3acafee2f Auto-merging via docker-versions-create 2021-06-24 12:47:16 +00:00
Geoff Bourne 03df627881 Auto-merging via docker-versions-create 2021-06-23 22:36:07 -05:00
Geoff Bourne d87e5bdaa2 Auto-merging via docker-versions-create 2021-06-20 12:51:26 -05:00
Geoff Bourne 2543a5417c Auto-merging via docker-versions-create 2021-06-05 17:55:19 -05:00
Geoff Bourne 614f6a4be0 Auto-merging via docker-versions-create 2021-05-24 20:53:08 -05:00
Geoff Bourne fe9735d8c1 Merge branch 'master' into java16-openj9 2021-05-23 12:27:35 -05:00
Geoff Bourne 10dcbe7b03 Merge from master 2021-05-22 13:47:41 -05:00
Geoff Bourne 85103cd8cf Auto-merging via docker-versions-create 2021-05-21 23:04:11 -05:00
Geoff Bourne 12915b04b7 Auto-merging via docker-versions-create 2021-05-21 22:53:22 -05:00
Geoff Bourne fbc8f72a22 ci: adjusted for adoptopenjdk for openj9 only on amd64 2021-05-21 16:49:29 -05:00
Geoff Bourne 7229c40202 Merge branch 'master' into java16-openj9
# Conflicts:
#	.github/workflows/build-multiarch.yml
#	Dockerfile
2021-05-21 16:46:51 -05:00
Geoff Bourne 581b514970 ci: added java16-openj9 branch
#885
2021-05-21 16:42:23 -05:00
Geoff Bourne d030daf354 Auto-merging via docker-versions-create 2021-05-19 20:30:40 -05:00
Geoff Bourne 98e6adbe1a Auto-merging via docker-versions-create 2021-05-15 12:43:32 -05:00
Geoff Bourne b94cfc44a0 Merge branch 'multiarch' into java15-openj9
# Conflicts:
#	.github/workflows/build-multiarch.yml
#	Dockerfile
2021-05-14 18:03:39 -05:00
Geoff Bourne 8a9e85fb17 Auto-merging via docker-versions-create 2021-05-06 20:17:17 -05:00
Geoff Bourne 8a39719427 Auto-merging via docker-versions-create 2021-04-30 14:30:25 -05:00
Geoff Bourne 4100aa1f61 Auto-merging via docker-versions-create 2021-04-30 11:14:31 -05:00
Geoff Bourne 4d5fe0a03b Auto-merging via docker-versions-create 2021-04-28 16:55:09 -05:00
Geoff Bourne 236bb565ce Auto-merging via docker-versions-create 2021-04-26 08:23:22 -05:00
Geoff Bourne 7608168823 Auto-merging via docker-versions-create 2021-04-24 13:44:55 -05:00
Geoff Bourne acabb9d93c Auto-merging via docker-versions-create 2021-04-23 21:05:53 -05:00
Geoff Bourne 4e9c00c4d5 Auto-merging via docker-versions-create 2021-04-18 13:32:45 -05:00
Geoff Bourne f3826422cf Auto-merging via docker-versions-create 2021-04-11 10:12:00 -05:00
Geoff Bourne 9b7459ad5c Merged latest from master 2021-04-08 19:28:35 -05:00
Geoff Bourne c9dc6012f6 Auto-merging via docker-versions-create 2021-04-01 16:40:16 -05:00
Geoff Bourne a5aec72837 Added git
#819
2021-04-01 16:29:06 -05:00
Geoff Bourne af38a8fc7a ci: removed armv7 build since 15-openj9 doesn't include it 2021-03-06 17:27:08 -06:00
Geoff Bourne 58fa3c897d Merge branch 'master' into java15-openj9 2021-03-06 17:23:02 -06:00
Geoff Bourne e45621d8e2 ci: Added java15-openj9 branch 2021-03-06 17:22:36 -06:00
15 changed files with 291 additions and 11 deletions
+4
View File
@@ -0,0 +1,4 @@
changelog:
exclude:
authors:
- dependabot
+1 -1
View File
@@ -81,7 +81,7 @@ jobs:
uses: docker/build-push-action@v2.7.0
with:
context: .
platforms: linux/amd64,linux/arm/v7,linux/arm64
platforms: linux/amd64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
# ensure latest base image is used
+5 -3
View File
@@ -1,4 +1,4 @@
FROM eclipse-temurin:17-jdk
FROM adoptopenjdk:16-jdk-openj9
LABEL org.opencontainers.image.authors="Geoff Bourne <itzgeoff@gmail.com>"
@@ -76,7 +76,8 @@ ENV UID=1000 GID=1000 \
TYPE=VANILLA VERSION=LATEST \
ENABLE_RCON=true RCON_PORT=25575 RCON_PASSWORD=minecraft \
ENABLE_AUTOPAUSE=false AUTOPAUSE_TIMEOUT_EST=3600 AUTOPAUSE_TIMEOUT_KN=120 AUTOPAUSE_TIMEOUT_INIT=600 \
AUTOPAUSE_PERIOD=10 AUTOPAUSE_KNOCK_INTERFACE=eth0
AUTOPAUSE_PERIOD=10 AUTOPAUSE_KNOCK_INTERFACE=eth0 \
ENABLE_AUTOSTOP=false AUTOSTOP_TIMEOUT_EST=3600 AUTOSTOP_TIMEOUT_INIT=1800 AUTOSTOP_PERIOD=10
COPY --chmod=755 scripts/start* /
COPY --chmod=755 bin/ /usr/local/bin/
@@ -84,8 +85,9 @@ COPY --chmod=755 bin/mc-health /health.sh
COPY --chmod=644 files/server.properties /tmp/server.properties
COPY --chmod=644 files/log4j2.xml /tmp/log4j2.xml
COPY --chmod=755 files/autopause /autopause
COPY --chmod=755 files/autostop /autostop
RUN dos2unix /start* /autopause/*
RUN dos2unix /start* /autopause/* /autostop/*
ENTRYPOINT [ "/start" ]
HEALTHCHECK --start-period=1m CMD mc-health
+36 -2
View File
@@ -73,6 +73,7 @@ By default, the container will download the latest version of the "vanilla" [Min
* [Downloadable world](#downloadable-world)
* [Cloning world from a container path](#cloning-world-from-a-container-path)
* [Overwrite world on start](#overwrite-world-on-start)
* [Datapacks](#datapacks)
* [Server configuration](#server-configuration)
* [Message of the Day](#message-of-the-day)
* [Difficulty](#difficulty)
@@ -131,10 +132,11 @@ By default, the container will download the latest version of the "vanilla" [Min
* [Autopause](#autopause)
* [Description](#description)
* [Enabling Autopause](#enabling-autopause)
* [Autostop](#autostop)
* [Running on RaspberryPi](#running-on-raspberrypi)
* [Contributing](#contributing)
<!-- Added by: runner, at: Tue Dec 14 02:14:33 UTC 2021 -->
<!-- Added by: runner, at: Wed Dec 22 13:01:43 UTC 2021 -->
<!--te-->
@@ -275,7 +277,7 @@ When using the image `itzg:/minecraft-server` without a tag, the `latest` image
| Tag name | Java version | Linux | JVM Type | Architecture |
| -------------- | -------------|--------|----------|-------------------|
| latest | 17 | Debian | Hotspot | amd64,arm64,armv7 |
| latest | 16 | Debian | Hotspot | amd64,arm64,armv7 |
| java8 | 8 | Alpine | Hotspot | amd64 |
| java8-multiarch | 8 | Debian | Hotspot | amd64,arm64,armv7 |
| java8-openj9 | 8 | Debian | OpenJ9 | amd64 |
@@ -792,6 +794,16 @@ The following diagram shows how this option can be used in a compose deployment
### Overwrite world on start
The world will only be downloaded or copied if it doesn't exist already. Set `FORCE_WORLD_COPY=TRUE` to force overwrite the world on every server start.
### Datapacks
Datapacks can be installed in a similar manner to mods/plugins. There are many environment variables which function in the same way they do for [mods](#working-with-mods-and-plugins):
* `DATAPACKS`
* `DATAPACKS_FILE`
* `REMOVE_OLD_DATAPACKS`
* `REMOVE_OLD_DATAPACKS_DEPTH`
* `REMOVE_OLD_DATAPACKS_INCLUDE`
* `REMOVE_OLD_DATAPACKS_EXCLUDE`
Datapacks will be placed in `/data/$LEVEL/datapacks`
## Server configuration
By default, the server configuration will be created and set based on the following environment variables, but only the first time the server is started. If the `server.properties` file already exists, the values in them will not be changed.
@@ -1459,6 +1471,28 @@ The following environment variables define the behaviour of auto-pausing:
* `AUTOPAUSE_KNOCK_INTERFACE`, default `eth0`
<br>Describes the interface passed to the `knockd` daemon. If the default interface does not work, run the `ifconfig` command inside the container and derive the interface receiving the incoming connection from its output. The passed interface must exist inside the container. Using the loopback interface (`lo`) does likely not yield the desired results.
## Autostop
An option to stop the server after a specified time has been added for niche applications (e.g. billing saving on AWS Fargate). The function is incompatible with the Autopause functionality, as they basically cancel out each other.
Note that the docker container variables have to be set accordingly (restart policy set to "no") and that the container has to be manually restarted.
A starting, example compose file has been provided in [examples/docker-compose-autostop.yml](examples/docker-compose-autostop.yml).
Enable the Autostop functionality by setting:
```
-e ENABLE_AUTOSTOP=TRUE
```
The following environment variables define the behaviour of auto-stopping:
* `AUTOSTOP_TIMEOUT_EST`, default `3600` (seconds)
describes the time between the last client disconnect and the stopping of the server (read as timeout established)
* `AUTOSTOP_TIMEOUT_INIT`, default `1800` (seconds)
describes the time between server start and the stopping of the server, when no client connects inbetween (read as timeout initialized)
* `AUTOSTOP_PERIOD`, default `10` (seconds)
describes period of the daemonized state machine, that handles the stopping of the server
## Running on RaspberryPi
To run this image on a RaspberryPi 3 B+, 4, or newer, use any of the image tags [list in the Java version section](#running-minecraft-server-on-different-java-version) that specify `armv7` for the architecture, which includes `itzg/minecraft-server:latest`.
+1 -1
View File
@@ -12,4 +12,4 @@ if [ ! -p "${CONSOLE_IN_NAMED_PIPE}" ]; then
exit 1
fi
echo "$@" > "${CONSOLE_IN_NAMED_PIPE:-/tmp/minecraft-console-in}"
gosu minecraft bash -c "echo $* > '${CONSOLE_IN_NAMED_PIPE:-/tmp/minecraft-console-in}'"
+20
View File
@@ -0,0 +1,20 @@
version: '3.8'
services:
minecraft:
image: itzg/minecraft-server
ports:
- "25565:25565"
volumes:
- "mc:/data"
environment:
EULA: "TRUE"
ENABLE_AUTOSTOP: "TRUE"
# More aggressive settings for demo purposes
AUTOSTOP_TIMEOUT_INIT: "30"
AUTOSTOP_TIMEOUT_EST: "20"
# Important not to auto-restart the server!!!
restart: "no"
volumes:
mc: {}
+69
View File
@@ -0,0 +1,69 @@
#!/bin/bash
# needed for the clients connected function residing in autopause
. /autopause/autopause-fcns.sh
. ${SCRIPTS:-/}start-utils
# wait for java process to be started
while :
do
if java_process_exists ; then
break
fi
sleep 0.1
done
STATE=INIT
while :
do
case X$STATE in
XINIT)
# Server startup
if mc_server_listening ; then
TIME_THRESH=$(($(current_uptime)+$AUTOSTOP_TIMEOUT_INIT))
logAutostop "MC Server listening for connections - stopping in $AUTOSTOP_TIMEOUT_INIT seconds"
STATE=II
fi
;;
XII)
# Initial idle
if java_clients_connected ; then
logAutostop "Client connected - waiting for disconnect"
STATE=E
else
if [[ $(current_uptime) -ge $TIME_THRESH ]] ; then
logAutostop "No client connected since startup - stopping server"
/autostop/stop.sh
exit 0
fi
fi
;;
XE)
# Established
if ! java_clients_connected ; then
TIME_THRESH=$(($(current_uptime)+$AUTOSTOP_TIMEOUT_EST))
logAutostop "All clients disconnected - stopping in $AUTOSTOP_TIMEOUT_EST seconds"
STATE=I
fi
;;
XI)
# Idle
if java_clients_connected ; then
logAutostop "Client reconnected - waiting for disconnect"
STATE=E
else
if [[ $(current_uptime) -ge $TIME_THRESH ]] ; then
logAutostop "No client reconnected - stopping"
/autostop/stop.sh
exit 0
fi
fi
;;
*)
logAutostop "Error: invalid state: $STATE"
;;
esac
sleep $AUTOSTOP_PERIOD
done
+6
View File
@@ -0,0 +1,6 @@
#!/bin/bash
. /start-utils
logAutostopAction "Stopping Java process"
kill -SIGTERM 1
+2 -2
View File
@@ -40,7 +40,7 @@ if ! isTrue "${SKIP_SUDO:-false}" && [ $(id -u) = 0 ]; then
echo 'hosts: files dns' > /etc/nsswitch.conf
fi
exec gosu ${runAsUser}:${runAsGroup} ${SCRIPTS:-/}start-configuration $@
exec gosu ${runAsUser}:${runAsGroup} ${SCRIPTS:-/}start-configuration "$@"
else
exec ${SCRIPTS:-/}start-configuration $@
exec ${SCRIPTS:-/}start-configuration "$@"
fi
+34
View File
@@ -0,0 +1,34 @@
#!/bin/bash
# shellcheck source=start-utils
. "${SCRIPTS:-/}start-utils"
: "${SERVER_PORT:=25565}"
export SERVER_PORT
log "Autostop functionality enabled"
isDebugging && set -x
if ! [[ $AUTOSTOP_PERIOD =~ ^[0-9]+$ ]]; then
AUTOSTOP_PERIOD=10
export AUTOSTOP_PERIOD
log "Warning: AUTOSTOP_PERIOD is not numeric, set to 10 (seconds)"
fi
if [ "$AUTOSTOP_PERIOD" -eq "0" ] ; then
AUTOSTOP_PERIOD=10
export AUTOSTOP_PERIOD
log "Warning: AUTOSTOP_PERIOD must not be 0, set to 10 (seconds)"
fi
if ! [[ $AUTOSTOP_TIMEOUT_EST =~ ^[0-9]+$ ]] ; then
AUTOSTOP_TIMEOUT_EST=3600
export AUTOSTOP_TIMEOUT_EST
log "Warning: AUTOSTOP_TIMEOUT_EST is not numeric, set to 3600 (seconds)"
fi
if ! [[ $AUTOSTOP_TIMEOUT_INIT =~ ^[0-9]+$ ]] ; then
AUTOSTOP_TIMEOUT_INIT=1800
export AUTOSTOP_TIMEOUT_INIT
log "Warning: AUTOSTOP_TIMEOUT_INIT is not numeric, set to 1800 (seconds)"
fi
/autostop/autostop-daemon.sh &
+9
View File
@@ -37,6 +37,11 @@ if isTrue "${ENABLE_AUTOPAUSE}" && isTrue "${EXEC_DIRECTLY:-false}"; then
exit 1
fi
if isTrue "${ENABLE_AUTOPAUSE}" && isTrue "${ENABLE_AUTOSTOP}"; then
log "ENABLE_AUTOPAUSE=true is incompatible with ENABLE_AUTOSTOP=true"
exit 1
fi
if [[ $PROXY ]]; then
export http_proxy="$PROXY"
export https_proxy="$PROXY"
@@ -96,6 +101,10 @@ if isTrue "${ENABLE_AUTOPAUSE}"; then
${SCRIPTS:-/}start-autopause
fi
if isTrue "${ENABLE_AUTOSTOP}"; then
${SCRIPTS:-/}start-autostop
fi
if versionLessThan 1.7; then
echo "
MC_HEALTH_EXTRA_ARGS=(
+77
View File
@@ -0,0 +1,77 @@
#!/bin/bash
set -e -o pipefail
: "${REMOVE_OLD_DATAPACKS:=false}"
: "${DATAPACKS_FILE:=}"
: "${REMOVE_OLD_DATAPACKS_DEPTH:=1} "
: "${REMOVE_OLD_DATAPACKS_INCLUDE:=*.zip}"
# shellcheck source=start-utils
. "${SCRIPTS:-/}start-utils"
isDebugging && set -x
out_dir=/data/${LEVEL:-world}/datapacks
# Remove old datapacks
if isTrue "${REMOVE_OLD_DATAPACKS}" && [ -z "${DATAPACKS_FILE}" ]; then
if [ -d "$out_dir" ]; then
find "$out_dir" -mindepth 1 -maxdepth ${REMOVE_OLD_DATAPACKS_DEPTH:-16} -wholename "${REMOVE_OLD_DATAPACKS_INCLUDE:-*}" -not -wholename "${REMOVE_OLD_DATAPACKS_EXCLUDE:-}" -delete
fi
fi
if [[ "$DATAPACKS" ]]; then
mkdir -p "$out_dir"
for i in ${DATAPACKS//,/ }
do
if isURL "$i"; then
log "Downloading datapack $i ..."
if ! get -o "${out_dir}" "$i"; then
log "ERROR: failed to download from $i into $out_dir"
exit 2
fi
elif [[ -f "$i" && "$i" =~ .*\.zip ]]; then
log "Copying datapack located at $i ..."
out_file=$(basename "$i")
if ! cp "$i" "${out_dir}/$out_file"; then
log "ERROR: failed to copy from $i into $out_dir"
exit 2
fi
elif [[ -d "$i" ]]; then
log "Copying datapacks from $i ..."
cp "$i"/*.zip "${out_dir}"
else
log "ERROR Invalid URL or path given in DATAPACKS: $i"
exit 2
fi
done
elif [[ "$DATAPACKS_FILE" ]]; then
if [ ! -f "$DATAPACKS_FILE" ]; then
log "ERROR: given DATAPACKS_FILE file does not exist"
exit 2
fi
mkdir -p "$out_dir"
args=(
-o "${out_dir}"
--log-progress-each
--skip-existing
--uris-file "${DATAPACKS_FILE}"
)
if isTrue "${REMOVE_OLD_DATAPACKS}"; then
args+=(
--prune-others "${REMOVE_OLD_DATAPACKS_INCLUDE}"
--prune-depth "${REMOVE_OLD_DATAPACKS_DEPTH}"
)
fi
if ! get "${args[@]}" ; then
log "ERROR: failed to retrieve one or more datapacks"
exit 1
fi
fi
exec "${SCRIPTS:-/}start-setupModpack" "$@"
+1 -1
View File
@@ -69,4 +69,4 @@ if [[ "$WORLD" ]] && ( isTrue "${FORCE_WORLD_COPY}" || [ ! -d "$worldDest" ] );
fi
fi
exec "${SCRIPTS:-/}start-setupModpack" "$@"
exec "${SCRIPTS:-/}start-setupDatapack" "$@"
+18 -1
View File
@@ -22,6 +22,20 @@ containsJars() {
return 1
}
containsPlugin() {
file=${1?}
pat='plugin.yml$'
while read -r line; do
if [[ $line =~ $pat ]]; then
return 0
fi
done <<<$(unzip -l "$file")
return 1
}
getResourceFromSpiget() {
resource=${1?}
@@ -81,9 +95,12 @@ downloadResourceFromSpiget() {
log "Extracting contents of resource ${resource} into plugins"
unzip -o -q -d /data/plugins "${tmpfile}"
rm "${tmpfile}"
else
elif containsPlugin "${tmpfile}"; then
log "Moving resource ${resource} into plugins"
mv "${tmpfile}" "/data/plugins/${resource}.jar"
else
log "ERROR downloaded resource '${resource}' seems to be not a valid plugin"
exit 2
fi
}
+8
View File
@@ -93,6 +93,14 @@ function logAutopauseAction() {
echo "[$(date -Iseconds)] [Autopause] $*"
}
function logAutostop() {
echo "[Autostop loop] $*"
}
function logAutostopAction() {
echo "[$(date -Iseconds)] [Autostop] $*"
}
function normalizeMemSize() {
local scale=1
case ${1,,} in