Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Shell script for downloading mods for Curseforge Modpack on Linux clients (using Vanilla Minecraft Launcher)
#!/bin/bash
## Usage:
## 1. Download the modpack zip from CurseForge
## 2. Extract zip to where you want your modpacks game directory to be (e.g. ~/minecraft/modpack/gamedir)
## 3. In terminal, run this script in your chosen game directory
## If successful, it should print out which mods its downloading, until it is done
## 4. Create an "Installation" in the Vanilla Minecraft Launcher
## * Version should be set to the correct modded minecraf version installed (eg. 1.16.4-forge-35.1.13)
## * Make sure you are running the correct java version, and are giving an appropriate amount of RAM
## Check if manifest.json exists, exit if it does not exist
if [ ! -f "manifest.json" ]; then
echo "## No manifest.json found, probably no files to download.."
exit 0
fi
OVERRIDES_DIR=$(cat manifest.json | jq -r .overrides)
if [ ! -z "${OVERRIDES_DIR}" ] && [ "${OVERRIDES_DIR}" != "null" ] && [ -d "./${OVERRIDES_DIR}" ]; then
mv "./${OVERRIDES_DIR}/"* ./
rm -r "./${OVERRIDES_DIR}"
fi
## Function to download mod files from manifest.json
function downloadFile {
if [[ $# != 2 ]]; then
echo "Not enough arguments to download file"
return
fi
## Change to mods directory
cd mods
## Get download url for mod file
MOD_FILE_URL=$(curl -sL "https://addons-ecs.forgesvc.net/api/v2/addon/${1}/file/${2}/download-url")
echo "# Downloading mods/$(basename "$MOD_FILE_URL")"
curl -sSLOJ "$MOD_FILE_URL"
}
## Make downloadFile function accessible for xargs call
export -f downloadFile
# Create mods directory if it does not exist
[ ! -d "mods" ] && mkdir "mods"
# Download all mod files to mods directory
cat manifest.json | \
jq -r '.files[] | (.projectID|tostring) + " " + (.fileID|tostring)' | \
xargs -n 1 -P 10 -I {} bash -c 'downloadFile $@' _ {}
@kaptenol
Copy link

kaptenol commented Aug 2, 2022

``

@kaptenol
Copy link

kaptenol commented Aug 2, 2022

Ukir Jepara com

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment