feat: add nethergamesmc core install flow

This commit is contained in:
2026-05-31 13:39:25 +03:00
commit a7f7d2375c
6 changed files with 1448 additions and 0 deletions

73
lib/validation.sh Normal file
View File

@@ -0,0 +1,73 @@
#!/usr/bin/env bash
validate_root_usage() {
if [[ "$(id -u)" -ne 0 ]]; then
fail "$(t root_required)"
fi
}
validate_core_support() {
local supported_cores="pmmp,paper,purpur,velocity,powernukkitx,nethergamesmc"
local supported_os="ubuntu,debian"
local planned_os="arch,fedora,rocky,almalinux"
case "$CORE" in
pmmp|paper|purpur|velocity|powernukkitx|nethergamesmc)
;;
*)
fail "$(t unsupported_core "$CORE" "$supported_cores" "${SCRIPT_DIR}/manifests/cores.json")"
;;
esac
case "$OS_ID" in
ubuntu|debian)
return 0
;;
arch|fedora|rocky|almalinux)
warn "$(t os_coreplanned "$OS_ID" "${SCRIPT_DIR}/manifests/os-support.json")"
;;
*)
fail "$(t unsupported_os "$OS_ID" "$supported_os" "$planned_os" "${SCRIPT_DIR}/manifests/os-support.json")"
;;
esac
}
validate_eula() {
if ! is_java_core "$CORE"; then
return 0
fi
if [[ "${ACCEPT_EULA,,}" != "yes" ]]; then
fail "$(t eula_denied)"
fi
}
validate_port() {
local port="$1"
local protocol="$2"
if ! command -v ss >/dev/null 2>&1; then
if command -v lsof >/dev/null 2>&1; then
if [[ "$protocol" == "tcp" ]]; then
if lsof -iTCP:"$port" -sTCP:LISTEN -n -P >/dev/null 2>&1; then
fail "$(t tcp_port_in_use "$port")"
fi
else
if lsof -iUDP:"$port" -n -P >/dev/null 2>&1; then
fail "$(t udp_port_in_use "$port")"
fi
fi
return 0
fi
fi
if [[ "$protocol" == "tcp" ]]; then
if ss -ltn | awk '{print $4}' | grep -q ":${port}$"; then
fail "$(t tcp_port_in_use "$port")"
fi
else
if ss -lun | awk '{print $5}' | grep -q ":${port}$"; then
fail "$(t udp_port_in_use "$port")"
fi
fi
}