From cb45cd169a52a95b89ddd23884c290a34c46a34e Mon Sep 17 00:00:00 2001 From: Sergeant Acoustic Date: Wed, 26 Nov 2025 19:00:52 +0000 Subject: [PATCH] Added dev tool to simplify adding mods to the pack Simply run ./mrpacktool [file url] --- mrpacktool.sh | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100755 mrpacktool.sh diff --git a/mrpacktool.sh b/mrpacktool.sh new file mode 100755 index 0000000..e635236 --- /dev/null +++ b/mrpacktool.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +# User input error handling +if [[ $# -eq 0 ]]; then + echo "$0: A mod url is required." + exit 4 +fi + +# Do everything relative to this files path +parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P ) +cd "$parent_path" + +# Paths +mods_dir="/tmp/" + +# Options parsing +mod_url="$1" +out_file="${2:-$parent_path/modrinth.index.json}" + +if [ -n "$v" ]; then + echo "Verbose: $v, Mod url: $mod_url, Output: $out_file" +fi + +# https://stackoverflow.com/questions/6250698/how-to-decode-url-encoded-string-in-shell#37840948 +function urldecode() { + : "${*//+/ }" + echo -e "${_//%/\\x}" +} + +# Get file name from url trimmed by slash and url decoded +mod_file="$(urldecode ${mod_url##*/})" +trap "rm ${mods_dir}/${mod_file}" HUP INT TERM EXIT +echo "Downloading file..." +wget -N --no-verbose --directory-prefix "$mods_dir" "$mod_url" + +# Collect data required by modrinth.index.json +echo "Processing file info" +mod_path="${mods_dir}/${mod_file}" + +modrinth_size="$(du --bytes "$mod_path" | cut -f -1)" +modrinth_sha1="$(sha1sum "$mod_path" | cut -d " " -f 1)" +modrinth_sha512="$(sha512sum "$mod_path" | cut -d " " -f -1)" + +# Writing to file +echo "Writing to file" +jq ".files += [{ \ + \"downloads\": [ + \"${mod_url}\" + ], + \"env\": { + \"client\": \"required\", + \"server\": \"required\" + }, + \"fileSize\": ${modrinth_size}, + \"hashes\": { + \"sha1\": \"${modrinth_sha1}\", + \"sha512\": \"${modrinth_sha512}\" + }, + \"path\": \"mods/${mod_file}\" +}]" "$out_file" > "$out_file.tmp" + +mv "$out_file.tmp" "$out_file" + +[ $? -eq 0 ] && echo "Successfully appended mod to ${out_file}"