From 8d26895b088ca02e0a191a2e8dd1a1487134dcf8 Mon Sep 17 00:00:00 2001 From: kayos Date: Thu, 5 Mar 2026 13:35:18 -0800 Subject: [PATCH] fix: detect installed server and boot it; add RCON env var support; fix JVM_OPTS loop --- launch.sh | 63 ++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 46 insertions(+), 17 deletions(-) diff --git a/launch.sh b/launch.sh index 2796cef..3a991fc 100644 --- a/launch.sh +++ b/launch.sh @@ -36,22 +36,7 @@ fi if [[ -n "$JVM_OPTS" ]]; then sed -i '/-Xm[s,x]/d' user_jvm_args.txt - for j in ; do echo "" >> user_jvm_args.txt; done -fi -if [[ -n "$MOTD" ]]; then - sed -i "s/^motd=.*/motd=$MOTD/" /data/server.properties -fi -if [[ -n "$ENABLE_WHITELIST" ]]; then - sed -i "s/white-list=.*/white-list=$ENABLE_WHITELIST/" /data/server.properties -fi -if [[ -n "$ALLOW_FLIGHT" ]]; then - sed -i "s/allow-flight=.*/allow-flight=$ALLOW_FLIGHT/" /data/server.properties -fi -if [[ -n "$MAX_PLAYERS" ]]; then - sed -i "s/max-players=.*/max-players=$MAX_PLAYERS/" /data/server.properties -fi -if [[ -n "$ONLINE_MODE" ]]; then - sed -i "s/online-mode=.*/online-mode=$ONLINE_MODE/" /data/server.properties + for j in ${JVM_OPTS}; do echo "$j" >> user_jvm_args.txt; done fi # Initialize whitelist.json if not present @@ -108,6 +93,50 @@ for raw_username in "${OPS[@]}"; do fi done +# Run installer if server hasn't been installed yet +if [[ ! -f "server.jar" ]] || [[ ! -f "run.sh" ]]; then + echo "Running NeoForge installer..." + java -jar neoforge-${NEOFORGE_VERSION}-installer.jar nogui || exit 1 +fi + +# Apply server.properties overrides (create defaults if missing) +if [[ ! -f server.properties ]]; then + cat > server.properties << 'EOF' +server-port=25565 +online-mode=true +white-list=false +broadcast-rcon-to-ops=true +enable-rcon=false +rcon.port=25575 +rcon.password= +max-players=20 +allow-flight=false +motd=A Minecraft Server +EOF +fi + sed -i 's/server-port.*/server-port=25565/g' server.properties -java -jar neoforge-${NEOFORGE_VERSION}-installer.jar nogui +if [[ -n "$MOTD" ]]; then + sed -i "s/^motd=.*/motd=$MOTD/" server.properties +fi +if [[ -n "$ENABLE_WHITELIST" ]]; then + sed -i "s/white-list=.*/white-list=$ENABLE_WHITELIST/" server.properties +fi +if [[ -n "$ALLOW_FLIGHT" ]]; then + sed -i "s/allow-flight=.*/allow-flight=$ALLOW_FLIGHT/" server.properties +fi +if [[ -n "$MAX_PLAYERS" ]]; then + sed -i "s/max-players=.*/max-players=$MAX_PLAYERS/" server.properties +fi +if [[ -n "$ONLINE_MODE" ]]; then + sed -i "s/online-mode=.*/online-mode=$ONLINE_MODE/" server.properties +fi +if [[ -n "$RCON_PASSWORD" ]]; then + sed -i "s/enable-rcon=.*/enable-rcon=true/" server.properties + sed -i "s/rcon.password=.*/rcon.password=$RCON_PASSWORD/" server.properties + sed -i "s/rcon.port=.*/rcon.port=${RCON_PORT:-25575}/" server.properties +fi + +echo "Starting server..." +exec ./run.sh nogui