File Details
everfurnace-1.20.1-2.0.1.jar
- R
- Mar 26, 2026
- 83.78 KB
- 3.2K
- 1.20.1
- Forge
File Name
everfurnace-1.20.1-2.0.1.jar
Supported Versions
- 1.20.1
Curse Maven Snippet
[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.

