Skip to content

Latest commit

 

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Version License

SmartSmelt

High-performance, preset-based smelting accelerator for Rust (uMod/Oxide) with automation-safe behavior, smart fuel pull, and population-aware AutoTune scheduling.

Current version: 1.2.4

Designed for modded servers (2x–1000x+), heavy conveyor automation, and wipe-day peak usage.


Highlights

  • Preset-based acceleration: 2x, 3x, 5x, 10x, 25x, 50x, 100x, 1000x, Instant
  • Single global loop (no per-oven timers)
  • Adaptive scaling: processes more ovens per loop as load increases
  • Dynamic loop interval: automatically adjusts tick interval based on active ovens
  • Smart fuel auto-pull: pulls only the additional wood needed (delta-based)
  • Consistent wood-only burn: lit furnaces follow the selected preset even without ore
  • Mixing-table acceleration: recipes use the same selected preset as furnaces
  • Native-rate accounting: accelerated idle burn adds only the amount above Rust's built-in 1x consumption
  • Mixed-ore fuel top-up fix: adding a second ore type triggers a NextTick recalc
  • Large furnace fuel balancing: distributes wood across fuel slots
  • Charcoal overflow control: Skip (automation-friendly) or Pause (vanilla-strict)
  • AutoTune: set average population + bias and let SmartSmelt tune scheduling
  • Ore splitting toggle: enable/disable input-slot splitting
  • Minimal spam by default; debug tools when needed

How it Works (Performance Architecture)

SmartSmelt avoids the classic “timer per furnace” approach. Instead it:

  1. Tracks active ovens in a lightweight dictionary.
  2. Runs a single global loop that processes up to a capped number of ovens per pass.
  3. Uses a snapshot list rebuilt only when the tracked set changes.
  4. Uses a round-robin cursor to prevent starvation.
  5. Optionally adjusts global loop interval dynamically based on load.

This keeps CPU predictable even with hundreds of active ovens.


Installation

  1. Place SmartSmelt.cs into:
    • oxide/plugins/
  2. Reload:
    • oxide.reload SmartSmelt
  3. Edit config:
    • oxide/config/SmartSmelt.json

Commands

  • /ss.info
    • Shows plugin status, AutoTune status, and effective scheduling values
  • /ss.debug
    • Enables additional debug logging (use briefly)

Configuration

Preset

"Preset": "10x"

Supported: 2x, 3x, 5x, 10x, 25x, 50x, 100x, 1000x, Instant

AutoTune (recommended for ease of use)

AutoTune automatically selects scheduling settings based on your AveragePopulation and Preset.

"AutoTuneEnabled": true,
"AveragePopulation": 300,
"AutoTuneBias": "Balanced",
"AutoTuneWriteToConfig": false

Bias modes:

  • Balanced — default behavior (recommended)
  • Performance — more conservative (reduces hitch risk)
  • Responsiveness — more aggressive (snappier updates)

AutoTuneWriteToConfig

  • false (default): runtime-only tuning; config stays as you wrote it
  • true: writes the chosen scheduling values into the config so you can see them

Ore splitting

"EnableOreSplitting": true

SmartSmelt 1.2.4 and newer enforce conservation during furnace and refinery distribution: the amount added to destination slots can never exceed the amount deducted from the incoming stack. Uneven pre-existing stacks are filled safely without creating additional ore or crude oil. Direct drag/drop, quick move, hover-loot/H-key transfers, and other post-transfer inventory routes are all rebalanced through the same conservation rule. In mixed-ore furnaces, the newly added ore type uses its existing slots plus any empty input slots without moving the ore types the player already arranged.

  • true: distributes moved ore across input slots (when safe)
  • false: respects vanilla stacking, but fuel auto-pull still works

Mixing tables

"EnableMixingTableScaling": true
  • true: mixing-table recipe duration follows the selected SmartSmelt preset.
  • false: leaves mixing tables at Rust's vanilla speed.
  • The setting is added automatically during upgrades without replacing existing administrator preferences.

Charcoal overflow

"CharcoalOverflowMode": "Skip"
  • Skip (recommended): prevents automation stalls
  • Pause: vanilla-strict behavior (can stall under heavy charcoal congestion)

Reduced wood cost

"ReducedWoodCostEnabled": false,
"WoodCostScale": 0.5
  • When disabled, fuel and charcoal production follow the selected preset normally.
  • When enabled, WoodCostScale controls the accelerated portion of wood consumption.
  • Existing configuration values and administrator preferences are preserved during normal upgrades.

Wipe-Day Recommendations

  • Use AutoTuneEnabled = true
  • Set AveragePopulation to your real peak (not average daily)
  • Prefer Bias = Balanced (or Performance on weaker hardware)
  • Keep CharcoalOverflowMode = Skip for conveyor-heavy servers

Troubleshooting

  • Smelting feels “bursty” at peak:
    • Lower DynamicMaxGlobalLoopInterval slightly or increase AdaptiveMaxOvensPerTick (only if CPU allows)
  • Periodic hitches:
    • Lower AdaptiveMaxOvensPerTick first, then raise DynamicMaxGlobalLoopInterval
  • Want visibility:
    • Run /ss.info to view effective scheduling values (especially when AutoTune is enabled)

License

SmartSmelt is licensed under the GNU General Public License v3.0 (GPLv3).

Commercial redistribution, resale, or closed-source use requires a separate commercial license.

Contact: SeesAll on uMod | N01B4ME on Discord


Support

If you share a server profile (pop + automation level + CPU), you can dial AutoTune bias and population values for best results.

About

High-performance adaptive smelting accelerator for Rust (uMod/Oxide) with AutoTune scheduling.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages