File Details
everfurnace-neoforge-1.21.1-3.1.0.jar
- R
- Jun 5, 2026
- 106.79 KB
- 279
- 1.21.1
- NeoForge
File Name
everfurnace-neoforge-1.21.1-3.1.0.jar
Supported Versions
- 1.21.1
Curse Maven Snippet
Changelog for Neoforge EverFurnace 1.21.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.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-06-01
🎉 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-04-28
✨ Added
- Admin commands —
/everfurnace inspect [x y z],/everfurnace tick <radius>,/everfurnace simulate <radius> <ticks>. Require permission level 2.inspectshows the stored EverFurnace NBT state (lastGameTime, delta, pendingNotification, pendingXp) and whether catch-up would fire on the next tick.tickforcesserverTickon every loaded furnace within the given radius, triggering catch-up immediately. Positions are snapshotted before iteration to avoid concurrent-modification hazards.simulatebackdateslastGameTimeby the given number of ticks on every loaded furnace within the given radius (radius guard prevents accidental dimension-wide backdating). Follow withtickto apply catch-up instantly during testing.
🐛 Fixed
- Vanilla clients can now connect to servers running EverFurnace — the catch-up
particle packet is now registered as
.optional(), so unmodded clients skip it silently instead of disconnecting. - Dedicated server classloading safety —
CatchupParticlePacketnow holds the registered handler method and gates execution behind aFMLEnvironment.distcheck, preventing the@OnlyIn(CLIENT)CatchupParticleHandlerclass from being touched on dedicated server distributions. neoforge.mods.tomlnow declaresside="SERVER"— NeoForge 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
notifyOnLoginconfig key (defaulttrue).
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(default200/ 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
soundCueEnabledineverfurnace-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
lightFlickerEnabledineverfurnace-client.toml.
⚙️ Changed
everfurnace-common.toml— two new keys in thenotificationssection:notificationCooldownTicks(long, default200, range0–72 000)notifyOnLogin(boolean, defaulttrue)
everfurnace-client.toml— two new keys in thevisualssection:soundCueEnabled(boolean, defaulttrue)lightFlickerEnabled(boolean, defaulttrue)
[2.0.1] - 2026-03-26
🐛 Fixed
- Dedicated server crash on startup —
CatchupParticlePacketreferencedMinecraft(a client-only class) directly in its packet handler. On a dedicated server, Forge attempted to load the class during packet registration and threw aBootstrapMethodErrorwithAttempted to load class ... for invalid dist DEDICATED_SERVER. Fixed by splitting client-side particle logic into a separateCatchupParticleHandlerclass annotated@OnlyIn(Dist.CLIENT), and delegating to it from the packet viaDistExecutor.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
notifyPlayerOnCatchupineverfurnace-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
particleBurstEnabledineverfurnace-client.toml.
🐛 Fixed
- Operator bug —
=+/=-used throughout the tick method instead of+=/-=, causing wildly incorrectlitTimeandcookingProgressvalues on every catch-up pass. - Cook time reset —
cookingTotalTime -= cookingTotalTimealways resolved to0, 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 light —
lastGameTimeinitialised to0causeddeltaTimeto 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
onTickrefactored into two private static helpers:applyFuelTime()andapplyCookTime(). Each concern is independently readable and testable.applyCookTime()return type isint(items cooked count) rather thanboolean, used for both the notification NBT tag and the particle packet gate.- NBT versioning added:
everfurnace_versionwritten on every save. Currently at version1. 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.1] - 2024-12-13
🐛 Fixed
- Fixed the cookingProgress time after the elapsed time is applied.
[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
lastGameTimeon each server tick and simulates elapsed fuel and cooking on next load.