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

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
- Player client
Bedrock · Java through compatibility components
- Proxy
Nemisys / Synapse
- Lobbies and game rooms
Nukkit + CodeFunCore
Allocate rooms, check capacity and coordinate transfers
Accounts and social services · Tasks and economy · Configuration and localisation
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
- Perception
Detect enemies, observe equipment and assess threats to the bed
- Decisions
Behaviour trees and utility scores select actions
- Movement
Asynchronous A* pathfinding, jumping, bridging and obstacle breaking
- Nukkit
Maintained Bedrock server fork
- Nemisys
Synapse proxy service
- SynapseAPI
Server-side proxy connections and integrations
- Network
Networking components
- ease_chat
Cross-server channel messaging
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
- Bedrock server
Games, entities and resources
- ViaProxy + ViaBedrock
Translate the protocol and forward extension data
- Java client and extensions
Render models, interfaces and animations
Java assets for Bedrock clients
- ItemsAdder
Source assets and configuration
- Conversion + Geyser mappings
Generate Bedrock models and resource packs
- Bedrock client
Use custom blocks and items
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.
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.
- Dependencies
Reuse code and assets
- Build
Package an Addon or world
- Run
Start a test instance
- Debug
Logs, runtime inspection and reloads
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.
- mcpywrap
Project management and debugging
- mcpelauncher-manifest
macOS developer runtime
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.
- Ghosty
Server-side recording and replay
- GhostyPaperRecorder
Paper PvP recording adapter
- NeoForgeReplay
Replay port for NeoForge
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.
Preview and process note-block music and get import codes. The companion music-player Addon is planned for the NetEase component marketplace.
