EverFurnace

Never lose cooking progress again. EverFurnace simulates furnace operation while you're away — come back from adventuring and your Furnace, Blast Furnace, or Smoker will have everything ready, as if it never stopped.

File Details

everfurnace-1.20.1-3.2.0.jar

  • R
  • Jun 22, 2026
  • 114.09 KB
  • 255
  • 1.20.1
  • Forge

File Name

everfurnace-1.20.1-3.2.0.jar

Supported Versions

  • 1.20.1

Curse Maven Snippet

Forge

implementation fg.deobf("curse.maven:everfurnace-1155210:8302762")
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

Changelog for EverFurnace (Forge 1.20.1)

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.


[3.2.0] - 2026-06-22

✨ Added

  • Brewing stands now keep brewing while you're away. Leave potions brewing, wander off far enough that the area stops ticking, and when you come back any brews that would have finished are done — with a little burst of particles and a quick message telling you how many brews finished. This shines for automated, hopper-fed brewing setups, which can finish many brews during one long trip.
  • A new setting, brewingStandCatchupEnabled (on by default), lets you turn brewing catch-up off on its own while still catching up furnaces and campfires.

[3.1.0] - 2026-06-04

🛠️ Fixed

  • Furnaces added by other mods — the kind that are built on top of the vanilla furnace — now catch up on their cooking while you're away again. After the 3.0 update a few of these had quietly stopped catching up; they're back to working like normal furnaces.

✨ Added

  • Other mods can now sign up a whole family of cooking blocks for catch-up at once, instead of registering each block type one at a time. This makes it easier for other mods to add EverFurnace support.

[3.0.0] - 2026-05-29

🎉 Highlights

Other Mods Can Now Use EverFurnace Catch-Up

  • EverFurnace now has a public API that lets other mods add the same offline catch-up behaviour to their own cooking blocks.
  • If a mod registers its cooking block with EverFurnace, players will get the same "finished while you were away" experience for that block as they do for vanilla furnaces and campfires — particle burst, chat notification, the works.
  • The first planned expansion using this is EverFurnace: Farmer's Delight, which will bring catch-up to the Cooking Pot.

Vanilla Cooking Blocks Now Use the Same System Internally

  • Furnaces, Blast Furnaces, Smokers, and Campfires all go through the new API behind the scenes. Nothing changes for players — this just makes the whole mod cleaner and easier to maintain.

⚙️ Changed

  • No config changes. All existing settings work exactly as before.

[2.3.0] - 2026-05-29

✨ Added

  • Campfires keep cooking while you're away — put food on a lit campfire (regular or soul campfire), wander off far enough that the area goes to sleep, and the campfire remembers what it was doing. When you come back, it catches up on the time it missed and finishes any food that should be done by now, with a little puff of flames and smoke so you can see it happened.
    • Each spot on the campfire only cooks the one item you placed and doesn't refill itself, so you'll never come back to a surprise pile of food.
    • The catch-up only happens once you're close enough to see it.
    • You can turn this off or set a limit on how much time it catches up in the settings, the same way you already can for furnaces.

[2.2.0] - 2026-05-07

✨ Added

  • Admin commands/everfurnace inspect [x y z], /everfurnace tick <radius>, /everfurnace simulate <radius> <ticks>. Require permission level 2.
    • inspect shows the stored EverFurnace state (lastGameTime, delta, pendingNotification, pendingXp) and whether catch-up would fire on the next tick.
    • tick forces serverTick on every loaded furnace within the given radius, triggering catch-up immediately. Positions are snapshotted before iteration to avoid concurrent-modification hazards.
    • simulate backdates lastGameTime by the given number of ticks on every loaded furnace within the given radius (radius guard prevents accidental dimension-wide backdating). Follow with tick to apply catch-up instantly during testing.

🐛 Fixed

  • Vanilla clients can now connect to servers running EverFurnace — the channel is now registered with acceptMissingOr, so unmodded clients skip the packet handshake silently instead of being kicked.
  • Particle packets are no longer sent to vanilla clientssendCatchupParticles now checks isRemotePresent before sending, so only players with the mod installed receive the effect packet.
  • mods.toml now declares displayTest = "IGNORE_ALL_VERSION" — Forge will not require clients to have the mod installed to join a server running it.

[2.1.0] - 2026-03-29

🎉 Highlights

XP Catch-Up

  • XP that would have been awarded during offline smelting is no longer silently lost.
  • EverFurnace accumulates owed XP during each catch-up pass and awards it the next time the player opens the furnace.
  • Fractional XP values (e.g. iron ore awards 0.7 XP per item) are handled correctly — the remainder carries over across multiple opens until it tips over a whole point.

Login Notifications

  • On multiplayer servers, pending furnace notifications are now delivered on player login rather than only when the player physically opens each furnace.
  • If multiple furnaces have pending notifications, a single summary message is sent: [EverFurnace] 3 furnaces cooked a combined 96 items while you were away.
  • Controlled by the new notifyOnLogin config key (default true).

Notification Cooldown

  • Rapid chunk-load/unload cycles can no longer flood chat with repeated notifications.
  • Notifications from the same furnace are batched until the cooldown window expires.
  • Items cooked during the cooldown are never dropped — they accumulate into the existing pending count and are delivered together.
  • Controlled by notificationCooldownTicks (default 200 / 10 seconds).

Sound Cue

  • A furnace crackle sound plays at the furnace position when catch-up completes and at least one item was cooked, giving an audio cue alongside the particle burst.
  • Client-side only. Can be disabled via soundCueEnabled in everfurnace-client.toml.

Light State Snap

  • The furnace block's LIT state is now immediately synced on the client when catch-up completes, so the local light level updates without waiting for the next server block-update packet.
  • Client-side only. Can be disabled via lightFlickerEnabled in everfurnace-client.toml.

⚙️ Changed

  • everfurnace-common.toml — two new keys in the notifications section:
    • notificationCooldownTicks (long, default 200, range 0–72 000)
    • notifyOnLogin (boolean, default true)
  • everfurnace-client.toml — two new keys in the visuals section:
    • soundCueEnabled (boolean, default true)
    • lightFlickerEnabled (boolean, default true)

[2.0.1] - 2026-03-26

🐛 Fixed

  • Dedicated server crash on startupCatchupParticlePacket referenced Minecraft (a client-only class) directly in its packet handler. On a dedicated server, Forge attempted to load the class during packet registration and threw a BootstrapMethodError with Attempted to load class ... for invalid dist DEDICATED_SERVER. Fixed by splitting client-side particle logic into a separate CatchupParticleHandler class annotated @OnlyIn(Dist.CLIENT), and delegating to it from the packet via DistExecutor.unsafeRunWhenOn(Dist.CLIENT, ...) so the server never touches client classes.

[2.0.0] - 2026-03-24

🎉 Highlights

Catch-Up Mechanic — Core Overhaul

  • Furnaces now correctly simulate fuel consumption and cooking progress for time elapsed while the chunk was unloaded or the server was offline.
  • Results are delivered instantly when the chunk reloads — no waiting for each item to cook individually.
  • Applies to all three vanilla furnace types: Furnace, Smoker, and Blast Furnace.

Forge Config API

  • Key catch-up parameters are now tunable via config files without touching code.
  • everfurnace-common.toml — server-side settings: master toggle, catch-up tick cap, delta threshold, and player notification toggle.
  • everfurnace-client.toml — client-side settings: particle burst toggle.

Offline Progress Notification

  • When a player opens a furnace that cooked items while they were away, a chat message is sent showing the number of items processed.
  • Example: [EverFurnace] Your furnace cooked 32 items while you were away.
  • Can be disabled per-server via notifyPlayerOnCatchup in everfurnace-common.toml.

Visual Flame Particle Burst

  • A brief burst of flame and smoke particles spawns at the furnace position when catch-up completes and at least one item was cooked.
  • Client-side only — no server impact.
  • Can be disabled via particleBurstEnabled in everfurnace-client.toml.

🐛 Fixed

  • Operator bug=+ / =- used throughout the tick method instead of += / -=, causing wildly incorrect litTime and cookingProgress values on every catch-up pass.
  • Cook time resetcookingTotalTime -= cookingTotalTime always resolved to 0, silently zeroing out the cook time instead of resetting only the progress counter.
  • Double fuel shrink — After consuming whole fuel items, a second unconditional shrink(1) fired and could corrupt the fuel stack item count.
  • Spurious catch-up on first lightlastGameTime initialised to 0 caused deltaTime to equal the entire world age on the first tick, triggering a massive unintended catch-up burst.
  • Unbounded catch-up loop — No upper limit on simulated ticks meant long offline periods could cause a server lag spike on chunk load.
  • Missing setChanged — Inventory changes and cooking progress updates during catch-up were not marked dirty, causing them to not sync to clients or persist reliably.

⚙️ Changed

  • Delta threshold — Catch-up now only fires when the tick gap meets or exceeds the configured minDeltaThreshold (default 20 ticks / 1 second). Below this the furnace is considered actively ticking and vanilla handles smelting normally.
  • Catch-up cap — Simulated time is capped at maxCatchupTicks (default 24 000 / 1 in-game day) per load event to prevent lag spikes after extended offline periods.

🔧 Technical / Developer Notes

  • onTick refactored into two private static helpers: applyFuelTime() and applyCookTime(). Each concern is independently readable and testable.
  • applyCookTime() return type is int (items cooked count) rather than boolean, used for both the notification NBT tag and the particle packet gate.
  • NBT versioning added: everfurnace_version written on every save. Currently at version 1. Future releases can key migrations off this value.
  • everfurnace_pendingNotification (int) stored on furnace persistent NBT data; cleared on first open by a player after catch-up.

[1.0.0] - 2024-12-10

🎉 Highlights

Catch-Up Mechanic — Initial Release

  • Initial implementation of the furnace catch-up mechanic via Mixin on AbstractFurnaceBlockEntity.
  • Records lastGameTime on each server tick and simulates elapsed fuel and cooking on next load.