Hoppers keep transferring items while you're away.
Built a sorting system or item farm at a remote outpost? Vanilla hoppers freeze the moment their chunk unloads — meaning every item that should have flowed through them while you were gone simply didn't. EverHopper fixes that.
EverHopper doesn't simulate hopper transfers on unloaded chunks (that would be expensive and laggy). Instead, every hopper records the game time on each tick. When the chunk reloads, EverHopper looks at how much in-game time elapsed while it was unloaded and catches the hopper up — pulling items from the container above and pushing items into the container below as if it had been ticking the whole time.
Walk away for an hour, a day, a week — when you come back and the chunks reload, your sorting system, mob farm collectors, and storage chains advance to where they would have been under vanilla rules. Same end result, zero overhead while you were gone.
> Note: In singleplayer, the world only ticks while you're playing. EverHopper catches up based on in-game time elapsed, not real-world time, so closing the game and coming back tomorrow won't fast-forward your hoppers.
> Redstone-disabled hoppers don't accrue catch-up time. A hopper held off by a redstone signal stays paused, just like in vanilla.
EverHopper uses only @Inject mixins on HopperBlockEntity#pushItemsTick — no overwrites, no replacements. It introduces no custom blocks, no block entities, and no items. This makes it broadly compatible with other mixin-based hopper mods and means uninstalling it is safe: your world keeps every existing hopper, they just go back to vanilla behavior.
pushItemsTick entirelyEverHopper ships with admin/debug commands under /everhopper (requires op level 2).
| Command | Purpose |
|---|---|
/everhopper inspect [x y z] |
Show the hopper's tracked state: lastGameTime, current game time, and computed delta. Defaults to the player's feet. |
/everhopper tick <radius> |
Force pushItemsTick on every loaded hopper within the radius — useful for instant transfer without waiting. |
/everhopper simulate <ticks> <radius> |
Backdate the lastGameTime of every loaded hopper in the radius by N ticks; the next natural tick will trigger catch-up. |
These are intended for server admins and modpack debugging. They have no effect on normal gameplay. Radius is capped at 64 blocks.
Licensed under LGPL-3.0. Source available on GitHub.