Minecraft modlist bisector to help track down bugs.
This project is based on the Binary Reduction algorithm from the following paper:
Christian Gram Kalhauge and Jens Palsberg. 2019. Binary reduction of dependency graphs. In Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE 2019). Association for Computing Machinery, New York, NY, USA, 556–566. https://doi.org/10.1145/3338906.3338956
- Add the companion mod DependencyGrapher to the game instance you want to debug.
- Start the game with DependencyGrapher enabled. It should generate a file in the game instance's
.minecraft
folder calleddependencygrapher.json
. - Disable or remove DependencyGrapher. It excludes itself from the dependency graph it generates, so you may encounter errors if any of its dependencies are disabled.
- Install uv; then clone this repository, open it in a terminal, and run
uv sync
to initialize the Python tool. - Run
uv run bisect start path/to/dependencygrapher.json
.- If there are specific mods you want to keep enabled at all times, you can use the
-r
flag for each modid. For example:uv run bisect start path/to/dependencygrapher.json -r hexcasting -r create
- If there are specific mods you want to keep enabled at all times, you can use the
- Start the game and attempt to reproduce the issue, then close the game.
- Run
uv run bisect good
oruv run bisect bad
, depending if the issue occurred or not. - Repeat steps 6-7 until the bisector finds a minimal modlist to reproduce the issue.
- To clean up, run
uv run bisect reset
to reenable all mods.
This project is managed by uv. To get started with contributing to modlist-bisector, install uv, then run the following commands:
uv sync
uv run pre-commit install