diff options
Diffstat (limited to '')
-rwxr-xr-x[-rw-r--r--] | minecraft/mclauncher | 77 |
1 files changed, 70 insertions, 7 deletions
diff --git a/minecraft/mclauncher b/minecraft/mclauncher index 487c929..98a2610 100644..100755 --- a/minecraft/mclauncher +++ b/minecraft/mclauncher @@ -6,8 +6,9 @@ set -e # DEFAULT VARIABLE GENERATORS # +MEMORY="${MEMORY:-1G}" + jvm_args() { - MEMORY="${MEMORY:-1G}" printf -- "-Xms$MEMORY -Xmx$MEMORY " printf -- "-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 " printf -- "-XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch " @@ -18,6 +19,10 @@ jvm_args() { printf -- "-XX:MaxTenuringThreshold=1" } +lower() { + echo "$1" | tr '[:upper:]' '[:lower:]' +} + # # ENV VARS # @@ -25,13 +30,24 @@ jvm_args() { SERVER_DIR="$(realpath ${SERVER_DIR:-./server})" JVMARGS=${JVMARGS:-$(jvm_args)} +MC_TYPE="$(lower "${MC_TYPE:-vanilla}")" +MC_VERSION="$(lower "${MC_VERSION:-latest}")" + # # PREDEFINE VARS # MCLAUNCHER_INFO="" MCLAUNCHER_BINARY="" -MCLAUNCHER_QUIET=1 +MCLAUNCHER_QUIET=0 +MCLAUNCHER_CACHE="$SERVER_DIR/.mclauncher" + +# +# INTERNET CHECK +# + +HAS_INTERNET=1 +UPDATED=0 # # HELPERS @@ -48,6 +64,12 @@ log() { fi } +warn() { + if [ "$MCLAUNCHER_QUIET" -eq 0 ]; then + printf '\x1b[33m[WARN]\t\x1b[0m%s\n' "$*" > /dev/stderr + fi +} + step() { if [ "$MCLAUNCHER_QUIET" -eq 0 ]; then printf '\x1b[36m[STEP]\t\x1b[0m%s\n' "$*" > /dev/stderr @@ -66,9 +88,29 @@ get_key() { info_step() { step "info" - # getting latest info from mcjar - MCLAUNCHER_INFO="$(mcjar -a)" + # check if we can use the internet + if ! nc -zw1 google.com 443 &>/dev/null; then + warn "Cannot internet access internet" + HAS_INTERNET=0 + fi + + # get the latest from mcjar if possible + if [ $HAS_INTERNET -eq 1 ]; then + if ! MCLAUNCHER_INFO="$(mcjar -a)"; then + warn "Failed to get newest information from mcjar" + MCLAUNCHER_INFO="" + fi + fi + # get information from cache if latest failed + if [ "$MCLAUNCHER_INFO" == "" ]; then + if [ ! -e "$MCLAUNCHER_CACHE" ]; then + error "No offline cache file found" + fi + MCLAUNCHER_INFO="$(cat "$MCLAUNCHER_CACHE")" + fi + + echo "$MCLAUNCHER_INFO" > "$MCLAUNCHER_CACHE" [ "$MCLAUNCHER_QUIET" -eq 1 ] || echo "$MCLAUNCHER_INFO"; } @@ -128,15 +170,24 @@ download_step() { step "download" if [ "$MCLAUNCHER_BINARY" != "" ]; then - log "jar is up to date... skipping" - return; + # check if jar file is valid + if ! 7z t "$MCLAUNCHER_BINARY" &>/dev/null; then + warn "jar file is corrupted" + else + log "jar is up to date... skipping" + return; + fi + fi + + if [ $HAS_INTERNET -eq 0 ]; then + error "Cannot download jar due to lack of internet" fi # clean up old files rm -f "$SERVER_DIR"/*.jar rm -f "$SERVER_DIR"/*.jar.log rm -f "$SERVER_DIR"/*.bat - rm -f "$SERVER_DIR/run.sh" + rm -f "$SERVER_DIR"/run.sh # update the jar log "jar is out of date... updating" @@ -145,6 +196,7 @@ download_step() { log "downloading '$jar_url'" wget -q "$jar_url" -O "$SERVER_DIR/$jar_name" MCLAUNCHER_BINARY="$jar_name" + UPDATED=1 } # @@ -166,11 +218,19 @@ install_step_forge() { install_step() { step "install" + if [ "$UPDATED" -eq 0 ]; then + log "jar not updated... skipping" + return; + fi + type="$(get_key "MC_TYPE")" case "$type" in "forge") install_step_forge ;; + "neoforged") + install_step_forge + ;; *) log "install step not needed for '$type'" ;; @@ -207,6 +267,9 @@ execute_step() { "forge") execute_step_forge ;; + "neoforged") + execute_step_forge + ;; *) execute_step_default ;; |