Skip to content

Repository files navigation

EnderPull ⚡

License: MIT Python 3.10+ Platform Support Modrinth API

███████╗███╗   ██╗██████╗ ██████╗ ███████╗██████╗ ██████╗ ██╗   ██╗██╗     ██╗     
██╔════╝████╗  ██║██╔══██╗██╔══██╗██╔════╝██╔══██╗██╔══██╗██║   ██║██║     ██║     
█████╗  ██╔██╗ ██║██║  ██║██████╔╝█████╗  ██████╔╝██████╔╝██║   ██║██║     ██║     
██╔══╝  ██║╚██╗██║██║  ██║██╔══██╗██╔══╝  ██╔══██╗██╔═══╝ ██║   ██║██║     ██║     
███████╗██║ ╚████║██████╔╝██║  ██║███████╗██║  ██║██║     ╚██████╔╝███████╗███████╗
╚══════╝╚═╝  ╚═══╝╚═════╝ ╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝╚═╝      ╚═════╝ ╚══════╝╚══════╝

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.


✨ Features

  • 🚀 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-1 hashes, 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.

🎨 Terminal Visual Demo

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.

🚀 Setup & Launching

Important

📥 1. First-Time Installation (1-Click Installer)

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 enderpull

Step B: Run the Installer

  • Windows (PowerShell or Cmd):
    .\install.bat
  • macOS / Linux:
    bash install.sh

Tip

⚡ 2. How to Launch EnderPull

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

📖 Command Reference

You can append -h or --help to any command to see the details of its usage and arguments.

mc-dl --help

1. mc-dl install

Downloads 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

2. mc-dl search

Queries mods online on Modrinth or filters through local jars.

  • Online: mc-dl search sodium
  • Local: mc-dl search sodium --local

3. mc-dl remove

Deletes a mod .jar from your local mods directory.

  • Example: mc-dl remove sodium

4. mc-dl list

Lists all installed mods with metadata parsed directly from local jar ZIP files.

  • Example: mc-dl list

5. mc-dl update

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

6. mc-dl export

Exports your current mods list with their direct URLs to a JSON package file.

  • Example: mc-dl export my-modpack.json

7. mc-dl import

Reads a modpack JSON file, skips already-downloaded files, and installs missing or outdated mods.

  • Example: mc-dl import exported_packs/my-modpack.json

8. mc-dl fabric

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

9. mc-dl clear

Clears the terminal screen cross-platform.

  • Example: mc-dl clear

10. mc-dl self-clean

Cleans up workspace files (such as unused scripts) to optimize disk space.

  • Example: mc-dl self-clean

🛠️ Tech Stack

  • Language: Python 3.10+
  • CLI Parsing: argparse & rich-argparse
  • UI & Tables: rich
  • API Client: requests

📄 License

This project is licensed under the MIT License. See the LICENSE file for details.


Built with 💖 by cid-moosa

About

A fast, automated CLI package manager for Minecraft mods.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages