███████╗███╗ ██╗██████╗ ██████╗ ███████╗██████╗ ██████╗ ██╗ ██╗██╗ ██╗
██╔════╝████╗ ██║██╔══██╗██╔══██╗██╔════╝██╔══██╗██╔══██╗██║ ██║██║ ██║
█████╗ ██╔██╗ ██║██║ ██║██████╔╝█████╗ ██████╔╝██████╔╝██║ ██║██║ ██║
██╔══╝ ██║╚██╗██║██║ ██║██╔══██╗██╔══╝ ██╔══██╗██╔═══╝ ██║ ██║██║ ██║
███████╗██║ ╚████║██████╔╝██║ ██║███████╗██║ ██║██║ ╚██████╔╝███████╗███████╗
╚══════╝╚═╝ ╚═══╝╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═════╝ ╚══════╝╚══════╝
EnderPull (CLI command: mc-dl) is a professional-grade command-line mod and loader package manager for Minecraft. Inspired by robust CLI utilities like yt-dlp, EnderPull communicates directly with the Modrinth and Fabric Meta APIs to manage mods, download loaders, and share modpacks natively without any web scraping or manual ZIP parsing.
- 🚀 API-Native Management: Bypasses fragile web scraping by directly querying the official Modrinth API v2.
- 🔄 Smart Auto-Updating: Scans your local mods folder, computes exact
SHA-1hashes, and queries Modrinth in bulk to discover and install updates. - 🛡️ Strict Version Matching: Prevents crashes by validating updates against your specific loader (e.g., Fabric) and Minecraft game version.
- 📦 Modpack Import/Export: Export your exact local mod configuration into a clean JSON pack, and import them elsewhere with automatic skipped-duplicate and dependency handling.
- 🌐 Stateful Loader Management: Installs, tracks, and upgrades your Fabric Loader headlessly, storing preferences in a local
.enderpull_config.json. - 🖥️ Beautiful Terminal UI: Packed with real-time progress bars, status spinners, and tables formatted via
rich. - 💻 Cross-Platform: Automatically configures paths for Windows, macOS, and Linux, and cleans up installer boilerplate automatically.
Here is a preview of the clean, tabular output you get when listing your installed mods:
$ mc-dl list
+----------------------+--------------------------+---------+--------+
| Mod Name | Filename | Version | Loader |
+----------------------+--------------------------+---------+--------+
| Sodium | sodium-fabric-0.6.0.jar | 0.6.0 | fabric |
| Iris Shaders | iris-1.8.0.jar | 1.8.0 | fabric |
| Lithium | lithium-fabric-0.12.0.jar| 0.12.0 | fabric |
+----------------------+--------------------------+---------+--------+
And downloading a mod comes with a smooth progress bar indicator:
$ mc-dl install sodium
🔍 Searching Modrinth for 'sodium'...
📥 Downloading Sodium [====================================] 100% (2.4 MB/s)
✅ Successfully installed Sodium to mods folder.
Important
Clone the repository and run the setup script. This automatically creates a Python virtual environment, installs dependencies, exposes the mc-dl command, and cleans up setup files.
Step A: Clone and Enter Directory
git clone https://github.com/cid-moosa/enderpull.git
cd enderpullStep B: Run the Installer
- Windows (PowerShell or Cmd):
.\install.bat - macOS / Linux:
bash install.sh
Tip
You only need to run the installer once. For subsequent usage, run the launch script to open a pre-configured shell with the virtual environment activated:
- Windows:
.\launch.bat - macOS / Linux:
./launch.sh
You can append -h or --help to any command to see the details of its usage and arguments.
mc-dl --helpDownloads and installs a specific mod by its name or Modrinth slug.
- Example:
mc-dl install sodium - With Constraints:
mc-dl install iris --loader fabric --mc-version 1.21.1
Queries mods online on Modrinth or filters through local jars.
- Online:
mc-dl search sodium - Local:
mc-dl search sodium --local
Deletes a mod .jar from your local mods directory.
- Example:
mc-dl remove sodium
Lists all installed mods with metadata parsed directly from local jar ZIP files.
- Example:
mc-dl list
Auto-scans your local mods, hashes their files, resolves newer versions on Modrinth matching your game version/loader, and upgrades them. Also updates Fabric loader if tracked.
- Example:
mc-dl update
Exports your current mods list with their direct URLs to a JSON package file.
- Example:
mc-dl export my-modpack.json
Reads a modpack JSON file, skips already-downloaded files, and installs missing or outdated mods.
- Example:
mc-dl import exported_packs/my-modpack.json
Provides helper subcommands to download, check, or upgrade Fabric loaders.
- Check/Update:
mc-dl fabric update - Upgrade Environment:
mc-dl fabric upgrade 1.21.4
Clears the terminal screen cross-platform.
- Example:
mc-dl clear
Cleans up workspace files (such as unused scripts) to optimize disk space.
- Example:
mc-dl self-clean
- Language: Python 3.10+
- CLI Parsing:
argparse&rich-argparse - UI & Tables:
rich - API Client:
requests
This project is licensed under the MIT License. See the LICENSE file for details.
Built with 💖 by cid-moosa