mirror of
https://github.com/itzg/docker-minecraft-server
synced 2024-12-15 06:42:28 +00:00
153 lines
4.2 KiB
Bash
153 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"
|
|
setServerProp "player-idle-timeout" "$PLAYER_IDLE_TIMEOUT"
|
|
|
|
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 $@
|