mirror of
https://github.com/itzg/docker-minecraft-server
synced 2024-12-15 14:52:27 +00:00
Auto-merging via docker-versions-create
This commit is contained in:
commit
80cad3572d
6 changed files with 100 additions and 92 deletions
|
@ -49,7 +49,7 @@ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
||||||
--from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
--from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
||||||
|
|
||||||
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
||||||
--var version=0.7.1 --var app=mc-monitor --file {{.app}} \
|
--var version=0.10.1 --var app=mc-monitor --file {{.app}} \
|
||||||
--from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
--from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
||||||
|
|
||||||
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
||||||
|
|
|
@ -129,7 +129,7 @@ By default, the container will download the latest version of the "vanilla" [Min
|
||||||
* [Enabling Autopause](#enabling-autopause)
|
* [Enabling Autopause](#enabling-autopause)
|
||||||
* [Running on RaspberryPi](#running-on-raspberrypi)
|
* [Running on RaspberryPi](#running-on-raspberrypi)
|
||||||
|
|
||||||
<!-- Added by: runner, at: Sat Sep 25 14:39:20 UTC 2021 -->
|
<!-- Added by: runner, at: Thu Sep 30 21:55:06 UTC 2021 -->
|
||||||
|
|
||||||
<!--te-->
|
<!--te-->
|
||||||
|
|
||||||
|
@ -1057,6 +1057,7 @@ If you must, the server port can be set like:
|
||||||
| USE_NATIVE_TRANSPORT | use-native-transport |
|
| USE_NATIVE_TRANSPORT | use-native-transport |
|
||||||
| ENFORCE_WHITELIST | enforce-whitelist |
|
| ENFORCE_WHITELIST | enforce-whitelist |
|
||||||
| ENABLE_WHITELIST | white-list and whitelist |
|
| ENABLE_WHITELIST | white-list and whitelist |
|
||||||
|
| SIMULATION_DISTANCE | simulation-distance |
|
||||||
|
|
||||||
## Miscellaneous Options
|
## Miscellaneous Options
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,10 @@ services:
|
||||||
ENABLE_AUTOPAUSE: "TRUE"
|
ENABLE_AUTOPAUSE: "TRUE"
|
||||||
OVERRIDE_SERVER_PROPERTIES: "TRUE"
|
OVERRIDE_SERVER_PROPERTIES: "TRUE"
|
||||||
MAX_TICK_TIME: "-1"
|
MAX_TICK_TIME: "-1"
|
||||||
restart: always
|
# More aggressive settings for demo purposes
|
||||||
|
AUTOPAUSE_TIMEOUT_INIT: "30"
|
||||||
|
AUTOPAUSE_TIMEOUT_EST: "10"
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
mc: {}
|
mc: {}
|
||||||
|
|
|
@ -17,26 +17,15 @@ rcon_client_exists() {
|
||||||
}
|
}
|
||||||
|
|
||||||
mc_server_listening() {
|
mc_server_listening() {
|
||||||
[[ -n $(netstat -tln | grep -e "0.0.0.0:$SERVER_PORT" -e ":::$SERVER_PORT" | grep LISTEN) ]]
|
mc-monitor status --host localhost --port $SERVER_PORT --timeout 10s >& /dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
java_clients_connected() {
|
java_clients_connected() {
|
||||||
local connections
|
local connections
|
||||||
connections=$(netstat -tn | grep ":$SERVER_PORT" | grep ESTABLISHED)
|
if java_running ; then
|
||||||
if [[ -z "$connections" ]] ; then
|
connections=$(mc-monitor status --host localhost --port $SERVER_PORT --show-player-count)
|
||||||
return 1
|
else
|
||||||
|
connections=0
|
||||||
fi
|
fi
|
||||||
IFS=$'\n'
|
(( $connections > 0 ))
|
||||||
connections=($connections)
|
|
||||||
unset IFS
|
|
||||||
# check that at least one external address is not localhost
|
|
||||||
# remember, that the host network mode does not work with autopause because of the knockd utility
|
|
||||||
for (( i=0; i<${#connections[@]}; i++ ))
|
|
||||||
do
|
|
||||||
if [[ ! $(echo "${connections[$i]}" | awk '{print $5}') =~ ^localhost$|^127(?:\.[0-9]+){0,2}\.[0-9]+$|^(?:0*\:)*?:?0*1$ ]] ; then
|
|
||||||
# not localhost
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
return 1
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,83 +4,37 @@
|
||||||
: ${FORGEVERSION:=RECOMMENDED}
|
: ${FORGEVERSION:=RECOMMENDED}
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
|
|
||||||
if [[ -z $FORGE_INSTALLER && -z $FORGE_INSTALLER_URL ]]; then
|
get_installer() {
|
||||||
norm=$VANILLA_VERSION
|
if [[ -z $FORGE_INSTALLER_URL ]]; then
|
||||||
|
log "Downloading $normForgeVersion"
|
||||||
|
|
||||||
case $VANILLA_VERSION in
|
forgeFileNames="
|
||||||
*.*.*)
|
$normForgeVersion/forge-$normForgeVersion-installer.jar
|
||||||
norm=$VANILLA_VERSION ;;
|
$shortForgeVersion/forge-$shortForgeVersion-installer.jar
|
||||||
*.*)
|
"
|
||||||
norm=${VANILLA_VERSION}.0 ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
#################################################################################
|
for fn in $forgeFileNames; do
|
||||||
|
downloadUrl=https://maven.minecraftforge.net/net/minecraftforge/forge/$fn
|
||||||
log "Checking Forge version information."
|
log "...trying $downloadUrl"
|
||||||
case $FORGEVERSION in
|
if curl -o $FORGE_INSTALLER -fsSL $downloadUrl; then
|
||||||
RECOMMENDED)
|
return
|
||||||
curl -fsSL -o /tmp/forge.json http://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json
|
|
||||||
FORGE_VERSION=$(cat /tmp/forge.json | jq -r ".promos[\"$VANILLA_VERSION-recommended\"]")
|
|
||||||
if [ $FORGE_VERSION = null ]; then
|
|
||||||
FORGE_VERSION=$(cat /tmp/forge.json | jq -r ".promos[\"$VANILLA_VERSION-latest\"]")
|
|
||||||
if [ $FORGE_VERSION = null ]; then
|
|
||||||
log "ERROR: Version $VANILLA_VERSION is not supported by Forge"
|
|
||||||
log " Refer to http://files.minecraftforge.net/ for supported versions"
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
FORGE_VERSION=$FORGEVERSION
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
normForgeVersion=$VANILLA_VERSION-$FORGE_VERSION-$norm
|
|
||||||
shortForgeVersion=$VANILLA_VERSION-$FORGE_VERSION
|
|
||||||
|
|
||||||
FORGE_INSTALLER="/tmp/forge-$shortForgeVersion-installer.jar"
|
|
||||||
elif [[ -z $FORGE_INSTALLER ]]; then
|
|
||||||
FORGE_INSTALLER="/tmp/forge-installer.jar"
|
|
||||||
elif [[ ! -e $FORGE_INSTALLER ]]; then
|
|
||||||
log "ERROR: the given Forge installer doesn't exist : $FORGE_INSTALLER"
|
|
||||||
exit 2
|
|
||||||
else
|
|
||||||
shortForgeVersion=$VANILLA_VERSION-${FORGE_INSTALLER_CUSTOM_VERSION:-custom}
|
|
||||||
fi
|
|
||||||
|
|
||||||
installMarker="/data/.forge-installed-$shortForgeVersion"
|
|
||||||
|
|
||||||
if [ ! -e $installMarker ]; then
|
|
||||||
if [ ! -e $FORGE_INSTALLER ]; then
|
|
||||||
|
|
||||||
if [[ -z $FORGE_INSTALLER_URL ]]; then
|
|
||||||
log "Downloading $normForgeVersion"
|
|
||||||
|
|
||||||
forgeFileNames="
|
|
||||||
$normForgeVersion/forge-$normForgeVersion-installer.jar
|
|
||||||
$shortForgeVersion/forge-$shortForgeVersion-installer.jar
|
|
||||||
END
|
|
||||||
"
|
|
||||||
for fn in $forgeFileNames; do
|
|
||||||
if [ $fn == END ]; then
|
|
||||||
log "Unable to compute URL for $normForgeVersion"
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
downloadUrl=https://maven.minecraftforge.net/net/minecraftforge/forge/$fn
|
|
||||||
log "...trying $downloadUrl"
|
|
||||||
if curl -o $FORGE_INSTALLER -fsSL $downloadUrl; then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
else
|
|
||||||
log "Downloading $FORGE_INSTALLER_URL ..."
|
|
||||||
if ! curl -o $FORGE_INSTALLER -fsSL $FORGE_INSTALLER_URL; then
|
|
||||||
log "Failed to download from given location $FORGE_INSTALLER_URL"
|
|
||||||
exit 2
|
|
||||||
fi
|
fi
|
||||||
|
done
|
||||||
|
log "Unable to locate usable URL for $normForgeVersion"
|
||||||
|
exit 2
|
||||||
|
else
|
||||||
|
log "Downloading $FORGE_INSTALLER_URL ..."
|
||||||
|
if ! curl -o $FORGE_INSTALLER -fsSL $FORGE_INSTALLER_URL; then
|
||||||
|
log "Failed to download from given location $FORGE_INSTALLER_URL"
|
||||||
|
exit 2
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
install() {
|
||||||
|
if [ ! -e $FORGE_INSTALLER ]; then
|
||||||
|
get_installer $normForgeVersion $shortForgeVersion
|
||||||
|
fi
|
||||||
|
|
||||||
log "Installing Forge $shortForgeVersion using $FORGE_INSTALLER"
|
log "Installing Forge $shortForgeVersion using $FORGE_INSTALLER"
|
||||||
mkdir -p mods
|
mkdir -p mods
|
||||||
|
@ -113,9 +67,69 @@ if [ ! -e $installMarker ]; then
|
||||||
export SERVER=$latest
|
export SERVER=$latest
|
||||||
log "Using server $SERVER"
|
log "Using server $SERVER"
|
||||||
echo $SERVER > $installMarker
|
echo $SERVER > $installMarker
|
||||||
|
}
|
||||||
|
|
||||||
|
resolve_versions() {
|
||||||
|
if [[ -z $FORGE_INSTALLER && -z $FORGE_INSTALLER_URL ]]; then
|
||||||
|
norm=$VANILLA_VERSION
|
||||||
|
|
||||||
|
case $VANILLA_VERSION in
|
||||||
|
*.*.*)
|
||||||
|
norm=$VANILLA_VERSION ;;
|
||||||
|
*.*)
|
||||||
|
norm=${VANILLA_VERSION}.0 ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
#################################################################################
|
||||||
|
|
||||||
|
log "Checking Forge version information."
|
||||||
|
case $FORGEVERSION in
|
||||||
|
RECOMMENDED)
|
||||||
|
curl -fsSL -o /tmp/forge.json http://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json
|
||||||
|
FORGE_VERSION=$(cat /tmp/forge.json | jq -r ".promos[\"$VANILLA_VERSION-recommended\"]")
|
||||||
|
if [ $FORGE_VERSION = null ]; then
|
||||||
|
FORGE_VERSION=$(cat /tmp/forge.json | jq -r ".promos[\"$VANILLA_VERSION-latest\"]")
|
||||||
|
if [ $FORGE_VERSION = null ]; then
|
||||||
|
log "ERROR: Version $VANILLA_VERSION is not supported by Forge"
|
||||||
|
log " Refer to http://files.minecraftforge.net/ for supported versions"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
FORGE_VERSION=$FORGEVERSION
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
normForgeVersion=$VANILLA_VERSION-$FORGE_VERSION-$norm
|
||||||
|
shortForgeVersion=$VANILLA_VERSION-$FORGE_VERSION
|
||||||
|
|
||||||
|
FORGE_INSTALLER="/tmp/forge-$shortForgeVersion-installer.jar"
|
||||||
|
elif [[ -z $FORGE_INSTALLER ]]; then
|
||||||
|
FORGE_INSTALLER="/tmp/forge-installer.jar"
|
||||||
|
elif [[ ! -e $FORGE_INSTALLER ]]; then
|
||||||
|
log "ERROR: the given Forge installer doesn't exist : $FORGE_INSTALLER"
|
||||||
|
exit 2
|
||||||
|
else
|
||||||
|
shortForgeVersion=$VANILLA_VERSION-${FORGE_INSTALLER_CUSTOM_VERSION:-custom}
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
### main
|
||||||
|
|
||||||
|
resolve_versions
|
||||||
|
|
||||||
|
installMarker="/data/.forge-installed-$shortForgeVersion"
|
||||||
|
|
||||||
|
if [ ! -e $installMarker ]; then
|
||||||
|
install
|
||||||
else
|
else
|
||||||
export SERVER=$(cat $installMarker)
|
export SERVER=$(cat $installMarker)
|
||||||
|
if [ ! -e "$SERVER" ] && versionLessThan 1.17; then
|
||||||
|
rm "$installMarker"
|
||||||
|
install
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec ${SCRIPTS:-/}start-setupWorld $@
|
exec ${SCRIPTS:-/}start-setupWorld $@
|
||||||
|
|
|
@ -100,6 +100,7 @@ function customizeServerProps {
|
||||||
setServerProp "prevent-proxy-connections" "$PREVENT_PROXY_CONNECTIONS"
|
setServerProp "prevent-proxy-connections" "$PREVENT_PROXY_CONNECTIONS"
|
||||||
setServerProp "use-native-transport" "$USE_NATIVE_TRANSPORT"
|
setServerProp "use-native-transport" "$USE_NATIVE_TRANSPORT"
|
||||||
setServerProp "enforce-whitelist" "$ENFORCE_WHITELIST"
|
setServerProp "enforce-whitelist" "$ENFORCE_WHITELIST"
|
||||||
|
setServerProp "simulation-distance" "$SIMULATION_DISTANCE"
|
||||||
|
|
||||||
if [ -n "$DIFFICULTY" ]; then
|
if [ -n "$DIFFICULTY" ]; then
|
||||||
case $DIFFICULTY in
|
case $DIFFICULTY in
|
||||||
|
|
Loading…
Reference in a new issue