summaryrefslogtreecommitdiff
path: root/minecraft/mclauncher
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2025-04-12 13:53:16 -0400
committerFreya Murphy <freya@freyacat.org>2025-04-12 13:53:16 -0400
commitfefed51ba577431c18b6f703b9ea3c5fa43a73d3 (patch)
treed31d253816b690da1fe840ab09863d013825f8a6 /minecraft/mclauncher
parentopenrc (diff)
downloadimages-fefed51ba577431c18b6f703b9ea3c5fa43a73d3.tar.gz
images-fefed51ba577431c18b6f703b9ea3c5fa43a73d3.tar.bz2
images-fefed51ba577431c18b6f703b9ea3c5fa43a73d3.zip
update minecraft image
Diffstat (limited to '')
-rwxr-xr-x[-rw-r--r--]minecraft/mclauncher77
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
;;