mirror of
https://github.com/itzg/docker-minecraft-server.git
synced 2026-10-12 06:57:13 +00:00
Auto-merging via docker-versions-create
This commit is contained in:
commit
fa9e59edd8
6 files changed
+90
-82
No files matched your search
+1
-1
@@ -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
|
|
||||||
}
|
}
|
||||||
+76
-62
@@ -4,6 +4,72 @@
|
|||||||
: ${FORGEVERSION:=RECOMMENDED}
|
: ${FORGEVERSION:=RECOMMENDED}
|
||||||
isDebugging && set -x
|
isDebugging && set -x
|
||||||
|
|
||||||
|
get_installer() {
|
||||||
|
if [[ -z $FORGE_INSTALLER_URL ]]; then
|
||||||
|
log "Downloading $normForgeVersion"
|
||||||
|
|
||||||
|
forgeFileNames="
|
||||||
|
$normForgeVersion/forge-$normForgeVersion-installer.jar
|
||||||
|
$shortForgeVersion/forge-$shortForgeVersion-installer.jar
|
||||||
|
"
|
||||||
|
|
||||||
|
for fn in $forgeFileNames; do
|
||||||
|
downloadUrl=https://maven.minecraftforge.net/net/minecraftforge/forge/$fn
|
||||||
|
log "...trying $downloadUrl"
|
||||||
|
if curl -o $FORGE_INSTALLER -fsSL $downloadUrl; then
|
||||||
|
return
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
install() {
|
||||||
|
if [ ! -e $FORGE_INSTALLER ]; then
|
||||||
|
get_installer $normForgeVersion $shortForgeVersion
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "Installing Forge $shortForgeVersion using $FORGE_INSTALLER"
|
||||||
|
mkdir -p mods
|
||||||
|
tries=3
|
||||||
|
while ((--tries >= 0)); do
|
||||||
|
java -jar $FORGE_INSTALLER --installServer
|
||||||
|
if [ $? == 0 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if (($tries < 0)); then
|
||||||
|
log "Forge failed to install after several tries." >&2
|
||||||
|
exit 10
|
||||||
|
fi
|
||||||
|
# NOTE $shortForgeVersion will be empty if installer location was given to us
|
||||||
|
log "Finding installed server jar..."
|
||||||
|
unset -v latest
|
||||||
|
for file in *forge*.jar; do
|
||||||
|
if ! [[ $file =~ installer ]]; then
|
||||||
|
if [[ -z $latest ]] || [[ $file -nt $latest ]]; then
|
||||||
|
latest=$file
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [[ -z $latest ]]; then
|
||||||
|
log "Unable to derive server jar for Forge"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
export SERVER=$latest
|
||||||
|
log "Using server $SERVER"
|
||||||
|
echo $SERVER > $installMarker
|
||||||
|
}
|
||||||
|
|
||||||
|
resolve_versions() {
|
||||||
if [[ -z $FORGE_INSTALLER && -z $FORGE_INSTALLER_URL ]]; then
|
if [[ -z $FORGE_INSTALLER && -z $FORGE_INSTALLER_URL ]]; then
|
||||||
norm=$VANILLA_VERSION
|
norm=$VANILLA_VERSION
|
||||||
|
|
||||||
@@ -48,74 +114,22 @@ elif [[ ! -e $FORGE_INSTALLER ]]; then
|
|||||||
else
|
else
|
||||||
shortForgeVersion=$VANILLA_VERSION-${FORGE_INSTALLER_CUSTOM_VERSION:-custom}
|
shortForgeVersion=$VANILLA_VERSION-${FORGE_INSTALLER_CUSTOM_VERSION:-custom}
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
### main
|
||||||
|
|
||||||
|
resolve_versions
|
||||||
|
|
||||||
installMarker="/data/.forge-installed-$shortForgeVersion"
|
installMarker="/data/.forge-installed-$shortForgeVersion"
|
||||||
|
|
||||||
if [ ! -e $installMarker ]; then
|
if [ ! -e $installMarker ]; then
|
||||||
if [ ! -e $FORGE_INSTALLER ]; then
|
install
|
||||||
|
|
||||||
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
|
|
||||||
fi
|
|
||||||
|
|
||||||
log "Installing Forge $shortForgeVersion using $FORGE_INSTALLER"
|
|
||||||
mkdir -p mods
|
|
||||||
tries=3
|
|
||||||
while ((--tries >= 0)); do
|
|
||||||
java -jar $FORGE_INSTALLER --installServer
|
|
||||||
if [ $? == 0 ]; then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if (($tries < 0)); then
|
|
||||||
log "Forge failed to install after several tries." >&2
|
|
||||||
exit 10
|
|
||||||
fi
|
|
||||||
# NOTE $shortForgeVersion will be empty if installer location was given to us
|
|
||||||
log "Finding installed server jar..."
|
|
||||||
unset -v latest
|
|
||||||
for file in *forge*.jar; do
|
|
||||||
if ! [[ $file =~ installer ]]; then
|
|
||||||
if [[ -z $latest ]] || [[ $file -nt $latest ]]; then
|
|
||||||
latest=$file
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if [[ -z $latest ]]; then
|
|
||||||
log "Unable to derive server jar for Forge"
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
|
|
||||||
export SERVER=$latest
|
|
||||||
log "Using server $SERVER"
|
|
||||||
echo $SERVER > $installMarker
|
|
||||||
|
|
||||||
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
|
||||||
|
|||||||
Reference in new issue
Block a user