Skip to content

Conversation

@CompileRider
Copy link
Contributor

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 #255

Screenshots

Modrinth Search

Modrinth Updates

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:
![Modrinth Search](gh_assets/modrinth-search.png)
![Modrinth Updates](gh_assets/modrinth-updates.png)
@CompileRider CompileRider marked this pull request as draft January 6, 2026 02:34
@CompileRider CompileRider force-pushed the feat/modrinth-integration-255 branch from 1efe6e5 to 601207a Compare January 6, 2026 02:34
@CompileRider
Copy link
Contributor Author

⚠️ Work in Progress

This PR still needs some fixes before it's ready for review. Converting to draft.

@CompileRider CompileRider marked this pull request as ready for review January 6, 2026 03:05
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

![Auto-detect and update](https://raw.githubusercontent.com/CompileRider/LiquidLauncher/feat/modrinth-integration-255/gh_assets/modrinth-sync.png)
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.
@CompileRider
Copy link
Contributor Author

Fixed the issues, ready for review now.

Comment on lines +107 to +110
<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>
Copy link
Member

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.

Comment on lines +133 to +137
<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>
Copy link
Member

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")
Copy link
Member

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")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hard-coded user agent

@1zun4
Copy link
Member

1zun4 commented Jan 20, 2026

Please review your own code. I appreciate the effort of making this pull request, but the code does not line up with any good standards at all and I cannot merge this when the code has AI generated SVG, does not use imports properly, keeps duplicating code, hard-codes values such as user agents and so on.

The UI does not work out either, since we now have a "Additional Mods" section but a whole "Mods" Tab.
image

Another issue that we have this "Modrinth Mods" List, which does not refresh after installing a mod and we cannot uninstall from there either.

Modrinth Mods could also easily use the maven dependency system instead of downloading into the custom mods folder, which would make updating easier and maintains a proper structure without naming conflicts.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Modrinth mod downloading and auto updateing

2 participants