Skip to content

Releases: SendableMetatype/Geyser-Education-Extension

v3.1.0

08 May 08:11
eaec154

Choose a tag to compare

Nethernet API Migration

The extension now uses EduGeyser's built-in Nethernet transport instead of bundling its own WebRTC server. This dramatically reduces the extension JAR size and simplifies the architecture.

Requires the latest EduGeyser release (v2.10.0-edu.1 or newer). Older EduGeyser versions do not have the Nethernet API.

Known Issues

Join code and connection ID users may occasionally experience an "End of stream" error when connecting. This is being actively investigated. If you encounter it, reconnecting usually works.

v3.0.0

02 May 18:00
4fefec3

Choose a tag to compare

Education Edition 1.21.133 Support

Education Edition 1.21.133 removed client-side support for all direct IP connection methods. The extension is now required for students to connect.

  • Connection ID works out of the box with no accounts or configuration
  • Join Codes and Server List continue to work as before

See the Setup Guide for installation instructions.

v2.4.0

30 Apr 22:10
c37f495

Choose a tag to compare

  • Bundle configurate-yaml at runtime (fixes second-run crash)
  • Use String for nethernet connection ID (fixes overflow on 20-digit IDs)
  • Fix config load failure cascading into unnecessary reauthentication
  • Improve error messages for invalid connection-id

EduGeyser Extension v2.3.0

29 Apr 21:08
715ca13

Choose a tag to compare

  • Fix: respect custom port in server-ip config for tunneling setups (e.g. playit.gg)
  • Port is now a separate server-port config option for clarity

Note: Delete your existing joincode_config.yml and serverlist_config.yml to let them regenerate with the new server-port option. Your connection ID and server name will be regenerated, so note them down first if needed.

EduGeyser Extension v2.2.3

16 Apr 20:29

Choose a tag to compare

Fix: v2.2.2 broke join code connections

v2.2.2 tried to isolate the extension's Netty from the server's, which introduced a pipeline error (IncompatibleClassChangeError) that prevented clients from connecting via join codes.

This release reverts to a simpler approach that works on all platforms. Confirmed working on Spigot and Velocity.

No config changes needed — just replace the jar and restart.

Requirements

  • EduGeyser
  • Drop the jar in Geyser's extensions/ folder

EduGeyser Extension v2.2.2

16 Apr 20:00

Choose a tag to compare

Fix: runtime errors on Spigot

The previous version crashed on some Spigot servers with NoClassDefFoundError: io/netty/util/LeakPresenceDetector because of a version mismatch between the bundled Netty code and the Netty version Spigot ships.

The extension now bundles its own isolated copy of Netty so it works identically on any platform regardless of what Netty version the host server uses.

No config changes needed — just replace the jar and restart.

Requirements

  • EduGeyser
  • Drop the jar in Geyser's extensions/ folder

EduGeyser Extension v2.2.1

16 Apr 13:16

Choose a tag to compare

Fix: Spigot support

Join codes now work on Spigot/Paper servers. The previous version only worked on Velocity because Spigot doesn't provide the Netty WebSocket module that the signaling connection needs.

The extension now bundles this module directly, pinned to match Geyser's Netty version (4.2.7) for compatibility.

No config changes needed — just replace the jar and restart.

Requirements

  • EduGeyser
  • Drop the jar in Geyser's extensions/ folder

EduGeyser Extension v2.2

14 Apr 22:35

Choose a tag to compare

Before upgrading

Delete plugins/Geyser-*/extensions/edu/joincode_config.yml and restart. This regenerates the config with the new Connection ID field. Your signed-in accounts will restore automatically.

What's new

Direct connection IDs

You now have a 10-digit Connection ID that students can enter directly in Education Edition to join your server — no join code needed, and it works across any school tenant. The ID stays the same across restarts, so you only need to share it once.

Of course join codes still work like before, and you can use both.

More stable long-running hosting

Fixed a bug where clients couldn't connect after the server had been running for many hours, even though join codes appeared valid. The extension now checks the connection every 2 minutes and automatically recovers if something is wrong.

Cleaner logs

The console now shows the signed-in user's email instead of a cryptic tenant ID. Example:

[JoinCode] Connection ID: 1234567890
[JoinCode]   teacher@school.edu: Cake, Sign, Sign, Pickaxe | https://education.minecraft.net/joinworld/...

Requirements

  • EduGeyser
  • Drop the jar in Geyser's extensions/ folder

EduGeyser Extension v2.1

14 Apr 11:33

Choose a tag to compare

Changes from v2.0

  • UPN display: Shows the signed-in user's email (e.g. teacher@school.edu) instead of raw tenant UUIDs in all logs and commands
  • Reduced log verbosity: Only final results and device code prompts at INFO level; intermediate steps (restoring, nethernet IDs, tenant settings) moved to debug
  • Port always from Geyser: Config server-ip is now IP/hostname only; port is always read from Geyser's actual listener, preventing mismatches
  • Reduced memory: Nethernet worker threads capped to 2 per account instead of availableProcessors * 2
  • Heartbeat fix: Added missing api-version: 2.0 header to Discovery heartbeat/update/dehost calls
  • Education handshake: Redirect handler now echoes the client's server token and uses education codec (3 extra StartGamePacket fields)
  • Native WebRTC: Bundled native libraries for all platforms (Windows/Linux/macOS, x86_64/aarch64)

Requirements

  • EduGeyser fork (tokentest/master branch)
  • Place the jar in Geyser's extensions/ folder

EduGeyser Extension v2.0

12 Apr 20:11

Choose a tag to compare

What's New

Join Code System

Education Edition join codes allow students to connect via the in-game "Join Code" UI or share links. Join codes are tenant-scoped, so multiple accounts can be registered to serve students from different tenants.

Commands:

  • /edu joincode — show active join codes with share links
  • /edu joincode add — authenticate with an education account and create a join code
  • /edu joincode remove <number> — remove a join code

How it works:

  1. Device code OAuth flow to get an MS access token (one sign-in per tenant)
  2. Anonymous PlayFab auth for MCToken (Nethernet signaling)
  3. Nethernet WebRTC server accepts incoming connections
  4. Discovery API registers the join code
  5. Heartbeat every 100s keeps the code alive
  6. Clients are redirected to Geyser's RakNet port via TransferPacket

Configuration: joincode_config.yml (world name, host name, server IP, max players)

Join codes change on server restart. Active codes are printed to the console every 3 minutes.

Server List (unchanged)

MESS server list registration from v1.0 continues to work as before.

Requirements

  • EduGeyser fork (tokentest/master branch)
  • Place the jar in Geyser's extensions/ folder