| 
					
				 | 
			
			
				@@ -0,0 +1,163 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#!/bin/bash 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+cd /home/minecraft 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# https://github.com/itzg/dockerfiles/blob/master/minecraft-server/start-minecraft.sh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if [ ! -e eula.txt ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if [ "$EULA" != "" ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo "# Generated via Docker at $(date)" > eula.txt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo "eula=TRUE" >> eula.txt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo "Accept the Minecraft EULA at" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo "  https://account.mojang.com/documents/minecraft_eula" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo "by adding -e EULA=TRUE" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    exit 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+SERVER_PROPERTIES=server.properties 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function setProp { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  local prop=$1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  local var=$2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if [ -n "$var" ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo "Setting $prop to $var" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sed -i "/$prop\s*=/ c $prop=$var" server.properties 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if [ ! -e server.properties ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  echo "Creating server.properties" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cp base.properties server.properties 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if [ -n "$WHITELIST" ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo "Whitelist enable. You need to create the whitelist.json maunally, or disable and add users with /whitelist nick" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "motd" "$MOTD" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "allow-nether" "$ALLOW_NETHER" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "announce-player-achievements" "$ANNOUNCE_PLAYER_ACHIEVEMENTS" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "enable-command-block" "$ENABLE_COMMAND_BLOCK" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "spawn-animals" "$SPAWN_ANIMAILS" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "spawn-monsters" "$SPAWN_MONSTERS" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "spawn-npcs" "$SPAWN_NPCS" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "generate-structures" "$GENERATE_STRUCTURES" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "spawn-npcs" "$SPAWN_NPCS" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "view-distance" "$VIEW_DISTANCE" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "hardcore" "$HARDCORE" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "max-build-height" "$MAX_BUILD_HEIGHT" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "force-gamemode" "$FORCE_GAMEMODE" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "hardmax-tick-timecore" "$MAX_TICK_TIME" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "enable-query" "$ENABLE_QUERY" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "query.port" "$QUERY_PORT" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "enable-rcon" "$ENABLE_RCON" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "rcon.password" "$RCON_PASSWORD" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "rcon.port" "$RCON_PORT" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "max-players" "$MAX_PLAYERS" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "max-world-size" "$MAX_WORLD_SIZE" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "level-name" "$LEVEL" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "level-seed" "$SEED" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "pvp" "$PVP" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "generator-settings" "$GENERATOR_SETTINGS" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setProp "online-mode" "$ONLINE_MODE" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if [ -n "$LEVEL_TYPE" ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # uppercase 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    LEVEL_TYPE=$( echo ${LEVEL_TYPE} | tr '[:lower:]' '[:upper:]' ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo "Setting level type to $LEVEL_TYPE" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    case $LEVEL_TYPE in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      DEFAULT|FLAT|LARGEBIOMES|AMPLIFIED|CUSTOMIZED|BIOMESOP) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        setProp "level-type" "$LEVEL_TYPE" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      *) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo "Invalid LEVEL_TYPE: $LEVEL_TYPE" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo "Try: DEFAULT FLAT LARGEBIOMES AMPLIFIED CUSTOMZED or BIOMESOP" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        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" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    setProp "difficulty" "$DIFFICULTY" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  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   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    setProp "gamemode" "$MODE" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if [ -n "$OPS" -a ! -e ops.txt.converted ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  echo "Setting ops" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  echo $OPS | awk -v RS=, '{print}' >> ops.txt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# There whitelist code https://github.com/itzg/dockerfiles/blob/master/minecraft-server/start-minecraft.sh#L540 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# but it doesn't work.  See https://www.beastnode.com/portal/knowledgebase/6/Setting-Up-a-Whitelist-or-Make-Your-Server-Private.html 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# on using /whitelist add username (to actually setup and use the whitelist.json file)   :P 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if [ ! -e banned-players.json ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  echo '[]' > banned-players.json 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if [ ! -e banned-ips.json ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  echo '[]' > banned-ips.json 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+EXTRA_ARGS="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Optional disable console 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if [[ ${CONSOLE} = false || ${CONSOLE} = FALSE ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  EXTRA_ARGS+="--noconsole" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Optional disable GUI for headless servers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if [[ ${GUI} = false || ${GUI} = FALSE ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  EXTRA_ARGS="${EXTRA_ARGS} nogui" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# put these prior JVM_OPTS at the end to give any memory settings there higher precedence 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+echo "Setting initial memory to ${INIT_MEMORY:-${MEMORY}} and max to ${MAX_MEMORY:-${MEMORY}}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+JVM_OPTS="-Xms${INIT_MEMORY:-${MEMORY}} -Xmx${MAX_MEMORY:-${MEMORY}} ${JVM_OPTS}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+exec java $JVM_XX_OPTS $JVM_OPTS -jar $SERVER "$@" $EXTRA_ARGS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 |