#!/bin/sh set -eu # 面板入口脚本:适合“面板固定执行 start.sh,但只能上传文件/编辑文件”的环境。 # 用法: # 1. 下载本文件 # 2. 上传到面板,并按需要重命名为面板要求的固定入口名(通常就是 start.sh) # 3. 修改下面几个变量 # 4. 点击运行 REPO_URL="${REPO_URL:-https://gitea.service.jazzwhom.top/Passthem/pt-minecraft-modpack}" REPO_REF="${REPO_REF:-main}" PT_SERVER="${PT_SERVER:-server-01-random-block}" INSTALL_DIR="${INSTALL_DIR:-$(pwd)/pt-minecraft-modpack}" ARCHIVE_PATH="${ARCHIVE_PATH:-$(pwd)/pt-minecraft-modpack.tar.gz}" TMP_DIR="${TMP_DIR:-$(pwd)/pt-minecraft-modpack.__tmp}" PT_JAVA_ARGS="${PT_JAVA_ARGS:--Xms1G -Xmx1G}" log() { printf '[panel-entry] %s\n' "$*" } fail() { printf '[panel-entry] ERROR: %s\n' "$*" >&2 exit 1 } need_cmd() { command -v "$1" >/dev/null 2>&1 || fail "缺少命令: $1" } need_cmd sh need_cmd tar need_cmd find rm -rf "$TMP_DIR" mkdir -p "$TMP_DIR" log "下载仓库归档: $REPO_URL ($REPO_REF)" if command -v curl >/dev/null 2>&1; then curl -fL --retry 3 --retry-delay 2 -o "$ARCHIVE_PATH" "$REPO_URL/archive/$REPO_REF.tar.gz" elif command -v wget >/dev/null 2>&1; then wget -O "$ARCHIVE_PATH" "$REPO_URL/archive/$REPO_REF.tar.gz" else fail "缺少 curl 或 wget" fi log "解压仓库归档" tar -xzf "$ARCHIVE_PATH" -C "$TMP_DIR" EXTRACTED_DIR="$(find "$TMP_DIR" -mindepth 1 -maxdepth 1 -type d | head -n 1)" [ -n "$EXTRACTED_DIR" ] || fail "解压失败" rm -rf "$INSTALL_DIR" mv "$EXTRACTED_DIR" "$INSTALL_DIR" rm -rf "$TMP_DIR" "$ARCHIVE_PATH" cd "$INSTALL_DIR" log "调用仓库内 start.sh" PT_REPO_URL="$REPO_URL" \ PT_REPO_REF="$REPO_REF" \ PT_SERVER="$PT_SERVER" \ PT_JAVA_ARGS="$PT_JAVA_ARGS" \ bash ./start.sh