All Mods Resource Packs Data Packs Shaders Modpacks Plugins
Smart Optimizer

Smart Optimizer

by Unknown • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions

smop

Smart Optimizer watches your server's RAM and TPS and lowers view distance, simulation distance and mob AI when things start getting heavy. Once the server recovers it puts everything back to normal.

Works on Paper (and its forks) and Fabric, for MC 1.20.1 up to 26.2+.

How it works

Every 10 seconds (configurable) it checks the server and picks a level:

  • Healthy (RAM under 80%, TPS 18 or higher): view 10, sim 8, all mob AI enabled
  • Moderate (RAM over 80% or TPS under 18): view 8, sim 6, AI disabled for mobs more than 64 blocks from any player
  • Critical (RAM over 92% or TPS under 15): view 5, sim 4, non-essential AI paused, ground items older than 2 minutes get cleared

It also unloads chunks in dimensions that haven't had any players in them for 5+ minutes.

Mobs never get killed or removed, their AI is just paused and turned back on when the server is healthy again. The only thing that ever gets deleted is old ground items, and only in critical mode.

Downloads

Jar Minecraft Platform Java
SmartOptimizer.jar 1.20.1 – 26.2+ Paper, Folia, Purpur, Pufferfish, Spigot, Bukkit 17+
SmartOptimizer-Fabric.jar 26.1 – 26.2+ Fabric Loader ≥ 0.19 + Fabric API 25+
SmartOptimizer-Fabric-legacy.jar 1.20.1 – 1.21.11 Fabric Loader ≥ 0.15 + Fabric API 17+
  • Pick the .jar file that fits your version and platform. Configurations will be listed below

Config

thresholds:
  ram:
    moderate: 80.0   # % RAM usage to trigger moderate
    critical: 92.0   # % RAM usage to trigger critical
  tps:
    moderate: 18.0
    critical: 15.0

distances:
  view:
    min: 4
    max: 16
  simulation:
    min: 4
    max: 12

optimization:
  check_interval_ticks: 200        # 200 ticks = 10 seconds
  chunk_unload_delay_minutes: 5    # unload chunks in empty dimensions after this long
  ground_item_clear_minutes: 2     # only applies in critical mode

settings:
  debug: false

If you set something out of range it gets clamped to a safe value, it won't break anything.

Commands

  • /smartoptimizer status shows current RAM, TPS and optimization level
  • /smartoptimizer reload reloads the config

Aliases are /so and /smartopt. Both commands need smartoptimizer.admin, which defaults to op.

Partners

gravel host

Use my code for 35% off your first month.

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
1.21.x 1.20.x
Fabric
13h ago 1
26.2 26.1.x
Fabric
13h ago 1
26.2 26.1.x 1.21.x +1
Bukkit Folia Paper Purpur Spigot
13h ago 1
[5.0] Smart Optimizer 5.0 by Unknown on Oct 15, 2026
Download
# Changelog

## 26.2.0

Rebuilt the whole thing from scratch. Decompiled the old jar, fixed a bunch of bugs, and turned it into a proper multi-platform project. Now works from 1.20.1 all the way up to 26.2.

  • New stuff**
  • Works on 1.20.1 through 26.2+
  • Fabric version (finally). Two jars because Mojang removed obfuscation in 26.1, so old and new versions can't share one:
  • SmartOptimizer-Fabric-26.2.0.jar for 26.1+
  • SmartOptimizer-Fabric-1.20.1-26.2.0.jar for 1.20.1–1.21.11
  • Folia support (uses the region scheduler when it detects Folia, falls back to the normal Bukkit scheduler otherwise)
  • Tab completion on the commands
  • Config gets validated on load now — if you put something dumb in there it clamps it to a sane value instead of breaking
  • TPS fallback for Spigot (uses Paper's TPS API when it's there, reads tick times when it isn't)

  • Bug fixes** (stuff that was broken in 26.1.2)
  • Mob AI check was using distance() which does a square root every call — switched to distanceSquared(), way faster
  • Chunk unloading straight up never worked for worlds that hadn't had a player in them yet. Dead code. Fixed
  • Spawn chunk was being recalculated for every single chunk (O(n²) for no reason) — now it's once per pass
  • Crashed if the command wasn't registered — added a null check
  • Saving the config wiped out all your comments — doesn't anymore

  • Other**
  • Author is now endermanking_
  • Paper jar is built against the 1.20.1 API targeting Java 17, so it runs everywhere from 1.20.1 to 26.2
  • Fabric 26.2 jar: MC 26.2, loader 0.19.5, Fabric API 0.159.0+26.2, Java 25
  • Fabric 1.20.1 jar: MC 1.20.1, yarn 1.20.1+build.10, loader 0.15.11, Fabric API 0.92.2+1.20.1, Java 17

  • What runs what**

| Jar | Minecraft | Platform | Java |
|-----|-----------|----------|------|
| Paper | 1.20.1 – 26.2+ | Paper, Folia, Purpur, Pufferfish, Spigot, Bukkit | 17+ |
| Fabric | 26.1 – 26.2+ | Fabric Loader 0.19+ + Fabric API | 25+ |
| Fabric 1.20.1 | 1.20.1 – 1.21.11 | Fabric Loader 0.15+ + Fabric API | 17+ |


## 26.1.2

Old Paper-only version. This was before the rebuild.

[5.0] Smart Optimizer 5.0 by Unknown on Oct 15, 2026
Download
# Changelog

## 26.2.0

Rebuilt the whole thing from scratch. Decompiled the old jar, fixed a bunch of bugs, and turned it into a proper multi-platform project. Now works from 1.20.1 all the way up to 26.2.

  • New stuff**
  • Works on 1.20.1 through 26.2+
  • Fabric version (finally). Two jars because Mojang removed obfuscation in 26.1, so old and new versions can't share one:
  • SmartOptimizer-Fabric-26.2.0.jar for 26.1+
  • SmartOptimizer-Fabric-1.20.1-26.2.0.jar for 1.20.1–1.21.11
  • Folia support (uses the region scheduler when it detects Folia, falls back to the normal Bukkit scheduler otherwise)
  • Tab completion on the commands
  • Config gets validated on load now — if you put something dumb in there it clamps it to a sane value instead of breaking
  • TPS fallback for Spigot (uses Paper's TPS API when it's there, reads tick times when it isn't)

  • Bug fixes** (stuff that was broken in 26.1.2)
  • Mob AI check was using distance() which does a square root every call — switched to distanceSquared(), way faster
  • Chunk unloading straight up never worked for worlds that hadn't had a player in them yet. Dead code. Fixed
  • Spawn chunk was being recalculated for every single chunk (O(n²) for no reason) — now it's once per pass
  • Crashed if the command wasn't registered — added a null check
  • Saving the config wiped out all your comments — doesn't anymore

  • Other**
  • Author is now endermanking_
  • Paper jar is built against the 1.20.1 API targeting Java 17, so it runs everywhere from 1.20.1 to 26.2
  • Fabric 26.2 jar: MC 26.2, loader 0.19.5, Fabric API 0.159.0+26.2, Java 25
  • Fabric 1.20.1 jar: MC 1.20.1, yarn 1.20.1+build.10, loader 0.15.11, Fabric API 0.92.2+1.20.1, Java 17

  • What runs what**

| Jar | Minecraft | Platform | Java |
|-----|-----------|----------|------|
| Paper | 1.20.1 – 26.2+ | Paper, Folia, Purpur, Pufferfish, Spigot, Bukkit | 17+ |
| Fabric | 26.1 – 26.2+ | Fabric Loader 0.19+ + Fabric API | 25+ |
| Fabric 1.20.1 | 1.20.1 – 1.21.11 | Fabric Loader 0.15+ + Fabric API | 17+ |


## 26.1.2

Old Paper-only version. This was before the rebuild.

[5.0] Smart Optimizer 5.0 by Unknown on Oct 15, 2026
Download
# Changelog

## 26.2.0

Rebuilt the whole thing from scratch. Decompiled the old jar, fixed a bunch of bugs, and turned it into a proper multi-platform project. Now works from 1.20.1 all the way up to 26.2.

  • New stuff**
  • Works on 1.20.1 through 26.2+
  • Fabric version (finally). Two jars because Mojang removed obfuscation in 26.1, so old and new versions can't share one:
  • SmartOptimizer-Fabric-26.2.0.jar for 26.1+
  • SmartOptimizer-Fabric-1.20.1-26.2.0.jar for 1.20.1–1.21.11
  • Folia support (uses the region scheduler when it detects Folia, falls back to the normal Bukkit scheduler otherwise)
  • Tab completion on the commands
  • Config gets validated on load now — if you put something dumb in there it clamps it to a sane value instead of breaking
  • TPS fallback for Spigot (uses Paper's TPS API when it's there, reads tick times when it isn't)

  • Bug fixes** (stuff that was broken in 26.1.2)
  • Mob AI check was using distance() which does a square root every call — switched to distanceSquared(), way faster
  • Chunk unloading straight up never worked for worlds that hadn't had a player in them yet. Dead code. Fixed
  • Spawn chunk was being recalculated for every single chunk (O(n²) for no reason) — now it's once per pass
  • Crashed if the command wasn't registered — added a null check
  • Saving the config wiped out all your comments — doesn't anymore

  • Other**
  • Author is now endermanking_
  • Paper jar is built against the 1.20.1 API targeting Java 17, so it runs everywhere from 1.20.1 to 26.2
  • Fabric 26.2 jar: MC 26.2, loader 0.19.5, Fabric API 0.159.0+26.2, Java 25
  • Fabric 1.20.1 jar: MC 1.20.1, yarn 1.20.1+build.10, loader 0.15.11, Fabric API 0.92.2+1.20.1, Java 17

  • What runs what**

| Jar | Minecraft | Platform | Java |
|-----|-----------|----------|------|
| Paper | 1.20.1 – 26.2+ | Paper, Folia, Purpur, Pufferfish, Spigot, Bukkit | 17+ |
| Fabric | 26.1 – 26.2+ | Fabric Loader 0.19+ + Fabric API | 25+ |
| Fabric 1.20.1 | 1.20.1 – 1.21.11 | Fabric Loader 0.15+ + Fabric API | 17+ |


## 26.1.2

Old Paper-only version. This was before the rebuild.

Smart Optimizer Icon
Download Smart Optimizer
Select game version
Select platform