The Mycel library
Mycel is the shared core every MyCelium mod is built on. Think of it the way you think of Fabric API: you install it once alongside your mods, and it quietly handles all the repetitive plumbing (configs, events, scheduling, diagnostics) so each mod itself can stay tiny. A typical MyCelium mod is about a hundred lines of feature code because everything boring lives here.
For players
- Install it once. One Mycel jar covers every MyCelium mod on any loader. You never need two copies.
- It does nothing visible alone. If you installed only Mycel and nothing changed in game, that is correct. The features live in the small mods.
- It adds
/mycel. One shared command for every mod: check versions, list registered mods, and reload configs without restarting. See commands. - Config screens come from it. The settings screens in the mod list (Forge and NeoForge) are Mycel's reusable UI, which is why they look the same in every mod.
What it gives mod developers
| Area | What you get |
|---|---|
| Bootstrap | One idempotent Mycel.initialize() call plus Mycel.registerMod for metadata. |
| Configuration | Typed values with ranges, categories, JSON files, migration, change listeners, and live reload in about ten lines. |
| Config screen | Reusable client UI with validation, reset, and category tabs. |
| Utilities | Cohesive BlockUtil, ItemUtil, InventoryUtil, PlayerUtil, EntityUtil, WorldUtil, TextUtil. No giant Utils class. |
| Entity replacement | EntityReplacer preserving position, equipment, health, passengers, leash, and more, plus an event hook. |
| Events | Join, leave, server lifecycle, and entity-replaced. Everything else uses the loader's native bus on purpose. |
| Networking | Vanilla-payload packets with one API for all loaders and game-thread handlers. |
| Scheduling | Server-thread runLater / runEvery plus background runAsync. |
| Registries | Deferred item, block, and entity-type registration on every loader. |
| Commands | Brigadier helpers plus the built-in /mycel diagnostics command. |
| Translations | Namespaced keys with never-crash fallback. |
| Update checker | Opt-in, async, cached, HTTPS-only, silent on failure. |
| Platform | Loader, version, mod detection, and config dir behind one service. |
What it deliberately does not do
Gameplay features do not belong in Mycel; they live in the small mods. There is also no dependency injection, no HTTP/JSON/GUI/logging frameworks beyond what Minecraft ships, and no required background threads. The full rules are in the MyCel-Lib readme.
Writing a mod on it?
Head to developing for dependency coordinates, the minimal integration snippet, and build instructions.