Skip to content

Ember Plugins · Server software · Free and open source

EmberMC

Ignite better performance. A Paper fork built for large survival and economy networks.

Free · GPLv3Minecraft 26.2Paper forkJava 25Runs Paper plugins

EmberMC

What it is

EmberMC is server software: a fork of Paper that you run instead of Paper, and that runs your Paper plugins unchanged. It is a general-purpose server for any network - big survival or economy servers with real player counts, real farms, and real people trying to lag them on purpose. It runs every Paper plugin; the Ember suite happens to run on it too, but EmberMC stands on its own.

It is free and open source, published by TheMeanOneDevelopments under the GNU GPL v3. Server software has to be free - the Minecraft EULA does not allow selling modified server software - and GPLv3 goes further: anyone may run, study and modify EmberMC, but any distributed fork must stay open under GPLv3 too. Nobody can close it and sell it as a proprietary product.

EmberMC entity tick time versus Paper

Where it stands

Honestly: early, with one measured win. The current build is Paper a2a42c5b (Minecraft 26.2) with EmberMC branding, the /ember command, the configuration framework, the profiler and the tuner. Its first performance change is a default: Paper ships the Alternate Current redstone engine and leaves it off; EmberMC turns it on. On the same host, same rig, /mspt read Paper 3.0 ms · Purpur 2.5 ms · EmberMC 0.6 ms - all on the Benchmarks page with how they were produced. Everything else is still Paper's behaviour, and nothing else will be advertised until there is a benchmark to point at.

What exists today:

A clean fork. Built on paperweight-patcher, the same tooling Paper uses. Every EmberMC change is a readable patch on top of a pinned Paper commit. Pulling a new Paper build is a one-line change plus re-applying patches.

Paper-compatible by contract. The Bukkit, Spigot and Paper APIs are Paper's, untouched. EmberMC answers "yes" to plugins that ask whether they are running on Paper, so nothing that works on Paper refuses to load. Its own brand id is embermc:ember for plugins that want to know.

/ember status. TPS over one, five and fifteen minutes, MSPT, players, entities, block entities, loaded chunks and heap, in one screen.

A profiler that is always on. Every tick is split into phases and timed for about a microsecond a tick, so when a tick spikes the server already knows what it was doing and writes it down. Per-plugin attribution is one command away.

Entity tiers. Paper's activation range is on/off: everything in range ticks fully, everything outside freezes. EmberMC splits the range into a full ring and an outer ring that ticks fully every Nth tick - and exempts anything a player is interacting with, so nothing you are fighting, leading, riding or farming is ever throttled. Measured on a live server: up to 82% lower entity tick time under 8,000 mobs, reproducible yourself with /ember bench; see Benchmarks.

A Packet Guard that shapes, not just blocks. Paper limits all packets with one number; EmberMC limits each category - movement, commands, book edits, inventory - with its own token bucket and its own action (log, warn, throttle, drop, kick). A sprint and a book-spam attack no longer share a limit, and /ember security shows exactly what is being stopped. It never logs packet contents or authentication.

An engine that answers load. Once a second the tick's p95 picks a level - normal, light, moderate, aggressive - with real hysteresis: five seconds above a threshold to rise, twenty below to fall, one step at a time. Today it drives two things, the entity tiers and the pathfinding backoff, inside floors they set themselves; every change is one console line with the number that caused it, and /ember status shows the level.

A tuner instead of a guide. /ember tune show performance lists every Paper, Spigot and Bukkit key the preset would change and what a player could notice; apply writes it with backups; revert puts upstream defaults back. It refuses changes that would break a plugin you actually run.

Tested on a real box. The Ember suite, Floodgate, packetevents and spark all load and run on it: 12 plugins, zero errors. The plugin-compatibility matrix is recorded against that real set, not a synthetic one.

Where it is going

The order is deliberate: you cannot make hot paths faster until you can see them, so instrumentation comes before optimisation, and a configuration framework comes before anything that needs configuring.

Milestone What it brings
1 · Fork and branding Done
2 · Configuration ember-global.yml, world defaults + per-world overrides, presets - see Configuration
3 · Profiler Always-on phase timing, opt-in per-plugin attribution, spike reports - see Profiler
4 · Entity engine Measured: entity phase up to 82% lower vs Paper under 8,000 mobs - see Benchmarks and Entity tiers
5 · Pathfinding Failed-pathfind backoff generalised to every goal, not just entity-follow. Collision is already Paper-bounded - see Pathfinding
6 · Items and XP Live per-chunk item cap, and an XP-orb cap that folds overflow into survivors so no experience is lost - see Item and XP limits
7 · Chunk engine Chunk-retention diagnostics: /ember chunks shows what holds chunks loaded. Loading and saving are already Paper's - see Chunk engine
8 · Packet Guard Per-category token-bucket limiter with a plugin-message category, unit-tested - see Security
9 · Adaptive engine State machine drives the entity tiers and tightens the pathfinding backoff under load, all bounded - see Adaptive engine
10 · Memory and network Idle-RAM trimmer and outbound network visibility (/ember netstat). Metadata dedup and decompression limits are already Paper's - see Idle memory, Network
11 · Compatibility Plugin matrix verified live (12 plugins, 0 errors) and a register of every observable change with its toggle - see Compatibility
12 · Benchmarks /ember bench reproduces the tier numbers on your own load; R1 to R5 published with their methods - see Benchmarks and Benchmark harness

The full roadmap, with the engineering rules each milestone follows, is on the roadmap page.

The rules it is built under

These are not aspirations; they are the checks every change goes through.

  • Stability, then correct gameplay, then TPS. A benchmark number is never a reason to remove vanilla behaviour.
  • Every optimisation is measured. Before it is written, its plan records the Paper behaviour, the bottleneck, the change, the compatibility and threading implications, the expected gain and how it will be measured.
  • No silent behaviour changes. Anything a plugin could observe ships with a toggle and a line in the compatibility register.
  • Nothing off the main thread unless Paper's architecture already guarantees the access is safe there.
  • Every cache is bounded and has an invalidation story and a metric.
  • No performance claim without the benchmark that supports it.

Downloads

Download EmberMC 26.2 (build 1) from GitHub Releases.

Replace your Paper jar with it and start the server as normal. The first boot downloads the vanilla server from Mojang and patches it locally (Paperclip), so no Mojang code is redistributed. Java 21+ (Java 25 recommended). Your worlds, plugins and configs are untouched; to roll back, put your old jar back. Prefer to compile it? Build it yourself from source, it is GPLv3.

Commands and permissions

Command Permission What it does
/ember · /ember status ember.command.status TPS, MSPT, players, entities, block entities, chunks, heap
/ember version ember.command.version EmberMC build, Minecraft version, Bukkit API, Java, Paper compatibility
/ember config ember.command.config Active profile, console settings, file locations, each world's effective values
/ember reload ember.command.reload Re-reads every EmberMC config file; reports what applied and what needs a restart
/ember profiler [start [s]\|stop] ember.command.profiler Tick phases (mean/p95/p99); start or stop plugin attribution
/ember plugins ember.command.plugins ms/tick per plugin over the session, with what it does not measure
/ember worlds · /ember entities · /ember chunks ember.command.<name> Per-world tick cost and counts; entity types; loaded chunks
/ember metrics ember.command.metrics Every ember_* gauge - also served at /metrics in Prometheus format when metrics.endpoint is on
/ember security ember.command.security Per-category packet limits, actions, and allowed/blocked counts - see Security
/ember tune show\|apply\|revert [preset] ember.command.tune Apply Paper/Spigot/Bukkit performance keys per preset, with backups and safety guards - see Tuner

ember.command grants the command itself. All default to operators.