mirror of
https://github.com/itzg/docker-minecraft-server
synced 2024-12-14 06:12:27 +00:00
7702d98766
Needed when your machine has multiple ip adresses assigned and you want to host your server on another ip than the default one.
152 lines
4.2 KiB
Bash
152 lines
4.2 KiB
Bash
#!/bin/bash
|
|
|
|
. /start-utils
|
|
|
|
# FUNCTIONS
|
|
function setServerProp {
|
|
local prop=$1
|
|
local var=$2
|
|
if [ -n "$var" ]; then
|
|
# normalize booleans
|
|
case ${var^^} in
|
|
TRUE|FALSE)
|
|
var=${var,,} ;;
|
|
esac
|
|
log "Setting ${prop} to '${var}' in ${SERVER_PROPERTIES}"
|
|
sed -i "/^${prop}\s*=/ c ${prop}=${var}" "$SERVER_PROPERTIES"
|
|
else
|
|
log "Skip setting ${prop}"
|
|
fi
|
|
}
|
|
|
|
function customizeServerProps {
|
|
if [ -n "$WHITELIST" ]; then
|
|
log "Creating whitelist"
|
|
setServerProp "whitelist" "true"
|
|
setServerProp "white-list" "true"
|
|
fi
|
|
|
|
# If not provided, generate a reasonable default message-of-the-day,
|
|
# which shows up in the server listing in the client
|
|
if [ -z "$MOTD" ]; then
|
|
# snapshot is the odd case where we have to look at version to identify that label
|
|
if [[ ${ORIGINAL_TYPE} == "VANILLA" && ${VERSION} == "SNAPSHOT" ]]; then
|
|
label=SNAPSHOT
|
|
else
|
|
label=${ORIGINAL_TYPE}
|
|
fi
|
|
|
|
# Convert label to title-case
|
|
label=${label,,}
|
|
label=${label^}
|
|
MOTD="A ${label} Minecraft Server powered by Docker"
|
|
fi
|
|
|
|
setServerProp "server-name" "$SERVER_NAME"
|
|
setServerProp "server-ip" "$SERVER_IP"
|
|
setServerProp "server-port" "$SERVER_PORT"
|
|
setServerProp "motd" "$MOTD"
|
|
setServerProp "allow-nether" "$ALLOW_NETHER"
|
|
setServerProp "announce-player-achievements" "$ANNOUNCE_PLAYER_ACHIEVEMENTS"
|
|
setServerProp "enable-command-block" "$ENABLE_COMMAND_BLOCK"
|
|
setServerProp "spawn-animals" "$SPAWN_ANIMALS"
|
|
setServerProp "spawn-monsters" "$SPAWN_MONSTERS"
|
|
setServerProp "spawn-npcs" "$SPAWN_NPCS"
|
|
setServerProp "spawn-protection" "$SPAWN_PROTECTION"
|
|
setServerProp "generate-structures" "$GENERATE_STRUCTURES"
|
|
setServerProp "view-distance" "$VIEW_DISTANCE"
|
|
setServerProp "hardcore" "$HARDCORE"
|
|
setServerProp "snooper-enabled" "$SNOOPER_ENABLED"
|
|
setServerProp "max-build-height" "$MAX_BUILD_HEIGHT"
|
|
setServerProp "force-gamemode" "$FORCE_GAMEMODE"
|
|
setServerProp "max-tick-time" "$MAX_TICK_TIME"
|
|
setServerProp "enable-query" "$ENABLE_QUERY"
|
|
setServerProp "query.port" "$QUERY_PORT"
|
|
setServerProp "enable-rcon" "$ENABLE_RCON"
|
|
setServerProp "rcon.password" "$RCON_PASSWORD"
|
|
setServerProp "rcon.port" "$RCON_PORT"
|
|
setServerProp "max-players" "$MAX_PLAYERS"
|
|
setServerProp "max-world-size" "$MAX_WORLD_SIZE"
|
|
setServerProp "level-name" "$LEVEL"
|
|
setServerProp "level-seed" "$SEED"
|
|
setServerProp "pvp" "$PVP"
|
|
setServerProp "generator-settings" "$GENERATOR_SETTINGS"
|
|
setServerProp "online-mode" "$ONLINE_MODE"
|
|
setServerProp "allow-flight" "$ALLOW_FLIGHT"
|
|
setServerProp "level-type" "${LEVEL_TYPE^^}"
|
|
setServerProp "resource-pack" "$RESOURCE_PACK"
|
|
setServerProp "resource-pack-sha1" "$RESOURCE_PACK_SHA1"
|
|
|
|
if [ -n "$DIFFICULTY" ]; then
|
|
case $DIFFICULTY in
|
|
peaceful|0)
|
|
DIFFICULTY=0
|
|
;;
|
|
easy|1)
|
|
DIFFICULTY=1
|
|
;;
|
|
normal|2)
|
|
DIFFICULTY=2
|
|
;;
|
|
hard|3)
|
|
DIFFICULTY=3
|
|
;;
|
|
*)
|
|
log "DIFFICULTY must be peaceful, easy, normal, or hard."
|
|
exit 1
|
|
;;
|
|
esac
|
|
setServerProp "difficulty" "$DIFFICULTY"
|
|
fi
|
|
|
|
if [ -n "$MODE" ]; then
|
|
log "Setting mode"
|
|
MODE_LC=$( echo $MODE | tr '[:upper:]' '[:lower:]' )
|
|
case $MODE_LC in
|
|
0|1|2|3)
|
|
;;
|
|
su*)
|
|
MODE=0
|
|
;;
|
|
c*)
|
|
MODE=1
|
|
;;
|
|
a*)
|
|
MODE=2
|
|
;;
|
|
sp*)
|
|
MODE=3
|
|
;;
|
|
*)
|
|
log "ERROR: Invalid game mode: $MODE"
|
|
exit 1
|
|
;;
|
|
esac
|
|
setServerProp "gamemode" "$MODE"
|
|
fi
|
|
}
|
|
|
|
# Deploy server.properties file
|
|
if [[ ${TYPE} == "FEED-THE-BEAST" ]]; then
|
|
export SERVER_PROPERTIES=${FTB_DIR}/server.properties
|
|
log "detected FTB, changing properties path to ${SERVER_PROPERTIES}"
|
|
fi
|
|
|
|
if [ ! -e "$SERVER_PROPERTIES" ]; then
|
|
log "Creating server.properties in ${SERVER_PROPERTIES}"
|
|
cp /tmp/server.properties "$SERVER_PROPERTIES"
|
|
customizeServerProps
|
|
elif [ -n "${OVERRIDE_SERVER_PROPERTIES}" ]; then
|
|
case ${OVERRIDE_SERVER_PROPERTIES^^} in
|
|
TRUE|1)
|
|
customizeServerProps
|
|
;;
|
|
*)
|
|
log "server.properties already created, skipping"
|
|
;;
|
|
esac
|
|
else
|
|
log "server.properties already created, skipping"
|
|
fi
|
|
|
|
exec /start-finalSetup05EnvVariables $@
|