A powerful tool that automatically updates Minecraft modpacks using the Modrinth API, with intelligent modloader compatibility and client/server .mrpack generation. Now featuring a beautiful GUI with LunarBit theming!
- Modern dark theme with LunarBit styling
- Intuitive configuration panel with all options
- Real-time output monitoring with colored logs
- One-click updates with progress tracking
- Cross-platform compatibility (Windows, macOS, Linux)
- Automatically checks for mod updates using Modrinth API v2
- Respects Minecraft version compatibility (including sub-version matching like 1.21.x)
- Smart modloader filtering with Quilt β Fabric backward compatibility
- Supports Fabric, Quilt, Forge, and NeoForge modloaders
- Safe backup and replacement of existing mod files
- Generate separate client and server modpack files
- Automatic server compatibility filtering using Modrinth API
- Proper environment tags (
client
/server
required/unsupported) - Support for overrides folder (configs, resource packs, etc.)
- Follows official Modrinth modpack specification
- Color-coded terminal output for easy status tracking
- Detailed changelog generation in Markdown format
- Update summary with counts of updated, up-to-date, and failed mods
- Export all mods to local
mods/
directory
- Python 3.8 or higher
- Internet connection for Modrinth API access
- Clone the repository:
git clone https://github.com/LunarBit-dev/Modrinth-Auto-Updater.git
cd Modrinth-Auto-Updater
- Quick Setup (recommended):
# Linux/macOS
chmod +x setup.sh && ./setup.sh
# Windows
setup.bat
Or manually:
pip install -r requirements.txt
Launch the beautiful GUI interface with enhanced LunarBit theming:
# Universal launcher (automatically chooses best mode)
python3 launcher.py
# Explicit GUI launch
python3 launcher.py --gui
# Platform-specific launchers
./run_gui.sh # Linux/macOS
run_gui.bat # Windows
python3 run_gui.py # Direct Python
- π¨ Stunning Design - Modern dark theme with LunarBit colors and enhanced typography
- οΏ½ Smart File Selection - Choose between folder or .mrpack file with visual dialog
- οΏ½ Real-time Status - Live path validation and detailed progress tracking
- βοΈ Rich Configuration - Enhanced options panel with descriptions and validation
- π One-Click Updates - Streamlined workflow with intelligent status updates
- π Beautiful Output - Enhanced terminal output with better fonts and spacing
# Auto-detect best mode (GUI if available, CLI otherwise)
python3 launcher.py
# Force CLI mode with arguments
python3 launcher.py --cli --modpack-dir path/to/modpack --client
# Auto-detect CLI mode (when CLI arguments are provided)
python3 launcher.py --modpack-dir path/to/modpack --server
# Update mods and export to local mods/ folder
python3 update_modpack.py --modpack-dir path/to/modpack
# Generate client .mrpack file
python3 update_modpack.py --modpack-dir path/to/modpack --client
# Generate server .mrpack file (with server compatibility filtering)
python3 update_modpack.py --modpack-dir path/to/modpack --server
# Generate both client and server .mrpack files
python3 update_modpack.py --modpack-dir path/to/modpack --client --server
- Launch GUI:
./run_gui.sh
(Linux/macOS) orrun_gui.bat
(Windows) - Click "Browse" and select your modpack folder
- Enable "Generate client .mrpack" if desired
- Click "π Update Modpack"
- Open the GUI and select your modpack
- Check "π± Generate client .mrpack" and "π₯οΈ Generate server .mrpack"
- Set custom overrides folder if needed
- Start the update and monitor progress in real-time
usage: update_modpack.py [-h] --modpack-dir MODPACK_DIR [--client] [--server]
[--overrides-folder OVERRIDES_FOLDER]
options:
-h, --help Show this help message and exit
--modpack-dir MODPACK_DIR Path to modpack directory or .mrpack file
--client Generate client .mrpack file
--server Generate server .mrpack file
--overrides-folder FOLDER Name of overrides folder (default: overrides)
usage: update_modpack.py [-h] --modpack-dir MODPACK_DIR [--client] [--server] [--overrides-folder OVERRIDES_FOLDER]
options:
--modpack-dir MODPACK_DIR Path to modpack folder or .mrpack file
--client Generate client .mrpack file
--server Generate server .mrpack file
--overrides-folder FOLDER Custom overrides folder (default: overrides)
### Input Formats
The script accepts:
- **Modpack folders** containing `modrinth.index.json` or `index.json`
- **`.mrpack` files** (automatically extracted)
### Modloader Compatibility
| Modpack Type | Accepts Mods For |
|--------------|------------------|
| Fabric | Fabric only |
| Quilt | Quilt + Fabric (backward compatibility) |
| Forge | Forge only |
| NeoForge | NeoForge only |
### Server Filtering
When generating server .mrpack files, the script:
1. Queries each mod's `server_side` compatibility via Modrinth API
2. Includes only mods marked as `"required"` or `"optional"` for servers
3. Excludes client-only mods (e.g., Sodium, OptiFine)
4. Reports skipped mods in the output
## π§ Examples
### Example 1: Basic Update
```bash
python3 update_modpack.py --modpack-dir "./MyModpack/"
Result: Updates all mods, exports to mods/
, generates changelog
python3 update_modpack.py --modpack-dir "./MyModpack.mrpack" --client
Result: Creates MyModpack.mrpack
optimized for client installation
python3 update_modpack.py --modpack-dir "./MyModpack/" --server
Result: Creates MyModpack-server.mrpack
with only server-compatible mods
python3 update_modpack.py --modpack-dir "./MyModpack/" --client --server --overrides-folder config
Result: Creates both client and server .mrpack files with custom config folder
mods/
- Directory containing all updated mod files{modpack-name}_changelog.md
- Detailed update changelog{modpack-name}.mrpack
- Client modpack (if--client
){modpack-name}-server.mrpack
- Server modpack (if--server
)
# Modpack Update Changelog - 2025-07-21
## π Updated Mods (2)
- **Sodium**: `mc1.21.4-0.6.0` β `mc1.21.6-0.6.13`
- **Fabric API**: `0.104.0+1.21` β `0.129.0+1.21.8`
## β
Up-to-date Mods (15)
- JEI: `19.22.4.118`
- REI: `16.0.744`
...
modrinth-modpack-updater/
βββ update_modpack.py # Main script
βββ requirements.txt # Python dependencies
βββ README.md # This file
βββ LICENSE # MIT License
βββ .gitignore # Git ignore rules
βββ examples/ # Example modpacks and configs
- Type hints for better code maintainability
- Error handling with detailed logging
- Modular design with separate functions for each feature
- API rate limiting respect for Modrinth API
- Cross-platform compatibility (Windows, macOS, Linux)
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Make your changes
- Add tests if applicable
- Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Support for CurseForge modpacks
- GUI interface
- Batch processing for multiple modpacks
- Mod dependency resolution
- Custom update channels (alpha, beta, release)
- Integration with mod hosting platforms
- Some mods may not have proper server compatibility tags on Modrinth
- Very large modpacks (500+ mods) may take longer to process
- Rate limiting may cause slower updates for modpacks with many mods
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Discord: LunarBit Discord
This project is licensed under the MIT License - see the LICENSE file for details.
- Modrinth for providing an excellent API
- Minecraft community for the amazing modding ecosystem
- All contributors and users of this tool
If this tool helped you, please consider giving it a star on GitHub!
Made with β€οΈ by LunarBit for the Minecraft modding community