Technical Architecture

How Aevocraft works

Minecraft Java Edition was designed for a desktop JVM, native desktop APIs and an OpenGL rendering stack — not for a browser.

Aevocraft works by adapting those platform boundaries while preserving the Java client's behavior as closely as practical.

Engineering Challenge

The execution gap

A browser cannot simply launch a Java desktop application.

It does not expose the same filesystem, native windowing APIs, OpenGL context, raw TCP sockets or threading model expected by a traditional Minecraft Java client.

The challenge is therefore not to redraw a Minecraft-like world. It is to make the client survive in a completely different execution environment.

Language Runtime

Java to browser

Aevocraft uses TeaVM as part of the build pipeline to transform the Java application for execution on the web.

Desktop-only Java behavior and libraries that do not exist in a browser require compatibility work around the client.

Graphics Pipeline

OpenGL to WebGL2

Minecraft 1.20.4 uses a desktop OpenGL rendering pipeline.

Aevocraft provides browser-side graphics compatibility so the client's rendering work can be translated into WebGL2 and presented through an HTML canvas.

This includes adapting shader behavior, buffers, textures, framebuffer operations and other assumptions that differ between desktop OpenGL and WebGL.

Input & Scheduling

Desktop loop to browser loop

A desktop game can own its main thread and run a traditional blocking loop. A browser cannot.

Aevocraft adapts frame scheduling to the browser while mapping keyboard, mouse and pointer-lock input back into the client's expected input model.

requestAnimationFrame
Browser Scheduling
Minecraft tick / render
Client Loop Execution
<canvas>
WebGL2 Presentation
Multiplayer Protocol

TCP to WebSocket to TCP

Minecraft Java servers normally speak raw TCP.

Web pages cannot open arbitrary raw TCP sockets, so Aevocraft uses a browser-compatible WebSocket connection to a relay. The relay forwards the binary traffic to the target Java server over TCP.

Browser Client
WebSocket Binary Packets
Aevocraft Relay
TCP Translation Proxy
Java Edition Server
Vanilla TCP Socket
Filesystem & Cache

Browser-native storage

Resources and runtime data that would normally live on a desktop filesystem need browser-safe equivalents.

Aevocraft can use browser storage and caching mechanisms to avoid treating every launch like a completely new desktop installation.

Core Philosophy

Change the platform, not the game.

The guiding principle is to replace desktop-specific dependencies only where the browser requires it.

Rendering backends, window/input APIs, scheduling, storage and networking need adaptation. Core client behavior should remain as close to the Java Edition client as the browser environment allows.

See the implementation on GitHub