A comprehensive Rust-based toolkit for creating, managing, and distributing League of Legends mods using the modpkg format.
Quick install (PowerShell, no admin):
irm https://raw.githubusercontent.com/LeagueToolkit/league-mod/main/scripts/install-league-mod.ps1 | iexThis downloads the latest release, installs it to %LOCALAPPDATA%\LeagueToolkit\league-mod, and adds it to your user PATH.
Via GitHub Releases:
- Download the latest release from GitHub Releases
- Extract the ZIP file to your preferred location
- Add the extracted directory to your PATH environment variable
- Project Management: Initialize and manage mod projects with layered structure
- Efficient Packaging: Create compressed
.modpkgfiles for distribution - Layer System: Support for multiple mod layers with priority-based overrides
- Metadata Management: Rich metadata including authors, licenses, and descriptions
- Cross-format Support: Both JSON and TOML configuration formats
- File Transformation: Extensible transformer system for asset processing
This workspace contains the following crates:
The main command-line interface for mod developers and users.
Features:
- Initialize new mod projects with interactive prompts
- Pack mod projects into distributable
.modpkgfiles - Extract existing
.modpkgfiles for inspection or modification - Display detailed information about mod packages
Usage:
# Initialize a new mod project
league-mod init --name my-awesome-mod --display-name "My Awesome Mod"
# Pack a mod project
league-mod pack --config-path ./mod.config.json --output-dir ./build
# Extract a mod package
league-mod extract --file-path ./my-mod.modpkg --output-dir ./extracted
# Show mod package information
league-mod info --file-path ./my-mod.modpkg
# Configure League installation path
league-mod config auto-detect
league-mod config set-league-path "C:/Riot Games/League of Legends/Game/League of Legends.exe"
league-mod config showLibrary for reading, writing, and manipulating the modpkg binary format.
Features:
- Reading and Writing
- Zstd compression
- Layer-based file organization
- Chunk-based data storage with metadata
- High-level project packing (with
projectfeature)
Shared utilities used by both the CLI and GUI applications.
Features:
- League of Legends installation detection (registry, running processes, common paths)
- Cross-platform path utilities
Handles mod project configuration files and metadata structures.
Features:
- JSON/TOML config support
- Layer system
- Author, license, readme and distribution metadata
- File transformer configuration
A graphical desktop application for managing League of Legends mods, built with Tauri.
Features:
- Visual mod library management
- Drag & drop mod installation
- Enable/disable mods with toggles
- Automatic League of Legends detection
- Creator Workshop for building mods (coming soon)
Status: In active development. See the design document for the full roadmap.
Configuration Example:
{
"name": "old-summoners-rift",
"display_name": "Old Summoners Rift",
"version": "1.0.0",
"description": "Brings back the classic Summoners Rift map",
"authors": [
"TheKillerey",
{ "name": "Crauzer", "role": "Contributor" }
],
"license": "MIT",
"layers": [
{
"name": "base",
"priority": 0,
"description": "Base layer of the mod"
},
{
"name": "high_res",
"priority": 10,
"description": "High resolution textures"
}
],
"transformers": [
{
"name": "tex-converter",
"patterns": ["**/*.dds", "**/*.png"]
}
]
}A typical mod project follows this structure:
my-mod/
βββ mod.config.json # Project configuration
βββ content/ # Mod content organized by layers
β βββ base/ # Base layer (priority 0)
| | βββ Aatrox.wad.client # Mods for the Aatrox wad file
β β | βββ data/
β β β βββ assets/
| | βββ Map11.wad.client # Mods for the Map11 (SR) wad file
β β | βββ data/
β β β βββ assets/
β βββ high_res/ # High resolution layer
β βββ gameplay/ # Gameplay modifications layer
βββ build/ # Output directory for .modpkg files
βββ README.md # Project documentation/description
league-mod init
# Follow the interactive promptsPlace your mod files in the appropriate layer directories:
reworked-aatrox/content/base/data/characters/aatrox/skins/skin0.bin
reworked-aatrox/content/base/assets/characters/aatrox/skins/base/aatrox_base_tx_cm.texEdit mod.config.json to add metadata, authors, and configure layers:
{
"name": "aatrox-rework",
"display_name": "Aatrox Visual Rework",
"version": "1.0.0",
"description": "A complete visual overhaul for Aatrox",
"authors": ["Your Name"],
"layers": [
{
"name": "base",
"priority": 0,
}
]
}league-mod pack
# Creates aatrox-rework_1.0.0.modpkg in the build/ directoryThe layer system allows for modular and overrideable mod content:
- Base Layer: Always present, contains core mod files
- Custom Layers: Additional layers with configurable priorities
- Override Behavior: Higher priority layers override lower priority layers for the same files
- Selective Installation: Users can potentially choose which layers to install
Example layer configuration:
{
"layers": [
{
"name": "base",
"priority": 0,
"description": "Core modifications"
},
{
"name": "optional_sounds",
"priority": 10,
"description": "Optional sound replacements"
},
{
"name": "experimental",
"priority": 20,
"description": "Experimental features"
}
]
}Transformers allow preprocessing of files during the packing process:
{
"transformers": [
{
"name": "tex-converter",
"patterns": ["**/*.png", "**/*.jpg"],
"options": {
"format": "dds",
"compression": "bc7"
}
},
...
]
}Prerequisites:
- Rust 1.70+ (2021 edition)
- Git
Build steps:
git clone https://github.com/LeagueToolkit/league-mod.git
cd league-mod
cargo build --releaseThe compiled binary will be available at target/release/league-mod.exe
This project is licensed under the GNU Affero General Public License v3.0.
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.
This project uses Conventional Commits for automated changelog generation and semantic versioning:
# Features (minor version bump)
git commit -m "feat: add support for custom transformers"
# Bug fixes (patch version bump)
git commit -m "fix: resolve file path handling on Windows"
# Breaking changes (major version bump)
git commit -m "feat!: change configuration file format"
# Other types: docs, style, refactor, test, chore
git commit -m "docs: update installation instructions"All contributions go through our CI pipeline:
- Create a PR - All changes must be submitted via pull request
- CI Checks - Automated checks run on every PR:
- β Code compilation on Linux, Windows, and macOS
- β Test suite execution
- β Clippy linting for code quality
- β Code formatting verification
- β Security audit for vulnerabilities
- β License and dependency checks
- Review & Merge - Maintainer review and merge approved PRs
Releases are automated using release-plz:
- Make commits using conventional commit format
- Push to main branch
- Release-plz creates a Release PR with version bump and changelog
- Merge the PR to trigger automatic release with Windows binaries
For detailed documentation about the modpkg format and advanced usage, visit our GitHub Wiki.
If you encounter any issues or have questions:
- Check the GitHub Issues
- Consult the Wiki documentation
- Join our community discussions
Made with β€οΈ for the League of Legends modding community.