Compare commits

..

87 Commits

Author SHA1 Message Date
Geoff Bourne
c6a7d11f60 Auto-merging via docker-versions-create 2021-12-23 16:09:20 -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
28ce5118f3 Auto-merging via docker-versions-create 2021-12-13 21:29:18 -06:00
Geoff Bourne
f36a987f22 Auto-merging via docker-versions-create 2021-12-12 19:52:25 -06:00
Geoff Bourne
771951b38e Merging latest from master 2021-12-12 09:17:44 -06:00
Geoff Bourne
9e8a924ac7 Auto-merging via docker-versions-create 2021-12-11 16:25:04 -06:00
Geoff Bourne
b51813f026 Auto-merging via docker-versions-create 2021-12-10 21:05:02 -06:00
Geoff Bourne
ee738da7d7 Auto-merging via docker-versions-create 2021-12-10 10:42:46 -06:00
Geoff Bourne
0314d0eb09 Auto-merging via docker-versions-create 2021-12-10 07:58:00 -06:00
Geoff Bourne
0855f76512 Auto-merging via docker-versions-create 2021-12-06 22:06:35 -06:00
Geoff Bourne
e4733d1dca Auto-merging via docker-versions-create 2021-12-04 10:00:34 -06:00
Geoff Bourne
c5950bf7d2 Auto-merging via docker-versions-create 2021-12-02 19:47:18 -06:00
Geoff Bourne
ac1b8092e0 Auto-merging via docker-versions-create 2021-11-24 15:58:04 -06:00
Geoff Bourne
aa0dd571b4 Auto-merging via docker-versions-create 2021-11-24 14:34:51 -06:00
Geoff Bourne
6381b0aded Track latest from master 2021-11-16 19:02:41 -06:00
Geoff Bourne
b9a1434398 Auto-merging via docker-versions-create 2021-11-16 18:52:20 -06:00
Geoff Bourne
cf032f7d7e Auto-merging via docker-versions-create 2021-11-15 20:48:55 -06:00
Geoff Bourne
c5d032eeb7 Auto-merging via docker-versions-create 2021-11-13 19:18:19 -06:00
Geoff Bourne
2372cb93d3 Auto-merging via docker-versions-create 2021-11-13 18:52:52 -06:00
Geoff Bourne
375fb73586 Auto-merging via docker-versions-create 2021-11-12 21:24:41 -06:00
Geoff Bourne
e14311318c Auto-merging via docker-versions-create 2021-11-06 21:39:21 -05:00
Geoff Bourne
f3dd4f0123 Auto-merging via docker-versions-create 2021-11-04 21:06:04 -05:00
Geoff Bourne
102a3b54ba Auto-merging via docker-versions-create 2021-10-31 09:47:33 -05:00
Geoff Bourne
58de72c458 Switched base image to JDK
#1064
2021-10-27 21:27:04 -05:00
Geoff Bourne
738bfd51d5 Merge branch 'master' into java11-openj9 2021-10-27 21:26:47 -05:00
Geoff Bourne
68662fd2ca Auto-merging via docker-versions-create 2021-10-25 19:25:03 -05:00
Geoff Bourne
6d80a9d123 Auto-merging via docker-versions-create 2021-10-24 20:29:45 -05:00
Geoff Bourne
765ac6072d Auto-merging via docker-versions-create 2021-10-23 09:45:24 -05:00
Geoff Bourne
d9962dff26 Auto-merging via docker-versions-create 2021-10-22 15:55:42 -05:00
Geoff Bourne
9f19edf137 Auto-merging via docker-versions-create 2021-10-18 22:15:38 -05:00
Geoff Bourne
b452514c36 Auto-merging via docker-versions-create 2021-10-17 14:54:22 -05:00
Geoff Bourne
4304c75595 Auto-merging via docker-versions-create 2021-10-15 18:58:53 -05:00
Geoff Bourne
fd01947aaa Auto-merging via docker-versions-create 2021-10-15 18:49:34 -05:00
Geoff Bourne
b890882e54 Auto-merging via docker-versions-create 2021-10-10 09:57:54 -05:00
Geoff Bourne
1764d0c0a4 Auto-merging via docker-versions-create 2021-10-09 15:27:02 -05:00
Geoff Bourne
5c79befd28 Auto-merging via docker-versions-create 2021-10-09 12:05:38 -05:00
Geoff Bourne
2b865723bf Auto-merging via docker-versions-create 2021-10-02 19:23:38 -05:00
Geoff Bourne
15840cef6c Auto-merging via docker-versions-create 2021-09-29 10:27:04 -05:00
Geoff Bourne
ea80b658dc Auto-merging via docker-versions-create 2021-09-27 20:42:22 -05:00
Geoff Bourne
75759ded24 Auto-merging via docker-versions-create 2021-09-20 12:31:47 -05:00
Geoff Bourne
0cbb0aa0b5 Auto-merging via docker-versions-create 2021-09-15 21:32:22 -05:00
Geoff Bourne
0122b74815 Auto-merging via docker-versions-create 2021-09-15 21:08:24 -05:00
Geoff Bourne
1b4f26d2e8 Auto-merging via docker-versions-create 2021-09-15 20:38:19 -05:00
Geoff Bourne
5bf6013d6b Auto-merging via docker-versions-create 2021-08-30 21:38:48 -05:00
Geoff Bourne
428a7c1875 Auto-merging via docker-versions-create 2021-08-10 12:57:13 -05:00
Geoff Bourne
3ba8889194 Auto-merging via docker-versions-create 2021-08-01 12:14:17 -05:00
Geoff Bourne
c144da4485 Auto-merging via docker-versions-create 2021-07-31 09:28:40 -05:00
Geoff Bourne
2a1f5b7500 Auto-merging via docker-versions-create 2021-07-26 19:36:39 -05:00
Geoff Bourne
1725a6ed14 Merge branch 'master' into java11-openj9 2021-07-25 18:21:40 -05:00
Geoff Bourne
8ab55e1ef3 Auto-merging via docker-versions-create 2021-07-25 09:37:56 -05:00
Geoff Bourne
32a5ab5138 Auto-merging via docker-versions-create 2021-07-23 21:28:41 -05:00
Geoff Bourne
fb97af317e Auto-merging via docker-versions-create 2021-07-17 21:15:45 -05:00
Geoff Bourne
fe758aab61 Auto-merging via docker-versions-create 2021-07-17 20:58:31 -05:00
Geoff Bourne
4c2868f6c9 Auto-merging via docker-versions-create 2021-07-17 18:05:20 -05:00
Geoff Bourne
919aff0080 Auto-merging via docker-versions-create 2021-07-14 18:43:24 -05:00
Geoff Bourne
8504cf7caf Auto-merging via docker-versions-create 2021-07-12 19:10:45 -05:00
Geoff Bourne
101a7486f2 Auto-merging via docker-versions-create 2021-07-09 19:59:30 -05:00
Geoff Bourne
80e576db2d Auto-merging via docker-versions-create 2021-07-08 18:00:48 -05:00
Geoff Bourne
3a73e47b83 Auto-merging via docker-versions-create 2021-07-08 08:04:52 -05:00
itzg
62824051c8 Auto-merging via docker-versions-create 2021-07-08 12:56:06 +00:00
Geoff Bourne
c4a2403943 Auto-merging via docker-versions-create 2021-07-08 07:39:53 -05:00
itzg
2aad0a9407 Auto-merging via docker-versions-create 2021-07-04 19:54:06 +00:00
Geoff Bourne
6ead8c3cf0 Auto-merging from master 2021-07-03 14:25:28 -05:00
Geoff Bourne
3a18a19583 ci: auto-merge from master 2021-07-02 16:01:23 -05:00
itzg
f620b09134 Auto-merging via docker-versions-create 2021-07-02 16:56:00 +00:00
itzg
2838251c67 Auto-merging via docker-versions-create 2021-06-28 12:14:11 +00:00
itzg
f7cff34527 Auto-merging via docker-versions-create 2021-06-27 13:13:17 +00:00
itzg
acdf8c35fa Auto-merging via docker-versions-create 2021-06-24 12:47:11 +00:00
Geoff Bourne
c5f2bf1059 Auto-merging via docker-versions-create 2021-06-23 22:34:57 -05:00
Geoff Bourne
1f25fae04f Auto-merging via docker-versions-create 2021-06-20 12:49:56 -05:00
Geoff Bourne
caffa2fd8d Auto-merging via docker-versions-create 2021-06-05 17:53:21 -05:00
Geoff Bourne
8de8eb3104 Auto-merging via docker-versions-create 2021-05-24 20:52:01 -05:00
Geoff Bourne
2d3fa3c09e Merge branch 'master' into java11-openj9 2021-05-23 12:27:10 -05:00
Geoff Bourne
f7b3c77f78 Merge from master 2021-05-22 13:46:22 -05:00
Geoff Bourne
d968048ef5 Auto-merging via docker-versions-create 2021-05-21 23:02:53 -05:00
Geoff Bourne
6d26ca04be Auto-merging via docker-versions-create 2021-05-21 22:50:55 -05:00
Geoff Bourne
577eef3631 Merge branch 'master' into java11-openj9
# Conflicts:
#	.github/workflows/build-multiarch.yml
#	docker-versions-create.sh
2021-05-21 22:41:16 -05:00
Geoff Bourne
21d7fb476b ci: added java11-openj9 branch 2021-05-21 22:37:40 -05:00
Geoff Bourne
4c3a329e31 ci: adjusted CACHE_NAME 2021-05-21 17:34:05 -05:00
Geoff Bourne
6c94e49732 ci: updated java11 Dockerfile 2021-05-21 17:33:26 -05:00
Geoff Bourne
af77b29509 ci: add java11 to build/merge 2021-05-21 17:32:38 -05:00
15 changed files with 290 additions and 12 deletions

4
.github/release.yml vendored Normal file
View File

@@ -0,0 +1,4 @@
changelog:
exclude:
authors:
- dependabot

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

View File

@@ -1,4 +1,4 @@
FROM eclipse-temurin:17-jdk
FROM adoptopenjdk:11-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

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-->
@@ -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`.

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}'"

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: {}

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
files/autostop/stop.sh Executable file
View File

@@ -0,0 +1,6 @@
#!/bin/bash
. /start-utils
logAutostopAction "Stopping Java process"
kill -SIGTERM 1

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
scripts/start-autostop Executable file
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 &

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=(
@@ -115,14 +124,12 @@ case "${TYPE^^}" in
;;
FORGE)
if versionLessThan 1.17; then
log "**********************************************************************"
log "WARNING: The image tag itzg/minecraft-server:java8 is recommended"
log " since some mods require Java 8"
log " Exception traces reporting ClassCastException: class jdk.internal.loader.ClassLoaders\$AppClassLoader"
log " can be fixed with java8"
log "**********************************************************************"
fi
exec ${SCRIPTS:-/}start-deployForge "$@"
;;

77
scripts/start-setupDatapack Executable file
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" "$@"

View File

@@ -69,4 +69,4 @@ if [[ "$WORLD" ]] && ( isTrue "${FORCE_WORLD_COPY}" || [ ! -d "$worldDest" ] );
fi
fi
exec "${SCRIPTS:-/}start-setupModpack" "$@"
exec "${SCRIPTS:-/}start-setupDatapack" "$@"

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
}

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