-
Notifications
You must be signed in to change notification settings - Fork 41
feat: add Modrinth integration (#255) #431
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
feat: add Modrinth integration (#255) #431
Conversation
Add ability to search, install and manage mods from Modrinth: - Search mods filtered by Minecraft version and loader - One-click install from search results - Check for updates on installed Modrinth mods - Update mods to latest compatible version Creates a dedicated "Mods" tab in the version selector. Mods are downloaded to the custom_mods folder with metadata tracking. Example: Go to Mods tab, search "sodium", click install, and the mod will be ready for your next launch. Safe: Metadata stored in .modrinth_meta.json tracks installed mods. Updating a mod removes the old file before downloading the new one. Closes CCBlueX#255 Screenshots:  
1efe6e5 to
601207a
Compare
|
This PR still needs some fixes before it's ready for review. Converting to draft. |
Downloads: - Use temp file + atomic rename to prevent corruption on network failure - Verify file size matches expected before saving - Add 5-minute timeout for large downloads Updates: - Download new version BEFORE deleting old (safe if connection fails) Auto-sync existing mods: - Scans mods folder and calculates SHA-512 hash - Looks up hash on Modrinth API to identify mods - Automatically tracks manually-installed mods for updates - Example: WorldEdit installed manually → detected → update available 
Adds 'Auto-update Modrinth mods' toggle in Settings → General. When enabled, the launcher automatically: 1. Checks for updates on all tracked Modrinth mods before launch 2. Downloads and installs new versions if available 3. Shows progress: 'Updating Sodium...' etc. Disabled by default. Updates run silently - if update fails, the game still launches with existing mod versions.
|
Fixed the issues, ready for review now. |
| <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> | ||
| <path d="M1 4v6h6M23 20v-6h-6"/> | ||
| <path d="M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15"/> | ||
| </svg> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
AI generated SVG slop. Replace with actual icon.
| <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> | ||
| <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/> | ||
| <polyline points="7 10 12 15 17 10"/> | ||
| <line x1="12" y1="15" x2="12" y2="3"/> | ||
| </svg> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
AI generated SVG slop. Replace with actual icon.
|
|
||
| let response = HTTP_CLIENT | ||
| .get(&url) | ||
| .header("User-Agent", "LiquidLauncher/0.5.0") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hard-coded user agent
|
|
||
| let response = HTTP_CLIENT | ||
| .get(&url) | ||
| .header("User-Agent", "LiquidLauncher/0.5.0") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hard-coded user agent

Add ability to search, install and manage mods from Modrinth:
Creates a dedicated "Mods" tab in the version selector.
Mods are downloaded to the custom_mods folder with metadata tracking.
Example: Go to Mods tab, search "sodium", click install,
and the mod will be ready for your next launch.
Safe: Metadata stored in
.modrinth_meta.jsontracks installed mods.Updating a mod removes the old file before downloading the new one.
Closes #255
Screenshots