Cooldown Coordinator
Fabric library to help mods coordinate item movement cooldowns
What it Does
Cooldown Coordinator is a library mod intended to enable heterogeneous networks of vanilla hoppers and item transferring modded block entities to move items throughout the network in a vanilla-alike and consistent manner. For example, one goal is to allow sorters consisting of a mixture of vanilla and modded hoppers, ducts, etc. to behave predictably.
How Does it Do it?
The mod provides an interface to implement and a method to call when a cooldown should be triggered. The method may safely be called with any BlockEntity as its argument. When the target BE implements the interface, it will be notified of the cooldown and can take whatever action it deems appropriate. When this mod is installed, descendants of HopperBlockEntity which do not override HBE's insert() and innermost transfer() methods automatically implement the interface and will coordinate with other implementing BEs.
How to Use this Library
There are some important details (f.e. how to know when a cooldown should be triggered) which implementors need to get right in order for coordination to work properly. See the library's javadocs, or take a look at the wiki.
Future Goals
I would like this mod or something similar to be part of the Fabric API. At present, it is somewhere between an RFC and a WIP. If it performs as intended and there is interest from the Fabric community, I intend to maintain the mod until (and beyond) it becomes part of Fabric or something better comes along.
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 2mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 |
- Stabilize for 26.1+
- Update for Minecraft 26.1
- Release stable for 1.21.11
- Update to Minecraft 25w46a
- Update Mixin Squared to 0.3.3
- Modernize HBE mixin slightly
- Fix minor breakage in 0.8.0
- Releasing 0.8 as stable
- NOTE the new maven repository: https://maven.gnomecraft.net/releases
- Change MixinSquared dependency group to resolve conflicts (thanks Bawnorton)
- Update to MixinSquared 0.2.0 release (identical to the last beta)
- Loom 1.7 or above recommended
- Moving to new maven repository
- https://maven.gnomecraft.net/releases
- Simplify Fabric transfer API mixin using Mixin Squared
- Release as v0.8.0 beta
- Fix backwards transfers from Hoppers aimed at no Inventory
- Fix repeated transfers to Fabric Transfer API-only modded blocks
- Fix repeated transfers to Fabric Transfer API-only modded blocks
- Release for 1.20.5
- Update for 24w13a
- Follow Fabric transfer API changes
- Use Mixin Extras to improve local capture reliability
- Restores compatibility with Lithium by reverting to disabling Lithium's Hopper optimizations.
- We tried using a new Lithium API but it turns out the API cannot encompass our entire use case.
- Anyone using 0.5.0 - 0.6.1 should prefer this release.
Build for 1.20 release
Upgrade Loom and Gradle
- Implement Lithium's new cooldown interface.
- Re-enable Lithium's Hopper optimizations.
- Declare "breaks" relationship with Lithium <= 0.10.4.
- Rebuild for 1.19.3; otherwise identical to 0.4.3.
- Disable recent breaking Lithium Hopper optimizations for now.
- Official release for 1.19.
- Missed a spot for that breaking change in Fabric's transfer API.
- Upgrade deps for Minecraft 1.19-pre.1.
- Accommodate a minor breaking change in Fabric's transfer API.
- Update build deps.
- Add the mod name to our mixin methods.
- Add a ModMenu "library" badge.
- Override transfer API's HBE mixin to coordinate with Storage-only BEs.
- Refactor isItemStorageEmpty() to isStorageEmpty() and deprecate former.
- Bump FAPI version and deal with iterator changes in transfer API.
- No longer beta; all core features are implemented.
- Change notify() to not require NotNull becase it's too easy to forget.
- This fixes Ductwork crashing when transferring to a composter.
- Reimplemented using interface injection, which allows me to consolidate HopperBlockEntity code (no API changes).
- Further javadoc refinements.
This is still somewhat experimental but it has been working well for me. I'd like to get comments from at least one other mod developer before I call it any kind of "stable".
This beta release may see significant refactoring but I think the interface is stable.