GBM

GBM

This is implementation of stupid idea - What if I can use Golang to Minecraft modding?

112 downloads 0 followers

Go Minecraft Bridge

Go Minecraft Bridge hosts plugins written in Go in both Minecraft server and client processes. The Minecraft-facing code stays in Java, while plugin logic receives immutable snapshots/events and returns actions or named system calls.

The shared code is built as two version-specific Fabric artifacts:

Minecraft Java Loader Fabric API Cloth Config Mod Menu
1.21.1 21 0.16.14 0.116.14+1.21.1 15.0.140 11.0.3
26.1.2 25 0.19.3 0.149.1+26.1.2 26.1.154 18.0.0

Architectury Loom drives the portable 1.21.1 target, with a small source overlay for Minecraft API differences. The unobfuscated 26.1.2 target uses Fabric Loom because Architectury Loom currently requires a mappings artifact that this Minecraft distribution does not publish. Architectury portability still produces one JAR per Minecraft ABI; it does not make one universal JAR.

The current MVP also targets:

  • Go 1.24 or newer;
  • native Go plugins built with -buildmode=c-shared;
  • initialization, server/client tick, chat, death, system-call-result, and deinitialization callbacks;
  • entity snapshots and explicit subscriptions to block positions;
  • chat broadcast/direct-message actions;
  • extensible namespaced system calls;
  • capture of Go stdout, stderr, and the standard log package;
  • FlatBuffers tick snapshots (ABI v2), while control-plane messages remain JSON;
  • a Cloth Config management screen exposed through Mod Menu.

The backend interface is deliberately independent from Fabric and native FFI so that a WASI/WASM backend can implement the same protocol later.

The server runtime is also packaged as one Paper plugin compatible with Paper and Purpur. Its Bukkit-facing code is compiled during every build against this API matrix:

Server Paper API used for verification Java runtime
Paper/Purpur 1.21.1 1.21.1-R0.1-SNAPSHOT 21+
Paper/Purpur 1.21.11 1.21.11-R0.1-SNAPSHOT 21+
Paper/Purpur 26.1 26.1.2.build.74-stable 25+

The Paper API preserves the Bukkit surface used by the bridge, so these targets share one Java 21 bytecode JAR. Purpur accepts it directly because Purpur is a Paper-compatible server implementation.

Using

Visit source github to check

Roadmap

  • Adding screen render implementation
  • More systemcalls and usability
  • Event system with registration
  • All-in-one JAR file for client
  • Maybe some more...

Code is licenced under MIT Licence.

Version Minecraft Loader Download

GBM 0.2.0 for Paper and Purpur

0.2.0-paper

1.21.1, 1.21.11, 26.1, 26.1.2
paper, purpur
Download

GBM 0.2.0 for Fabric 26.1.2

0.2.0-fabric-26.1.2

26.1.2
fabric, quilt
Download

GBM 0.2.0 for Fabric 1.21.1

0.2.0-fabric-1.21.1

1.21.1
fabric, quilt
Download

GoBridge 0.1.0 and Go sdk/v0.0.1

v0.1.0

1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2
bukkit, paper, purpur
Download

GoBridge 0.1.0 and Go sdk/v0.0.1

v0.1.0

1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9
fabric, quilt
Download

GoBridge 0.1.0 and Go sdk/v0.0.1

v0.1.0

26.1.2
fabric, quilt
Download