Description
# Smart Inventory Manager
Smart Inventory Manager is a client-side Fabric mod that adds fast, safe inventory sorting with clean icon buttons, keybinds, multiple sort modes, JSON config recovery, Mod Menu support, and broad localization.
Author: Matfi1
## Features
- Sort the player inventory from the inventory screen.
- Sort common containers: chest, barrel, shulker box, hopper, dispenser, and dropper.
- Use compact icon buttons instead of large text buttons.
- Switch sorting mode from an in-game icon button.
- The mode icon changes to match the selected sort mode.
- Long hover tooltips explain each icon.
- Settings are available from the main/pause menu and with a keybind.
- Sorting respects protected hotbar slots when `ignoreHotbar` is enabled.
- Sorting respects configured `lockedSlots`.
- Invalid config files are backed up and replaced with defaults.
- No mixins in the MVP.
## Sort Modes
- Item ID
- Category
- Count
- Durability
- Name A-Z
- Name Z-A
## Controls
Default keybinds:
- `I`: sort player inventory
- `O`: sort opened container
- `K`: open Smart Inventory Manager settings
You can change these in Minecraft's controls menu.
## Supported Versions
Built Modrinth jars are saved in `dist/modrinth/`.
| Minecraft | Jar |
| --- | --- |
| 1.21 | `SmIm-1.21.jar` |
| 1.21.1 | `SmIm-1.21.1.jar` |
| 1.21.2 | `SmIm-1.21.2.jar` |
| 1.21.3 | `SmIm-1.21.3.jar` |
| 1.21.4 | `SmIm-1.21.4.jar` |
| 1.21.5 | `SmIm-1.21.5.jar` |
| 1.21.6 | `SmIm-1.21.6.jar` |
| 1.21.7 | `SmIm-1.21.7.jar` |
| 1.21.8 | `SmIm-1.21.8.jar` |
| 1.21.9 | `SmIm-1.21.9.jar` |
| 1.21.10 | `SmIm-1.21.10.jar` |
| 1.21.11 | `SmIm-1.21.11.jar` |
| 26.1 | `SmIm-26.1.jar` |
| 26.1.2 | `SmIm-26.1.2.jar` |
Minecraft `26.1` and `26.1.2` require Java 25.
## Installation
1. Install Fabric Loader for your Minecraft version.
2. Install Fabric API for your Minecraft version.
3. Put the matching `SmIm-*.jar` file into your `mods` folder.
4. Optional: install Mod Menu to open the config screen from the mods list.
This is a client-only mod. It is not required on servers.
## Config
The config file is created here:
```text
config/smartinventorymanager.json
```
Config keys:
- `enableInventorySort`
- `enableContainerSort`
- `buttonSide`
- `buttonScale`
- `animationEnabled`
- `sortMode`
- `ignoreHotbar`
- `lockedSlots`
If the JSON is broken, Smart Inventory Manager renames it to a timestamped `.broken` backup and creates a new default config.
## Localization
Included languages:
- English (`en_us`)
- Russian (`ru_ru`)
- German (`de_de`)
- French (`fr_fr`)
- Spanish (`es_es`)
- Portuguese, Brazil (`pt_br`)
- Italian (`it_it`)
- Polish (`pl_pl`)
- Ukrainian (`uk_ua`)
- Turkish (`tr_tr`)
- Dutch (`nl_nl`)
- Czech (`cs_cz`)
- Hungarian (`hu_hu`)
- Chinese, Simplified (`zh_cn`)
- Chinese, Traditional (`zh_tw`)
- Japanese (`ja_jp`)
- Korean (`ko_kr`)
## Compatibility
Smart Inventory Manager uses Fabric screen events and avoids unsafe widget-list indexes. If a screen is not recognized, the feature path fails softly instead of crashing the client.
Manual compatibility test targets:
- Sodium
- Iris
- Mod Menu
- Mouse Tweaks
- Shulker Box Tooltip
- JEI
- libIPN
These are manual test targets, not full compatibility certifications. Mods that also move inventory slots may conflict if both mods sort at the same time.
## Building
Build all supported Modrinth files:
```bash
./scripts/build-modrinth.sh
```
Build one Minecraft version:
```bash
./gradlew clean build -PmcVersion=1.21.11
```
Build `26.x` with Java 25:
```bash
JAVA_HOME="$PWD/.jdks/jdk-25" ./gradlew clean build -PmcVersion=26.1
JAVA_HOME="$PWD/.jdks/jdk-25" ./gradlew clean build -PmcVersion=26.1.2
```
Successful jars are copied to:
```text
dist/modrinth/
```
## Manual Test Plan
- Open the player inventory.
- Confirm the sort and mode icons are outside the inventory GUI, not in the center.
- Open chest, barrel, shulker box, hopper, dispenser, and dropper.
- Click Sort in every supported screen.
- Switch sort modes and confirm the mode icon changes.
- Use keybinds for player inventory and container sorting.
- Change GUI scale and reopen screens.
- Corrupt the config JSON and confirm backup plus default regeneration.
- Launch with Mod Menu and confirm the config screen opens.
- Launch with Sodium/Iris and confirm the GUI still renders.
## Roadmap
Planned ideas for future releases:
- Quick Stack
- Restock Hotbar
- Auto Refill
- Interactive Slot Locking UI
- Clean Inventory
## License
MIT
