Season 2
Season 2 is a rewrite of my Minecraft mods. All Season 2 mods are developed and tested together, at the same time, in the same codebase.
During Season 1 (2018-2025), I developed all my mods separately. This made it difficult to start new projects, annoying to port projects between Minecraft versions, error-prone to maintain code shared between multiple projects, and switching between projects sometimes required long waiting periods as the development tooling got its act together. This factors combined caused me to burn out of Minecraft modding.
During Season 2 (2025-?), I aim to address these problems with new development tooling, such as the poorly-titled project sanity.
Scope
Season 2 includes:
- Packages for 1.20.1 and 1.21.1.
- Rebind Narrator for 1.20.1, 1.21.1,
1.21.5, and 1.21.11. - Crowmap for 1.20.1, 1.21.1,
1.21.5, and 1.21.11.
Modder Name Lib
As part of project sanity, I have decided to use a library mod to reduce development time and cut down on duplicate copies of the things I keep cut-pasting between projects. You probably do not need to download Modder Name Lib separately. Modder Name Lib is included in all mods that use it, using the “jar-in-jar” systems in Fabric, Forge, and NeoForge.
If you manually download it, modloaders will (probably!) prefer to load the version you installed instead of the bundled copies in each of the mods. Could be useful when debugging a problem.
It is called “Modder Name Lib” because a “moddernamelib” is a derisive term for “libraries only intended to be used by their creator”.
Identification
Season 1 mods have a small version number (like 2.1 or something) and if the mod has a logo visible in-game, it is probably a hand-drawn logo.
Season 2 mods have a large version number equal to the date they were released (such as 2025.08.21), and the mod has a monospace-font icon with a colored triangle in the lower-right.
Changelog
v2026.08.29
I rewrote the ENTIRE build system; all of my mods are now built with a new build pipeline that’s faster and clearer than before. Kinda proud of it but I also want to push out a build to make extra sure nothing has broken in the meantime.
ModderNameLib
- Compile with new tooling.
- Push down blockentity renderer utils (preparation for 26.1; it finally stopped being crossroadable)
- (All Forge and Neoforge versions) Cut down on startup logspam.
Crowmap
- Compile with new tooling.
- (1.20.1 Forge) Cut down on startup logspam.
Rebind Narrator
- Compile with new tooling.
- (1.20.1 Forge) Cut down on startup logspam.
Packages
- Compile with new tooling.
- Update to latest ModderNameLib (blockentity renderer utils).
- The inWorldStickyPackages config option was backwards; setting it to ‘false’ turned it on. Now fixed.
- Config files have NOT been migrated because it was not intended to be enabled by default.
- The “insert all” (ctrl-rightlclick) action removes items from your inventory in a different order.
- Specifically, it tries to remove items from your hand last. This way you can keep ctrl-clicking more packages to insert more of the same item.
- Let me know if this feels weird, it’s pretty niche stuff.
- (1.20.1) Fix Packages writing to the world during deserialization. (Packages on Create contraptions no longer crash.)
- (1.20.1 Forge) Fix IItemHandler for sticky packages. It now… actually works!
- (1.20.1 Forge) Cut down on startup logspam.
v2026.08.07
ModderNameLib
No changes; just uploading because a version of ModderNameLib with this version exists in Packages 1.21.1, which did get a release today, and I want you to be able to find it standalone if you need it. (The woes of date-based versioning.)
Packages
- (1.21.1) Fix crash when putting an enchanted item in a package. (I would like to get off Mr. Codec’s Wild Ride.)
- (1.21.1) Tweak package style networking code. Marginally more efficient (doesn’t serialize the whole block ID every time)
v2026.07.18
- Drop 1.21.5 support.
ModderNameLib
- Always datagen to version-specific folders by default.
Packages
- With regard to package actions (take-all vs. take-stack, etc), generally the mod no longer cares whether you are sneaking, only whether you have the physical Shift key pressed. This fixes problems where rebinding “sneak” to Ctrl or Alt made it impossible to activate certain actions. Thanks to GlintingPlanet11 for reporting this problem because I totally forgot you could rebind “sneak”.
v2025.12.23
- Update tooling.
- New version of Loom means Fabric mods no longer ship with a separate refmap file. This is a big change, so please report mixin apply failures.
ModderNameLib
- Now supports 1.21.11.
- Remove usages of
RenderTypeto account for changes in 1.21.11. - (1.21.1 Neoforge, 1.21.5 Neoforge) Correct a cut-paste typo in an error message.
- Large refactor of the datagen/registry system.
- Add a DyeColor and color-handling utility.
- (1.20.1) Add a BlockColor/ItemColor utility.
- (1.21.5) Fix client utilities.
Packages
- Update to latest ModderNameLib.
- Creative menu order now matches the ordering of vanilla blocks with sixteen colors.
- Ensure opaque colors are used in rendering, which may fix the Package front-face rendering black. (ty Kryn)
Rebind Narrator
- Update to lastest ModderNameLib.
- Now supports 1.21.11.
- This is probably the final 1.21.5 release since few people play it anymore.
Crowmap
- Update to lastest ModderNameLib.
- Now supports 1.21.11.
- This is probably the final 1.21.5 release since few people play it anymore.
v2025.11.13
(Only ModderNameLib and Crowmap were released.)
- Add a bunch of singleton nullchecks, just in case something like the previous race-condition happens again.
ModderNameLib
- Remove
ResourceLocationfrom the version-independent code to prepare for changes in the next Minecraft version. - (1.21.1, 1.21.5) Add tick-handler utilities used by the new Crowmap update.
Crowmap
- (1.21.1, 1.21.5) Maps now update when they are inside Bundles and Shulker Boxes.
- Specifically, anything with a
bundle_contentsorcontainerdata component. - (1.21.1: Also compatiblity for packages from my Packages mod.)
- Turn it on or off in the config file.
- Sadly not possible to implement in a performant way on 1.20, due to lack of data components.
- Specifically, anything with a
v2025.10.21
ModderNameLib
- (Forge, Neoforge) New mechanism to ensure dependent mods load after ModderNameLib, fixing a race condition.
- (Neoforge 1.21.1) Some 3d-model related classes were placed in the wrong package. They have been moved.
- Update issues/sources URLs to the new location.
Packages
- (Forge, Neoforge) Eliminate intermittent crash on startup caused by a mod loading race condition.
- (Neoforge 1.21.1) All of the Neoforge-specific classes were placed in the wrong package. They have been moved.
- Update issues/sources URLs to the new location.
Crowmap
- (Forge, Neoforge) Eliminate intermittent crash on startup caused by a mod loading race condition.
- Update issues/sources URLs to the new location.
Rebind Narrator
- (Forge, Neoforge) Eliminate intermittent crash on startup caused by a mod loading race condition.
- Update issues/sources URLs to the new location.
v2025.09.12
ModderNameLib
- “Latches”, a datatype MNL uses to refer to things it’s going to register, are now deduplicated
- (1.20.1) Backport the “retexturable model” code from 1.21.1
Packages
- Remove usage of a deprecated fabric-rendering-api method
- (1.20.1) Backport the improved model retexturing engine from 1.21.1
- (1.20.1) Fix horrible dupe bug lmao
v2025.09.11
- In-game version number is now zero-padded, just like it is on mod hosting platforms. GH#1
- Update bundled copy of ModderNameLib to 2025.09.11.
ModderNameLib
- (1.20.1) Fix Fabric 1.20.1 mods crashing on startup when using Java 17. Sorry about that. GH#7
- (1.21.1) Include a small amount of code for working with “retexturable models”.
- This will come to 1.20.1 at a later time.
Packages
- (1.20.1) Fix a scenario where if a mod forgets to call
Package#canPlaceItem, it can lead to a dupe bug. It will now void the offending items instead (there isn’t much else I can do). GH#8 - (1.21.1) Restructure the package and package-crafter retexturing logic. It’s a lot simpler now (and uses some of the new moddernamelib code).
- This will come to 1.20.1 at a later time
v2025.08.21
This is a test release of mods created with my new modding pipeline. Please report any bugs/crashes.
Crowmap
- Rewrite the mod.
- There is now a config file for the tooltip behavior.
- If you don’t like the tooltip, you can turn it off.
- You can disable the “this tooltip will now hide itself” feature.
- 1.21.5: Remove a horrible mixin used to display the tooltip, in favor of a standard modloader tooltip event.
- Fabric: Now depends on Fabric API.
Rebind Narrator
- Rewrite the mod.
- Fabric 1.21.1+: Integrate with “AMECS Reborn”.
- Fabric: New config file.
- Enable/disable mod integrations.
- If AMECS is not installed, configure whether you’re required to hold CTRL to activate the narrator keybind.
This isn’t strictly needed on Neoforge, because you’ve always been able to configure key modifiers through the Neoforge keybindings screen.
Packages
- Now available for 1.21.1 Fabric as well as 1.20.1.
- Now available for 1.21.1 Neoforge as well as Forge 1.20.1.
- New item: Sticky Syrup. Apply it to a package to make it sticky. Sticky packages remember their item even when they are empty.
- This replaces the old system of packages becoming sticky when they are next to a slime/honey block. Not many people knew about it!
- The old system is available behind a config option.
- Tweak interactions with regard to sticky packages. (For example, you can insert items into an empty, sticky package, even if they aren’t items from your hand.)
- Remove the annoying honey particles from sticky packages. Sticky packages can now be distinguied by “sticky” text that appears when shifting.
- It is behind a client config option, if you want them back for some reason…
- Stickiness might actually work on Forge!!!!! (lmao) it wasn’t being enforced through the
IItemHandler. - Slightly less willing to be placed vertically. You have to look up/down a bit farther.
- Fix an issue where items which stacked to 16 could be deleted using Packages inventory interactions.
- On Fabric, a nonnull
RenderMaterialis passed when working with fabric-api, possibly fixing some clientside mod-compat issues. - On 1.20.1, migrate off of a deprecated
fabric-apimethod for registering custom models. - On 1.21.1,
PackageBlockEntityno longer implements vanillaContainer! Instead, modloader-specific inventory mechanisms are used.- On NeoForge, the Package exposes an
ItemHandlercapability. On Fabric, the Package exposes anItemStorageAPI. - This was a rather large change so I’d like to test it before backporting it to 1.20.1.
- On NeoForge, the Package exposes an
- On 1.21.1, the Package item also exposes these modloader-specific inventories.
- This means other mods which can, e.g., pull blocks out of shulker boxes in your inventory, may be able to pull items out of Packages too.
- This feature needs more testing.
On NeoForge, enable the “NeoForge Light Pipeline” in Mods -> NeoForge -> Client settings -> NeoForge Light Pipeline. This will improve the apperance of the Package Crafter.
On Fabric 1.20.1, if you have Sodium remember to install Indium. No longer necessary as of Sodium for 1.21.1.