fix: detect installed server and boot it; add RCON env var support; fix JVM_OPTS loop

This commit is contained in:
kayos 2026-03-05 13:35:18 -08:00
parent aab239bf0b
commit 8d26895b08

View file

@ -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