mirror of
https://github.com/itzg/docker-minecraft-server
synced 2024-12-13 22:02:28 +00:00
117 lines
3.2 KiB
Bash
Executable file
117 lines
3.2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# FUNCTIONS
|
|
function setServerProp {
|
|
local prop=$1
|
|
local var=$2
|
|
if [ -n "$var" ]; then
|
|
echo "Setting $prop to $var"
|
|
sed -i "/$prop\s*=/ c $prop=$var" /data/server.properties
|
|
fi
|
|
}
|
|
|
|
# Deploy server.properties file
|
|
if [ ! -e server.properties ]; then
|
|
echo "Creating server.properties"
|
|
cp /tmp/server.properties .
|
|
|
|
if [ -n "$WHITELIST" ]; then
|
|
echo "Creating whitelist"
|
|
sed -i "/whitelist\s*=/ c whitelist=true" /data/server.properties
|
|
sed -i "/white-list\s*=/ c white-list=true" /data/server.properties
|
|
fi
|
|
|
|
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 "generate-structures" "$GENERATE_STRUCTURES"
|
|
setServerProp "view-distance" "$VIEW_DISTANCE"
|
|
setServerProp "hardcore" "$HARDCORE"
|
|
setServerProp "max-build-height" "$MAX_BUILD_HEIGHT"
|
|
setServerProp "force-gamemode" "$FORCE_GAMEMODE"
|
|
setServerProp "hardmax-tick-timecore" "$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"
|
|
|
|
if [ -n "$LEVEL_TYPE" ]; then
|
|
# normalize to uppercase
|
|
LEVEL_TYPE=$( echo ${LEVEL_TYPE} | tr '[:lower:]' '[:upper:]' )
|
|
echo "Setting level type to $LEVEL_TYPE"
|
|
# check for valid values and only then set
|
|
case $LEVEL_TYPE in
|
|
DEFAULT|FLAT|LARGEBIOMES|AMPLIFIED|CUSTOMIZED|BIOMESOP|RTG)
|
|
sed -i "/level-type\s*=/ c level-type=$LEVEL_TYPE" /data/server.properties
|
|
;;
|
|
*)
|
|
echo "Invalid LEVEL_TYPE: $LEVEL_TYPE"
|
|
exit 1
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
if [ -n "$DIFFICULTY" ]; then
|
|
case $DIFFICULTY in
|
|
peaceful|0)
|
|
DIFFICULTY=0
|
|
;;
|
|
easy|1)
|
|
DIFFICULTY=1
|
|
;;
|
|
normal|2)
|
|
DIFFICULTY=2
|
|
;;
|
|
hard|3)
|
|
DIFFICULTY=3
|
|
;;
|
|
*)
|
|
echo "DIFFICULTY must be peaceful, easy, normal, or hard."
|
|
exit 1
|
|
;;
|
|
esac
|
|
echo "Setting difficulty to $DIFFICULTY"
|
|
sed -i "/difficulty\s*=/ c difficulty=$DIFFICULTY" /data/server.properties
|
|
fi
|
|
|
|
if [ -n "$MODE" ]; then
|
|
echo "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
|
|
;;
|
|
*)
|
|
echo "ERROR: Invalid game mode: $MODE"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
sed -i "/^gamemode\s*=/ c gamemode=$MODE" $SERVER_PROPERTIES
|
|
fi
|
|
fi
|
|
|
|
exec /start-minecraftFinalSetup $@
|