summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2024-05-03 16:32:12 -0400
committerFreya Murphy <freya@freyacat.org>2024-05-03 16:32:12 -0400
commit871d16c849f529c4c5daeb2c41b75af13025bea9 (patch)
treea8e8ee4c548ef9bdb513ae75dc059d48498ff816
parenta (diff)
downloadscripts-871d16c849f529c4c5daeb2c41b75af13025bea9.tar.gz
scripts-871d16c849f529c4c5daeb2c41b75af13025bea9.tar.bz2
scripts-871d16c849f529c4c5daeb2c41b75af13025bea9.zip
add mc forge
-rwxr-xr-xmcjar77
1 files changed, 72 insertions, 5 deletions
diff --git a/mcjar b/mcjar
index 7ca6255..493a8c7 100755
--- a/mcjar
+++ b/mcjar
@@ -1,5 +1,4 @@
#!/bin/sh
-
set -e
lower() {
@@ -21,6 +20,9 @@ PAPERMC_BUILD="$(lower "${PAPERMC_BUILD:-latest}")"
FABRIC_LOADER="$(lower "${FABRIC_LOADER:-latest}")"
FABRIC_INSTALLER="$(lower "${FABRIC_INSTALLER:-latest}")"
+# forge
+FORGE_VERSION="$(lower "${FORGE_VERSION:-recommended}")"
+
# other
QUIET=1
@@ -28,7 +30,7 @@ req() {
res=$(curl --fail --silent "$1")
code=$?
- if [ $code -ne 0 ]; then
+ if [ $code -ne 0 ] || [ "$res" = "" ]; then
echo "null";
else
echo "$res";
@@ -184,8 +186,71 @@ vanilla() {
get_version
}
-get_url() {
+forge() {
+ versions=$(req "https://files.minecraftforge.net/net/minecraftforge/forge/promotions_slim.json" | jq -r '.promos');
+
+ log "Using forge promotions slim json"
+
+ get_forge_url() {
+ url="https://maven.minecraftforge.net/net/minecraftforge/forge/$1/forge-$1-installer.jar"
+ code=0
+ wget -q --spider "$url" || code=$?
+ if [ $code -eq 0 ]; then
+ echo "$url";
+ fi
+ }
+
+ get_version() {
+ log "Getting VERSION for '$MC_TYPE'"
+ if [ "$MC_VERSION" = "latest" ]; then
+ MC_VERSION=$(echo "$versions" | jq -r '. | keys | .[]' | awk -F '-' '{print $1}' | sort -t "." -n -k1,1 -k2,2 -k3,3 | tail -n1)
+ fi
+ log "VERSION: $MC_VERSION"
+ }
+
+ try_forge_version() {
+ ver=$(echo "$versions" | jq -r ".\"$MC_VERSION-$FORGE_VERSION\"")
+ if [ "$ver" = "null" ] && [ "$FORGE_VERSION" != "latest" ]; then
+ FORGE_VERSION=latest
+ try_forge_version
+ else
+ echo "$ver"
+ fi
+ }
+
+ get_forge_version() {
+ log "Getting FORGE VERSION for '$MC_TYPE'"
+ if [ "$FORGE_VERSION" != "latest" ] && [ "$FORGE_VERSION" != "recommended" ]; then
+ return;
+ fi
+ ver=$(try_forge_version)
+ if [ "$ver" = "null" ]; then
+ error "Invalid VERSION: $MC_VERSION-$FORGE_VERSION"
+ fi
+ FORGE_VERSION="$ver"
+ log "FORGE VERSION: $FORGE_VERSION"
+ }
+ search_for_url() {
+ log "Searching for forge URL"
+ log "Trying MC_VERSION-FORGE_VERSION"
+ ver=$(get_forge_url "$MC_VERSION-$FORGE_VERSION")
+ if [ "$ver" != "" ]; then echo "$ver"; return 0; fi
+ log "Trying MC_VERSION-FORGE_VERSION-MC_VERSION"
+ ver=$(get_forge_url "$MC_VERSION-$FORGE_VERSION-$MC_VERSION")
+ if [ "$ver" != "" ]; then echo "$ver"; return 0; fi
+ log "Trying MC_VERSION-FORGE_VERSION-mc172"
+ ver=$(get_forge_url "$MC_VERSION-$FORGE_VERSION-mc172")
+ if [ "$ver" != "" ]; then echo "$ver"; return 0; fi
+ error "Invalid VERSION: $MC_VERSION-$FORGE_VERSION"
+ }
+
+ get_version
+ get_forge_version
+ search_for_url
+}
+
+get_url() {
log "TYPE: $MC_TYPE"
case "$MC_TYPE" in
@@ -198,6 +263,9 @@ get_url() {
"fabric")
fabric
;;
+ "forge")
+ forge
+ ;;
*)
error "Invalid TYPE: $MC_TYPE"
;;
@@ -215,7 +283,7 @@ help() {
printf "\t-l\tshow logging (verbose)\n\n"
printf "\t-t TYPE\t\tset the mc server type\n"
- printf "\t [vanilla,fabric,paper,folia,velocity,waterfall]\n\n"
+ printf "\t [vanilla,fabric,forge,paper,folia,velocity,waterfall]\n\n"
printf "\t-v VERSION\tset the mc server version\n"
printf "\t [latest,snapshot,<version>]\n\n"
@@ -247,7 +315,6 @@ while getopts "hlt:v:" arg > /dev/null; do
;;
?)
error "unknown option"
- exit 1
;;
esac;
done;