openmultiplayer / openmultiplayer/launcher
[Feature Request] Built-in Mod Manager — enable/disable ASI, CLEO, TXD and model files per server profile
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 203
- Forks
- 97
- PR merge metrics
- No merged PRs in 30d
Description
Summary
Currently, players who want to use client-side mods (ASI plugins, CLEO scripts, custom textures/models) have to manually copy files in and out of their GTA:SA directory, with no way to manage conflicts, enable/disable per server type, or ensure they have the correct mods installed for a given server.
A built-in Mod Manager tab inside the launcher would solve this completely.
Problem
• Players manually manage .asi, .cs, .txd, .dff files by copy-pasting in Windows Explorer
• No way to quickly disable a mod that conflicts with a specific server
• No profiles — a player who plays both Roleplay and Stunt servers needs completely different mod setups, but has to do this manually
• No visibility into what mods are currently active before joining
Proposed Solution
Add a Mod Manager tab to the launcher with the following capabilities:
- GTA:SA directory detection
Automatically scan common installation paths on launch:
• C:\Program Files\Rockstar Games\GTA San Andreas
• C:\Program Files (x86)\Rockstar Games\GTA San Andreas
• Steam path via registry key HKLM\SOFTWARE\Valve\Steam
• Manual path override in Settings - Mod list with enable/disable toggles
Display all detected client mods with:
• File name, type badge (ASI / CLEO / TXD / MODEL), size, destination folder
• Enable/disable toggle (moves file to/from a .disabled subfolder — non-destructive)
• Delete button with confirmation - Mod installation via drag & drop
• Accept .asi, .cs, .cm, .txd, .dff, .img files
• Auto-detect correct destination folder based on extension:
• .asi → / or /modloader/ if modloader is present
• .cs / .cm → /cleo/
• .txd → /models/txd/
• .dff → /models/dff/
• Show confirmation dialog with editable destination before copying - Mod Profiles
• Save named sets of enabled/disabled mods (e.g. “Roleplay”, “Stunt”, “Clean”)
• Switch profiles with one click before joining a server
• Profiles stored in launcher’s existing config storage
Why this belongs in the launcher
The launcher already knows the GTA:SA path, already handles file system operations (font copying, client version selection), and is the single point of entry before the game starts. A mod manager fits naturally here and removes the need for third-party tools like Mod Loader UI or manual file management.
This is a quality-of-life feature that directly improves the new-player experience — one of the most common frustrations in the community is mods breaking servers or vice versa.
Implementation notes
• Backend: Rust std::fs for file operations (already used in the project)
• Frontend: New tab in the existing NavBar component (React/TypeScript)
• Non-destructive: disabled mods go to <mod_folder>/.disabled/, never deleted automatically
• No external dependencies needed
Prior art
Similar implementations in other game launchers:
• Minecraft Forge launcher — mod enable/disable per profile
• KnightLauncher (open source) — drag & drop mod install with toggle
• Garry’s Mod workshop — per-server addon management
Willingness to contribute
I am willing to implement this feature and submit a PR if the team agrees it fits the project scope. I’d appreciate feedback on the preferred approach before investing time in the implementation.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the existing NavBar component, launcher path detection, file-system operations, and config storage mentioned in the issue. Confirm how these entry points support a mod list, safe enable/disable actions, drag-and-drop installation, and profiles, then define tests for path detection, extension routing, profile switching, and non-destructive file handling.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- react, rust, typescript
- Domain
- backend, desktop, frontend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100