Technology overview

Minecraft game technology

We build game frameworks, maintain servers and clients, and make development tools. This work supports EaseCation’s original games.

EaseCation Bed Wars illustration with players, buildings and a bed
Bed Wars · Game illustration

Servers and the game cluster

Proxies handle sign-in and connections, cluster services allocate rooms, and Nukkit runs the games. CodeFunCore connects room management, player state and communication between servers.

A shared room framework

One framework handles creation, waiting, play, results and cleanup. Bed Wars, Rune Legend, Biochemical Escape and Disaster Games each supply their own rules, teams, maps and presentation.

Matchmaking can evolve separately

Matcher selects a room; ECMaster checks its state and capacity before admission. Matching accounts for parties and waiting time, with bots for backfill and practice. Games already underway run independently.

Shared player services

Shared services maintain accounts, permissions, friends, guilds, tasks and the economy across games. Common modules also handle configuration and localisation.

Connections and scheduling

Player connection

  1. Player client

    Bedrock · Java through compatibility components

  2. Proxy

    Nemisys / Synapse

  3. Lobbies and game rooms

    Nukkit + CodeFunCore

ECMaster + Matcher

Allocate rooms, check capacity and coordinate transfers

Accounts and social services · Tasks and economy · Configuration and localisation

Players connect through a proxy to a game server. ECMaster and Matcher coordinate admission separately. Java protocol translation is omitted from this diagram.

Matcher: skill, waiting time and parties

Bed Wars traffic changes between peak and quiet hours. Narrow pools can leave several rooms half full, and enough total free seats may still not fit a whole party. Room selection and team assignment handle these constraints separately.

Adaptive room selection
Fast and slow exponentially weighted moving averages (EWMA) estimate player arrivals. Eligible rooms are ranked using weighted start-time estimates, skill differences and room-creation costs.
Team assignment with party constraints
The game server assigns teams after admission. Parties that fit a team stay together. Bounded search balances headcounts first, then whole-group swaps compare skill distributions and party load.
Separate backfill from practice
Waiting pressure and learning needs are scored separately within a shared bot budget. Backfill helps existing rooms start; practice serves players with learning needs. Bot matches do not update human skill estimates.

Algorithm parameters and player-experience effects remain under evaluation through offline simulation, shadow decisions and live experiments.

In-game bots and MoBrain

Bed Wars bots collect resources, buy equipment, bridge gaps, protect and break beds, and fight. Matcher handles bot allocation for matches; MoBrain drives in-game behaviour using health, equipment and nearby threats.

GitHub · mobrainNot yet open source; a public release is planned

  1. Perception

    Detect enemies, observe equipment and assess threats to the bed

  2. Decisions

    Behaviour trees and utility scores select actions

  3. Movement

    Asynchronous A* pathfinding, jumping, bridging and obstacle breaking

The AI tree selects goals and actions; the movement tree handles reaching those goals. They share a context, while platform adapters connect to Nukkit entities, inventory and block interactions.

Java and Bedrock support

Models, interfaces, animations and controls need adaptation alongside the protocol. We maintain tools for Java clients joining Bedrock servers and for bringing Java-side content to Bedrock.

Java clients on Bedrock servers

  1. Bedrock server

    Games, entities and resources

  2. ViaProxy + ViaBedrock

    Translate the protocol and forward extension data

  3. Java client and extensions

    Render models, interfaces and animations

Java assets for Bedrock clients

  1. ItemsAdder

    Source assets and configuration

  2. Conversion + Geyser mappings

    Generate Bedrock models and resource packs

  3. Bedrock client

    Use custom blocks and items

These are separate paths for client connections and asset conversion. Each repository documents its supported versions and features.

Models and animation

Render Bedrock custom entities, skins and skeletal animations on Java clients. BedrockMotion and a MoLang runtime evaluate animations, with lower update rates for distant entities.

Interfaces and interaction

Render server-driven HUDs and menus on Java clients, including layout, buttons and live updates. A settings centre brings display and control options together.

Lighting and configuration

Recompute client lighting for the protocol bridge with bounded background work. Persistent configuration, resource-pack and shader directories support multiple versions and instances.

Assets and worlds

Generate Geyser mappings and Bedrock packs from the same ItemsAdder output. Model libraries and world-conversion plugins help creators reuse existing assets.

ViaBedrock · View the protocol compatibility fork

Development and content tools

Reusable tools cover dependencies, builds and debugging, along with interfaces, cameras and game flow. Developers and content creators can build on the same foundations.

mcpywrap: build, run and debug

Manage code and resource dependencies for China Edition Addons, build packages, start test worlds, then inspect logs and debug the running game.

  1. Dependencies

    Reuse code and assets

  2. Build

    Package an Addon or world

  3. Run

    Start a test instance

  4. Debug

    Logs, runtime inspection and reloads

Rebuild, run and verify after editing. Reload capabilities depend on the engine version and platform.

Windows and Apple Silicon macOS

Windows uses the MC Studio engine. The macOS developer runtime builds on a maintained mcpelauncher fork for local test worlds with supported NetEase developer APKs.

Interfaces and text

UI Studio adds nested layers, auto layout and nine-slice textures to Blockbench. The text plugin adds fonts and editable typography. Saved bbmodel designs remain viewable without the plugins. The current focus is static UI design.

Cameras and scenes

ECCamera plays Blockbench camera keyframes in-game, with interpolation, depth of field, vignette and field-of-view controls. Scene tools help organise bones and export animation.

Stories and levels

GracefulStage organises game flow with nested states. Rune Legend uses configuration for dialogue, combat and guidance; NPC Studio supports in-game testing. The state-machine approach is also available as a China Edition development component.

Records, testing and maintenance

Match results update accounts, tasks, the economy and rankings. Records and replays support review and reports; tests and monitoring help verify changes.

Replay and review

Ghosty records player routes and interactions. GhostyPaperRecorder writes selected Paper PvP events in a compatible format. NeoForgeReplay ports recording, camera control and rendering.

Testing and releases

Game configuration can be updated separately. Code changes go through builds and regression tests, with real API services used to check rooms, parties, reconnections and cleanup. Logs, monitoring and client diagnostics support follow-up after release.

Rules and fair play

The server decides game rules. Anti-cheat work addresses behaviour checks and client differences. Matching changes are evaluated using match records, waiting times and player feedback.

More public projects

Our public repositories include original tools and maintained upstream forks. These projects add model processing, distant-world data, server queries and content tools.

  • CubeConverter

    Read and convert Java and Bedrock models.

  • bedrock-addon-parser

    Parse versioned Addon definitions into shared data structures.

  • DistantHorizonsSupport

    Maintain a distant-world plugin fork with world registration and LOD import/export APIs.

  • cube-3d-text

    Create multilingual block text and models in the browser.

  • mcget

    A library and CLI for Java and Bedrock server status.

  • ReplayStudio

    Maintain a library fork for Minecraft replay files.

NBS music library

Preview and process note-block music and get import codes. The companion music-player Addon is planned for the NetEase component marketplace.

Browse EaseCation on GitHub