Skip to content

PetricaT/IsaacMM

Repository files navigation

isaac thumbs up The binding of Isaac - Mod Manager

Build release Downloads


An experimental way of sorting mods for the game The binding of Isaac: Rebirth (with support for any DLC) Program Window

Chapters

  1. How to use
  2. Why?
  3. How it works
  4. Developing

1. HOW TO USE

Caution

BEFORE USING THIS! BACKUP YOUR MODS FOLDER, I AM NOT RESPONSIBLE FOR ANY LOSS OF DATA

Important

This tool ONLY modifies the "metadata.xml" file, and only 1 field inside, that being "name". My tool does NOTHING else.

Download the executable for your platform from the releases tab (Windows, Linux, MacOS) and run the file.

It will first generate a config file inside the active running directory, this is used to store the path to your mods folder which you HAVE to set if you're on Windows, MacOS gets a free pass for being officially unsupported by Edmund and knowing the path is never going to change, and Linux is somewhat more standard, so we guess that the standard directory is also where Isaac is.

If your list is empty, it means the program didn't find any mods or you haven't set the mods folder.

Once your mods are loaded in, simply drag your mods around to order them like so

demo_gif

You can now press Apply Sort Order to mass-rename all the mods in the defined order.

Working with the config files

Since the addition of the auto-sort, user defined rules are also accepted, and should be made use of for simpler re-deployment upon steam workshop updates (until I get around to fixing that too). For now, you will find a file in the following directories depending on your platform:

Windows

%LOCALAPPDATA%/IsaacMM/user_rules.yaml

Linux

$XDG_CONFIG_HOME/IsaacMM/user_rules.yaml

This project respects XDG variables, mainly XDG_DATA_HOME, XDG_CONFIG_HOME & XDG_CACHE_HOME

If XDG_CONFIG_HOME is not defined, we fallback to ~/.local/share)

The cache is saved to $XDG_CACHE_HOME, with a fallback to ~/.cache

MacOS

~/Library/Application Support/IsaacMM/user_rules.yaml

Inside this file you can specify which mod IDs should go above or below others. The format is:

rules:
   - id: 1234567890
      after: [9876543210, 121212121]

   - id: 3131313131
      after: [9876543210, 121212121]

We use the steam workshop ID to identify the mods.

2. Why?

The Problem The Solution
the_problem the_solution
Ugly, Unsorted, A mess, 🤢 Clean, Organized, Pretty, 😎

If you're anything like me and use more than 2 mods that change multiple textures, you are bound to encounter overlap. Most of this is solved by merging or renaming mods to be higher/lower on the load order. But this gets annoying, fast. Introduce, this tool, which makes mass-renaming much more easier by doing it in a visual way.

3. How it works

Tboi sorts mods as follows:

  • Symbols: !@#$%^&*()
  • Numbers: 1234567890
  • Uppercase Letters: ABC
  • Lowercase Letters: abc

Important

When sorting by numbers, the game does not see 100 lower than 2, instead it counts 100 to be the same as 1. With this, we reserve the first 3 characters of a mod name to sorting

  • 001 MOD_NAME_1
  • 002 MOD_NAME_2
  • 003 MOD_NAME_3

I don't expect people to have more than 999 mods for this game, but if that proves wrong, the limit can be changed.

4. Developing

Quick rundown on the files.

The main entry point is main.py (shocker)

root
├─ main.py
└─ source
   ├─ sorter.py  -- Autosorting algorithm and masterlist handler  
   ├─ window.py  -- Original UI entrypoint, still has some logic tied to it
   ├─ widgets.py -- Layout of the GUI  
   ├─ paths.py   -- Parses steam info to automatically find the mods folder 
   ├─ models.py  -- Template for the drag and drop model 
   └─ config.py  -- Handles the config directory read/write

If you want to aid in the development of this, fork the repo and install the requierments

pip install -r requirements.txt

Create a pull request with your changes and I will approve them.

Note

The build scripts assume you have "uv" installed, if you don't have it, do yourself a favour and install it.

Known issues & TODO

  • Add config file versioning & migration
  • Add update checker & notification
  • Add auto-updater (If possible on all 3 platforms)
  • Add launch game button
  • Add UI locking on active game

About

A Qt based, cross-platform, mod manager meant to aid with the sorting of your mods for The Binding of Isaac: Rebirth

Topics

Resources

License

Stars

0 stars

Watchers

2 watching

Forks

Contributors

Languages