Skip to content

Cross Version Support

the-real-ltcg edited this page Jul 1, 2026 · 1 revision

Cross-Version Support

How it works

Not Enough Spectators runs a small backend Netty server inside the host client and replays the host's captured 26.2 packets to spectators. This fork embeds the ViaVersion stack (ViaVersion + ViaBackwards + ViaRewind) and, on every spectator connection, splices Via's server-side translation handlers into that pipeline — exactly like a backend Minecraft server with ViaVersion installed.

  • Host/server protocol is pinned to 26.2.
  • When a spectator connects, Via detects their version from the handshake and translates their protocol to/from 26.2 in both directions.
  • Spectators need no Via mod of their own — just a vanilla client.

Check it live with /nes via, which shows whether Via is active and the version of each connected spectator.

Current status (important)

Same-version (26.2) spectating works. Older-version spectating is currently blocked upstream, not by this mod:

A spectator on, say, 1.21.8 successfully completes the handshake, login, and the entire configuration phase — Via attaches and translates all the way through. It then fails at the final step, when the old client tries to build its registries from the received data:

Failed to load registries due to errors
  ... Failed to parse local data (banner_pattern, chat_type, damage_type, dimension_type,
      enchantment, worldgen/biome, ...)
  ... Registry must be non-empty: minecraft:cat_variant, ...

The cause is that ViaBackwards has not yet finished converting 26.2's registry data down to older versions. 26.2 added entirely new registries (sulfur_cube_archetype, dialog, wolf_sound_variant, test_environment, …) that older clients don't understand, and ViaBackwards must learn to rewrite/strip each one. Version 26.2 is very new, and that conversion work lags the initial protocol support.

This is the same ViaBackwards code every setup uses (ViaProxy, ViaFabric, etc.), so no alternative architecture works around it — it is genuinely upstream.

When will older clients work?

As soon as ViaBackwards ships 26.2 down-conversion. This mod's dependency tracks the ViaBackwards snapshot, so it will start working with just a rebuild — no code changes:

./gradlew build --refresh-dependencies

Until then, a spectator on a version very close to 26.2 (few registry differences) has the best chance of working.

Clone this wiki locally