From 553f90bb4e06e87617e55aefefc33b4df13bcc97 Mon Sep 17 00:00:00 2001 From: Jika Date: Fri, 12 Sep 2025 23:59:18 +0200 Subject: [PATCH] Add qol scripts for local server dev --- .pakku/server-overrides/start_server.sh | 22 +++++++++++++ pakku.json | 2 +- scripts/update_forge_auto_install.sh | 41 +++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 1 deletion(-) create mode 100755 .pakku/server-overrides/start_server.sh create mode 100755 scripts/update_forge_auto_install.sh diff --git a/.pakku/server-overrides/start_server.sh b/.pakku/server-overrides/start_server.sh new file mode 100755 index 000000000..5b8240614 --- /dev/null +++ b/.pakku/server-overrides/start_server.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Simple Linux server start script. +# Usage (from the serverpack root): +# chmod +x start_server.sh +# ./start_server.sh +# +# Configure via env vars: +# JAVA_BIN=/path/to/java XMS=2G XMX=8G ./start_server.sh + +JAVA_BIN="${JAVA_BIN:-java}" +XMS="${XMS:-1G}" +XMX="${XMX:-6G}" + +if [ ! -f minecraft_server.jar ]; then + echo "minecraft_server.jar not found in $(pwd)." >&2 + exit 1 +fi + +exec "$JAVA_BIN" -Xms"$XMS" -Xmx"$XMX" -jar minecraft_server.jar nogui + diff --git a/pakku.json b/pakku.json index 456c1aa0b..d56a1b5dc 100644 --- a/pakku.json +++ b/pakku.json @@ -310,4 +310,4 @@ "export": false } } -} \ No newline at end of file +} diff --git a/scripts/update_forge_auto_install.sh b/scripts/update_forge_auto_install.sh new file mode 100755 index 000000000..9c82cc963 --- /dev/null +++ b/scripts/update_forge_auto_install.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Update placeholders in serverpack run file and inside serverpack zip(s) +# using values from pakku-lock.json. Mirrors the GitHub workflow logic. + + +LOCK_JSON="./pakku-lock.json" +BASE_FILE=".pakku/server-overrides/forge-auto-install.txt" +RUN_FILE="./build/serverpack/forge-auto-install.txt" +SERVERPACK_DIR="./build/serverpack" + +# Extract info like in the workflow +MC_VERSION=$(jq -r '.mc_versions[0]' "$LOCK_JSON") +LOADER_KEY=$(jq -r '.loaders | keys[0]' "$LOCK_JSON") +LOADER_VERSION=$(jq -r --arg k "$LOADER_KEY" '.loaders[$k]' "$LOCK_JSON") + +# Normalize loader type to expected casing +case "$LOADER_KEY" in + forge|Forge) LOADER_TYPE="Forge" ;; + neoforge|NeoForge) LOADER_TYPE="NeoForge" ;; + *) LOADER_TYPE="$LOADER_KEY" ;; +esac + +echo "minecraftVersion=$MC_VERSION" +echo "loaderType=$LOADER_TYPE" +echo "loaderVersion=$LOADER_VERSION" + +cp "$BASE_FILE" "$RUN_FILE" + +sed -i -e "s/LOADER_VERSION/${LOADER_VERSION}/g" "$RUN_FILE" +sed -i -e "s/LOADER_TYPE/${LOADER_TYPE}/g" "$RUN_FILE" +sed -i -e "s/MINECRAFT_VERSION/${MC_VERSION}/g" "$RUN_FILE" + +for z in "$SERVERPACK_DIR"/*.zip; do + zip -q -u -j "$z" "$RUN_FILE" + echo "patched zip: $z" +done + +rm "$RUN_FILE" +