What changed

Release notes

New features, improvements and fixes in every Storia release, newest first.

Storia 26.2-7-beta Beta

A lighter Storia Cluster. Storia Relay uses about 23% less CPU, and remembers where players were after a restart.

Improved#

  • Chunks are no longer compressed twice. Chunk records, player data and data files are already compressed, but the encrypted link deflated them again: no smaller (100.1%), just CPU on both ends. They are now sent as they are. With one worker pregenerating 2,601 new chunks, Storia Relay used about 23% less CPU (18.6 s down to 14.4 s, average of two runs each). Other messages are still compressed. The wire format is unchanged.
  • The relay remembers where players were, also after a restart, so a returning player still joins the worker that runs their area (storia-cluster-positions.txt in the cluster world).
  • Link reports and move confirmations use a small shared pool instead of a new thread each time.
  • Website: one GitHub request per build instead of eight.

Other#

  • Tested: two workers with bots (moves, merging, balancing, /stop), a relay that refuses writes until fixed (no write lost), shared data (400 of 400 concurrent increments), positions loaded again after a relay restart.

Downloads on GitHub

Storia 26.2-6-beta Beta

Fixes from a review of all the code. No data is lost when the relay cannot store a write.

Fixed#

  • No data is lost when the relay cannot store a write. Writes kept on a worker while the relay was away are sent once it is back. If the relay then answered with an error (a full disk, for example), the write used to be thrown away. It is now kept and sent again every few seconds. A write still refused after 10 minutes is moved to cluster-spool/failed/ instead of being deleted.
  • Scoreboard changes wait for the relay. Changes made while the relay was away were dropped, so workers could disagree. They now wait, in order, and reach the other workers once the relay is back.
  • Time and weather reports no longer pile up while the relay is slow: one report at a time instead of a new thread every second.
  • Contraption links respect the hand-over pause. A cell another worker has just let go of is not handed over right away, so that worker's last saves are never refused.
  • Relay: a connection that never says who it is is closed after 10 seconds.
  • Relay: on stop (console, Ctrl+C or systemd), the world files are written out to disk before the process ends.

Improved#

  • Clearer error messages for invalid namespaces and channel names in the Plugin API (shared data).
  • Website: search highlighting no longer breaks on words such as amp, and "today" / "yesterday" count calendar days.

Other#

  • Tested: 638 writes kept during a relay outage, a relay that refuses writes until fixed (no write lost), two workers with bots (moves, merging, balancing, /stop), scoreboard, time and weather, game rules, shared data (400 of 400 concurrent increments), duplicate worker names, and a single server.

Downloads on GitHub

Storia 26.2-5 Latest

Anonymous statistics now go to Storia's own bStats pages.

Improved#

  • Anonymous statistics (bStats) now go to Storia's own pages instead of Folia's and Velocity's. Anyone can see them: Storia and Storia Proxy.
  • Sent: server and player counts, Storia, Minecraft and Java versions, OS, CPU core count, single server or cluster, and whether the RAM world is on.
  • Never sent: player names, IP addresses, chat or world contents. Storia Relay sends nothing.
  • You can turn it off as before. Safety & compatibility

Other#

Downloads on GitHub

Storia 26.2-4

A plugin API to share plugin data across all workers.

New#

  • Plugin API (shared data): plugins can share data and messages across every worker in a cluster. Plugin API (shared data)
  • A key-value store per plugin (get, set, delete, keys).
  • compareAndSet, which only one worker can win (locks), and increment, which never loses a count (balances, counters).
  • Change notifications, and messages that reach every worker (publish, subscribe).
  • Everything is asynchronous and never blocks the game.
  • The same API works on a single server, so plugins need only one code path.
  • storia-api-26.2-4.jar is published for plugin developers.
  • Test: 200 increments from each of two workers at the same moment give exactly 400.

Fixed#

  • Two workers started with the same cluster.node-name no longer knock each other off the cluster. The second one is refused with a message asking for a unique name.

Downloads on GitHub

Storia 26.2-2

The first stable release with Storia Cluster, after a review of all the code and fixes that protect your data.

Includes every change since 26.2 (26.2-1-beta, 26.2-2-beta and 26.2-3-beta).

New#

  • Storia Cluster: several servers run one world, and players move between them without a loading screen. One world on several servers
  • Tick guard: in busy places, mobs think less often instead of players being limited. Tick guard

Improved#

  • The per-player budget limits only fast movers.
  • Storia Cluster is no longer a beta.

Fixed#

  • Player data, advancements, statistics and shared data that cannot be read from the relay are never overwritten with empty data. The player is refused at login instead.
  • Messages from the relay are handled in order on one thread, so scoreboard and time changes no longer swap order.
  • Relay: reading or writing a region file that had just been closed to make room no longer fails.
  • The world settings sent to new workers leave out the relay's own files and files being written.
  • Handshakes time out after 10 seconds, so a silent connection cannot hold a relay thread.
  • /storia cluster asks the relay from a background thread, never from a game thread.
  • Storia Proxy: a bad move request no longer ends its connection to the relay.

Removed#

  • Terrain-only offload (replaced by the cluster in 26.2-3-beta).

Downloads on GitHub

Storia 26.2-3-beta Beta

Storia Worker becomes a Storia Cluster server. Terrain-only offload is removed.

New#

  • Storia Worker is now a cluster server. Add workers to handle more players. Storia Worker
  • New workers need no copy of the world: on first start they fetch the world settings (level.dat, generation settings, data packs) from the relay.

Improved#

  • Storia Relay is now only the cluster's coordinator.
  • Encrypted connections start with a handshake in which both sides identify themselves.

Removed#

  • Terrain-only offload (offload.* in storia.yml, -Dstoria.worker=true, /storia offload). An old offload: section is ignored, and an old server that asks the relay for offload is refused with a message. The code is kept in the archive/terrain-offload branch on GitHub.

Downloads on GitHub

Storia 26.2-2-beta Beta

Storia Cluster beta. Several servers run one world, and players move between them without a loading screen.

New#

  • Storia Cluster (beta): several Storia servers share one world. One world on several servers
  • Storia Relay stores the world and decides which server runs which part.
  • Players who come close are put on the same server before they could see each other's chunks.
  • Players move between servers through Storia Proxy without a loading screen, keeping their inventory, advancements and statistics.
  • Contraptions on a border are found and always run on one server.
  • Time, weather, game rules, the scoreboard and maps are shared.
  • If the relay is briefly away, writes are kept on disk and sent later.
  • /stop moves players to the other servers before stopping.
  • Storia Proxy switches players to another server when the relay says so, keeping the same entity id.

Fixed#

  • A player is never moved twice while Storia Proxy is still switching them.

Removed#

  • The border pushback and its "Another Storia server runs the area ahead" message. Areas are merged early, so they are no longer needed.

Other#

  • Moves between servers were checked with a real Minecraft 26.2 client.
  • 26.2 and 26.2-1-beta do not include Storia Cluster.

Downloads on GitHub

Storia 26.2-1-beta Beta

Adds the tick guard, so players who only stand near a busy spawn are not slowed down.

New#

  • Tick guard: when one place is too busy, crowded mobs rethink their next action less often instead of players being limited. Movement, gravity and collisions run every tick, and blocks such as redstone are never touched. Tick guard
  • Test: a spawn with 1,400 mobs went from 50–55 ms to 32–35 ms per tick (TPS 20).

Improved#

  • The per-player budget now limits only players moving fast (elytra and so on). Players who stand, build or walk are never limited.
  • /storia region shows the crowded chunks behind the load (location and mob type).

Downloads on GitHub

Storia 26.2

The first release for Minecraft 26.2, with RAM world, chunk pregeneration, the per-player budget and Storia Proxy.

New#

  • RAM world: the world is copied to RAM on start and written to disk in the background. If the process dies, the next start recovers from the copy in RAM. RAM world
  • Chunk pregeneration: /storia pregen generates chunks before anyone plays there. Chunk pregeneration
  • Faster world generation: faster noise sampling and block counting, with bit-for-bit the same results as vanilla.
  • Per-player budget: shares tick time and memory fairly while the server is busy. Per-player budget
  • Faster entity pushing: crowded mobs cost less, with the same results.
  • Terrain offload (Storia Worker and Storia Relay): the terrain noise of new chunks can be computed on other machines over an encrypted link. Replaced by Storia Cluster in 26.2-3-beta.
  • Storia Proxy: a Velocity fork with 50 placeholders, MOTD, tab list and message settings. Proxy setup
  • The /storia command for status, syncing and more. Commands & permissions

Other#

  • Renamed from Stolia to Storia.
  • Version numbers follow Minecraft (26.2, then 26.2-2, 26.2-3, ...).

Downloads on GitHub