Skip to content
ย 
ย 

Repository files navigation

League Modding Tauri Rust React

๐Ÿ”ฅ FLINT

League of Legends Asset Extractor & Modding IDE

A powerful, modern tool for extracting and modifying League of Legends champion skins and assets.


โœจ Features

๐ŸŽฎ Smart Game Detection

  • Automatically detects League of Legends installation path
  • Supports multiple installation methods (Riot Client, Steam, custom paths)
  • Windows Registry integration for reliable detection
  • Real-time validation of game files

๐Ÿ—‚๏ธ Multi-Tab Workspace

  • Unified tab bar for all open work: projects, individual WAD sessions, and WAD Explorer
  • Switch freely between any tab without losing state
  • Close individual tabs independently; each tab type has its own fallback chain

๐ŸŒ WAD Explorer

  • Browse the entire game's WAD archive library without extracting anything
  • Virtual file system tree organized by category (Champions, Maps, etc.)
  • Lazy-load WAD chunks on demand โ€” only reads what you expand
  • Instant file preview (textures, BIN, audio, hex) inline in the panel
  • Debounced search with regex toggle across all loaded WADs
  • Quick-action cards for fast filtering by asset type (Textures, BIN, Audio, Models)

๐Ÿ“ฆ WAD Archive Operations

  • High-performance WAD file reading and extraction using league-toolkit
  • Automatic hash resolution via CommunityDragon hashtables
  • Selective asset extraction for champions and skins
  • Support for ZSTD and Deflate compression formats
  • Browse individual .wad.client files in a dedicated tab session

๐Ÿ”ง BIN File Editor

  • Full BIN property file parsing via ltk_ritobin / ltk_meta
  • Python-like text representation (ritobin format)
  • VS Code-style syntax highlighting with bracket pair colorization
  • Pre-conversion of BIN files to .ritobin for instant loading
  • Support for all BIN data types:
    • Primitives (bool, i8/u8, i16/u16, i32/u32, i64/u64, f32)
    • Vectors (Vec2, Vec3, Vec4) and Matrices (Mtx44)
    • Colors (RGBA) and Strings
    • Hashes, Links, Pointers, Embeds, and Options
    • Containers (List, Map, Optional)

๐Ÿ–ผ๏ธ Asset Preview

  • 3D Models: Real-time WebGL preview for champion meshes and static models
    • SKN (Skinned Mesh) with texture support
    • SKL (Skeleton) bone visualization
    • SCB/SCO (Static Mesh) for particle geometry and props
    • Material visibility toggles and wireframe mode
  • Textures: DDS and TEX file decoding (BC1, BC3, ETC formats) via ltk_texture
  • Hex Viewer: Binary file inspection with offset display
  • Text: Syntax-highlighted text file viewing
  • Images: PNG/JPG preview with base64 encoding

๐ŸŽจ Texture Recoloring

  • Multiple Recoloring Modes:
    • Hue Shift: Rotate all colors while preserving saturation and brightness
    • Colorize: Convert entire texture to a single hue while preserving shading
    • Grayscale + Tint: Apply monochrome effect with color overlay
  • Smart Filtering:
    • Automatically skips distortion/distort textures (UV effect maps)
    • Preserves black backgrounds and alpha transparency
    • Optional checkbox to include distortion textures if needed
  • Batch Processing: Recolor entire folders of textures at once
  • Color Presets: Quick-select from 8 common colors (Red, Orange, Gold, Green, Cyan, Blue, Purple, Pink)
  • Live Preview: Before/after toggle to compare changes

๐Ÿ’พ Checkpoint System

  • Create named snapshots of your project state
  • Restore to any previous checkpoint instantly
  • Compare checkpoints to see exactly what changed
  • Auto-checkpoint option before destructive operations

๐Ÿ“ค Mod Export

  • Export to .fantome format (compatible with cslol-manager) via ltk_fantome
  • Export to .modpkg format via ltk_modpkg (compatible with League Mod Tools)
  • Champion and skin metadata embedding
  • Automatic path normalization for mod manager compatibility

๐ŸŽจ Theming System

  • Customizable color themes via CSS variables
  • Gray-red default palette with accent color swappable
  • Dark mode optimized UI

โœ… Advanced Features

Note

The following advanced features are now fully operational thanks to the stable ltk_ritobin and ltk_meta crates from LeagueToolkit.

Feature Status Description
Refather System โœ… Working Intelligent asset path rewriting for custom skins. Renames asset paths in BIN files to use custom ASSETS/{Creator}/{Project}/ prefixes for conflict-free mod loading.
BIN Concatenation โœ… Working Automatic merging of linked BIN files into optimized bundles. Creates __Concat.bin and updates main BIN's linked paths for better mod manager compatibility.
BIN Editing โœ… Working Full read/write support for BIN files with syntax-highlighted editor. Save edited .ritobin back to binary .bin format.

These features are implemented in src-tauri/src/core/repath/refather.rs and src-tauri/src/core/bin/concat.rs respectively, providing full compatibility with league-mod tooling.


๐Ÿ—บ๏ธ Roadmap

Feature Status Description
SKN/SKL 3D Preview โœ… Working In-app 3D model viewer for champion skin meshes and skeletons with texture mapping
SCB/SCO Preview โœ… Working Static mesh viewer for particle geometry and props via ltk_mesh
Animation Preview โœ… Working ANM file playback on 3D models with skeleton animation
Parallel Asset Loading โœ… Working Mesh, skeleton, and animations load concurrently for faster previews
Sound Bank Editing ๐Ÿ”œ Planned BNK/WPK audio file preview and editing support

๐Ÿ—๏ธ Project Structure

flint/
โ”œโ”€โ”€ src/                        # React TypeScript Frontend
โ”‚   โ”œโ”€โ”€ main.tsx                # Application entry point
โ”‚   โ”œโ”€โ”€ components/             # UI Components
โ”‚   โ”‚   โ”œโ”€โ”€ App.tsx             # Root component & layout
โ”‚   โ”‚   โ”œโ”€โ”€ TopBar.tsx          # Navigation, tab bar & export actions
โ”‚   โ”‚   โ”œโ”€โ”€ FileTree.tsx        # Project asset file browser
โ”‚   โ”‚   โ”œโ”€โ”€ WadExplorer.tsx     # Unified game WAD browser (VFS)
โ”‚   โ”‚   โ”œโ”€โ”€ WadBrowser.tsx      # Single WAD session browser panel
โ”‚   โ”‚   โ”œโ”€โ”€ WadPreviewPanel.tsx # In-memory WAD chunk preview
โ”‚   โ”‚   โ”œโ”€โ”€ CenterPanel.tsx     # Dynamic content area
โ”‚   โ”‚   โ”œโ”€โ”€ PreviewPanel.tsx    # Asset preview container
โ”‚   โ”‚   โ”œโ”€โ”€ StatusBar.tsx       # Status & hash info
โ”‚   โ”‚   โ”œโ”€โ”€ WelcomeScreen.tsx   # Landing page
โ”‚   โ”‚   โ”œโ”€โ”€ ContextMenu.tsx     # Right-click menus
โ”‚   โ”‚   โ”œโ”€โ”€ CheckpointTimeline.tsx # Checkpoint UI
โ”‚   โ”‚   โ”œโ”€โ”€ Toast.tsx           # Notification toasts
โ”‚   โ”‚   โ”œโ”€โ”€ modals/             # Modal dialogs
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ NewProjectModal.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ExportModal.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ SettingsModal.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ FirstTimeSetupModal.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ RecolorModal.tsx
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ UpdateModal.tsx
โ”‚   โ”‚   โ””โ”€โ”€ preview/            # Asset preview panels
โ”‚   โ”‚       โ”œโ”€โ”€ BinEditor.tsx / LazyBinEditor.tsx
โ”‚   โ”‚       โ”œโ”€โ”€ BinPropertyTree.tsx
โ”‚   โ”‚       โ”œโ”€โ”€ ModelPreview.tsx / LazyModelPreview.tsx
โ”‚   โ”‚       โ”œโ”€โ”€ ImagePreview.tsx
โ”‚   โ”‚       โ”œโ”€โ”€ TextPreview.tsx
โ”‚   โ”‚       โ”œโ”€โ”€ HexViewer.tsx
โ”‚   โ”‚       โ””โ”€โ”€ AssetPreviewTooltip.tsx
โ”‚   โ”œโ”€โ”€ lib/                    # Utilities & API bridge
โ”‚   โ”‚   โ”œโ”€โ”€ api.ts              # Tauri command wrappers
โ”‚   โ”‚   โ”œโ”€โ”€ state.ts            # Application state management
โ”‚   โ”‚   โ”œโ”€โ”€ types.ts            # TypeScript type definitions
โ”‚   โ”‚   โ”œโ”€โ”€ utils.ts            # Helper functions
โ”‚   โ”‚   โ”œโ”€โ”€ logger.ts           # Frontend logging
โ”‚   โ”‚   โ”œโ”€โ”€ fileIcons.tsx       # File type icon mapping
โ”‚   โ”‚   โ”œโ”€โ”€ ritobinLanguage.ts  # Monaco BIN syntax definition
โ”‚   โ”‚   โ””โ”€โ”€ datadragon.ts       # Champion data integration
โ”‚   โ”œโ”€โ”€ styles/                 # Global CSS styles
โ”‚   โ””โ”€โ”€ themes/                 # Customizable CSS themes
โ”‚
โ”œโ”€โ”€ src-tauri/                  # Rust Backend
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ main.rs             # Application entry point
โ”‚   โ”‚   โ”œโ”€โ”€ lib.rs              # Library exports
โ”‚   โ”‚   โ”œโ”€โ”€ error.rs            # Error types & handling
โ”‚   โ”‚   โ”œโ”€โ”€ state.rs            # Managed application state
โ”‚   โ”‚   โ”œโ”€โ”€ commands/           # Tauri IPC handlers
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ project.rs      # Project CRUD operations
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ export.rs       # Mod export commands
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ bin.rs          # BIN file operations
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ file.rs         # File I/O & preview
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ wad.rs          # WAD archive commands
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ hash.rs         # Hash resolution
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ champion.rs     # Champion & skin commands
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ checkpoint.rs   # Checkpoint commands
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ mesh.rs         # 3D mesh commands
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ league.rs       # League detection commands
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ updater.rs      # App update commands
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ validation.rs   # Asset validation commands
โ”‚   โ”‚   โ””โ”€โ”€ core/               # Core functionality
โ”‚   โ”‚       โ”œโ”€โ”€ bin/            # BIN parsing & conversion
โ”‚   โ”‚       โ”œโ”€โ”€ wad/            # WAD extraction
โ”‚   โ”‚       โ”œโ”€โ”€ hash/           # CommunityDragon hashtables
โ”‚   โ”‚       โ”œโ”€โ”€ repath/         # Asset repathing & refathering
โ”‚   โ”‚       โ”œโ”€โ”€ export/         # Fantome/Modpkg export
โ”‚   โ”‚       โ”œโ”€โ”€ mesh/           # SKN/SKL/SCB mesh parsing
โ”‚   โ”‚       โ”œโ”€โ”€ league/         # Game detection
โ”‚   โ”‚       โ”œโ”€โ”€ project/        # Project management
โ”‚   โ”‚       โ”œโ”€โ”€ champion/       # Champion & skin discovery
โ”‚   โ”‚       โ”œโ”€โ”€ validation/     # Asset validation
โ”‚   โ”‚       โ”œโ”€โ”€ checkpoint.rs   # Checkpoint system
โ”‚   โ”‚       โ””โ”€โ”€ frontend_log.rs # Frontend log forwarding
โ”‚   โ””โ”€โ”€ Cargo.toml              # Rust dependencies
โ”‚
โ”œโ”€โ”€ .github/workflows/          # CI/CD
โ”‚   โ”œโ”€โ”€ build.yml               # Build + auto-release on push to main
โ”‚   โ””โ”€โ”€ release.yml             # Tag-based release
โ”‚
โ””โ”€โ”€ docs/                       # Documentation

๐Ÿš€ Getting Started

Prerequisites

  • Rust (1.75+ stable)
  • Node.js (v20+)
  • npm
  • Windows 10+ (for NSIS installer)

Installation

# Clone the repository
git clone https://github.com/LeagueToolkit/Flint
cd "Flint - Asset Extractor"

# Install frontend dependencies
npm install

# Run in development mode
npm run tauri dev

Building

# Build optimized production binary with installer
npm run tauri build

The installer is generated at src-tauri/target/release/bundle/nsis/Flint_{version}_x64-setup.exe.

Releases

Pushing to main automatically builds and creates a GitHub Release with the installer attached. See BUILD.md for details.


๐ŸŽจ Theming

Flint supports custom color themes! Create your own theme by copying src/themes/default.css and modifying the CSS variables:

:root {
  --accent-primary: #your-color;
  --accent-secondary: #your-secondary-color;
  /* ... */
}

๐Ÿ› ๏ธ Tech Stack

Layer Technology
Frontend React 18, TypeScript, Vite 5
Backend Rust, Tauri 2.0
BIN Parsing ltk_ritobin, ltk_meta (LeagueToolkit)
WAD Handling league-toolkit
Texture Decoding ltk_texture (LeagueToolkit)
Mesh Parsing ltk_mesh (LeagueToolkit)
Animation ltk_anim (LeagueToolkit)
Mod Export ltk_fantome, ltk_modpkg, ltk_mod_project
Hash Resolution CommunityDragon hashtables, xxhash-rust

๐Ÿ“ฆ Key Dependencies

Rust Backend

  • tauri 2.0 - Cross-platform desktop framework
  • league-toolkit - WAD archive operations
  • ltk_mesh - SKN/SKL/SCB/SCO mesh parsing (LeagueToolkit)
  • ltk_anim - ANM animation parsing (LeagueToolkit)
  • ltk_ritobin / ltk_meta - BIN file parsing
  • ltk_fantome / ltk_modpkg - Mod format export
  • ltk_texture - DDS/TEX texture decoding (LeagueToolkit)
  • reqwest - HTTP client for hash downloading
  • tokio - Async runtime

Frontend

  • @tauri-apps/api 2.0 - Tauri JavaScript bindings
  • @tauri-apps/plugin-dialog - Native file dialogs
  • react 18.3 - UI framework
  • typescript 5.6 - Type safety

๐Ÿ“œ License

This project is for educational purposes. League of Legends and all related assets are property of Riot Games.


Made with โค๏ธ for the League modding community

About

modding ide type shi

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages