Glowstone

Ember

The server engine running Glowstone.

A Minecraft server of our own, because the systems our game modes need do not fit through a plugin API.

Nothing floats any more. Atom, on Ember.

Avalanche

physics

Trees fall over now

Avalanche is Ember's physics engine. Cut through a trunk and the tree falls on whatever is underneath it. Boats and trains that players build use the same physics.

  • falling trees
  • boat building
  • train building

Why not a plugin

Atom needs the server to know whether a room is sealed, whether a block is supported, how warm you are. As a Paper plugin it got there with block scans on a timer, third-party plugins for custom content, and mixins for whatever the API would not expose.

That approach had real limits. The tick slipped under load, the profiler pointed at code we could not change, and every game update rewrote internals we relied on.

So we are building our own server instead.

As a plugin

  • Atom, as a plugin
  • GlowstoneLib
  • Mixin patches
  • Custom-content plugin
  • Permission system
  • Paper-family server
  • Vanilla server code

On Ember

The games

  • Atom
  • Astra
  • RustLabs

The engine

Ember
  • World generationcustom terrain
  • Blockshardness, drops, state
  • Itemscustom registry
  • World storagethe world on disk
  • Lightingour own flood-fill
  • Resource packsclient content, generated

Every block is defined by Ember

Ember starts empty. Stone is a definition we wrote, the same way reinforced concrete is. Each one says how it breaks, what it drops and what light it casts. When Atom needs a block to act differently, there is one place to change it.

Built on an ECS

Ember runs on an ECS. An entity is rows of plain data rather than an object, so a system makes one pass over the parts it cares about and a crowd costs about what that pass costs. Systems declare what they read and write, which lets the ones touching different data run on separate threads.

How far along

  • Custom blocks, items, storage, worldgen, packsbuilt, tested
  • Joinable serversyes
  • Public API or downloadlater

The long version

The plugin ceiling

Atom needs the server to know whether a room is sealed, and to keep that answer fresh enough that stepping outside costs you warmth. It needs blocks to fall when nothing holds them up, which means a support check on every place and every break. Reinforcement levels and weight sit on top of that.

A Minecraft server was never built to answer any of it. Atom managed anyway as a Paper plugin, and the workarounds cost us. Tick times drifted under load. The profiler kept pointing at code we did not own. Every game update rewrote the internals our mixins held onto.


What Ember is

A server engine written from scratch, with no vanilla code in it. World storage, block definitions, lighting and the item registry are Ember's own. Atom's systems live inside that.

Shelter sealing shows what that buys. Every place and break already runs through Ember, so the engine updates the sealed flag while it handles the event, and the answer is never older than the last block anyone touched. The plugin version had to rescan on a timer to land somewhere near the same answer, and it paid that cost again for support, reinforcement and everything else Atom tracks.


How far along it is

Ember is early. Custom blocks, items, world storage, world generation and resource-pack generation all exist and are covered by tests, and servers running on it are joinable. Ember grows wherever the games on it push it. There is nothing to download and no public API yet.

Alpha. Ember is in active development and only runs our own servers.

Watch the engine get built.

Ember's progress goes up in the Discord first, usually with a clip of something falling over.