typical RAM target
Minecraft server software, rewritten in Go
One world.
Every player.
No proxy tax.
GoCraft speaks Java and Bedrock natively from one lean server process. One shared world, one player list, one source of truth—and no Geyser layer in the middle.
- Single Go binary
- No JVM required
- No Geyser required
focused game loop
native listeners
shared live state
01 / Architecture
Not two servers
duct-taped together.
Java and Bedrock enter through edition-aware network paths, then meet inside the same GoCraft game core. Gameplay state is shared directly instead of being translated through a separate proxy process.
Canonical game state
Edition-native sessions
Each client connects through the network stack made for its edition—Java over TCP and Bedrock over RakNet/UDP.
Shared game engine
Movement, combat, inventory, mobs, commands, and world changes converge in one authoritative server core.
No proxy stack
No second server to babysit, no Geyser deployment, and no duplicated configuration between multiple processes.
02 / Small by design
More world.
Less runtime.
GoCraft ships as a native Go executable. That means quick startup, simple deployment, predictable concurrency, and none of the JVM tuning ceremony normally wrapped around a Minecraft server.
$ ./gocraft --config server.yml
INFO GoCraft starting
INFO java listener TCP :19106
INFO bedrock listener UDP :19106
INFO world opened Anvil
INFO game loop 20 TPS
▋
03 / Built to play
Vanilla where it matters.
Configurable where it counts.
GoCraft is not just a packet gateway. It owns the game loop—from survival and entities to cross-edition commands and server operations.
Real cross-play
Java and Bedrock players meet in the same world, see each other, fight, build, and use shared commands.
- Cross-edition player lookup
- Shared entities and world state
- Edition-aware packet output
Combat your way
Run modern survival rules or switch to instant attacks and classic 1.7-style knockback for fast PvP.
A world that persists
Anvil world storage, chunk caching, seed control, pre-generation, autosaves, and block physics live inside the core.
Survival has consequences
Health, armor, durability, hunger, fall damage, mob damage, death, respawn, drops, potion effects, and beds.
Mobs with a life
Creature health, hostile attacks, villager routines, bed ownership, sleeping, breeding, death animation, and drops.
Operations included
Permission-aware commands, configurable ClearLag, profiling, structured logs, and a readable server.yml.
Tools feel like tools
Attributes, visible durability, damage wear, farming interactions, hoes, pickaxes, swords, armor, and item mechanics.
Configuration without archaeology
Human-readable settings for ports, gameplay, combat, caching, tooltips, cleanup, and both editions.
04 / The difference
One clean stack.
GoCraft removes infrastructure instead of adding another compatibility service beside your server.
| Deployment | GoCraft | Proxy cross-play | Traditional JVM |
|---|---|---|---|
| Server processes | One | Two or more | One + plugins |
| Bedrock path | Native listener | Translation proxy | External layer |
| Runtime | Native Go binary | Proxy + JVM server | JVM |
| World state | Shared directly | Bridged to Java | Java-first |
| Configuration | One server.yml | Multiple configs | Properties + plugins |
| Geyser required | No | Usually | For cross-play |
05 / Deploy
From binary
to block world.
No installer maze. Put the binary on your machine, tune one YAML file, expose TCP and UDP, and start the server.
- 01Download
Grab the Linux AMD64 build or compile it directly with Go.
- 02Configure
Choose your world, gameplay settings, and Java/Bedrock addresses.
- 03Run
Launch one process and let both editions connect.
java_enabled: true
host: 0.0.0.0
port: 19106
version_name: 1.21.4
protocol_version: 769
bedrock:
enabled: true
address: 0.0.0.0:19106
online_mode: true
view_distance: 8
difficulty: normal
world_storage: disk
06 / Straight answers
Before you spin it up.
Does GoCraft need Geyser or a Java backend?+
No. GoCraft owns both listeners and the shared game state itself. It is the game server, not a proxy that forwards Bedrock players into a separate Java server.
Can Java and Bedrock use the same port?+
Yes. Java uses TCP and Bedrock uses UDP, so both listeners may use the same numeric port when your host and firewall expose both protocols.
Is 200 MB a hard memory ceiling?+
It is GoCraft's lightweight operating target, not a universal hard cap. Real memory use depends on players, view distance, cached chunks, entities, and world activity.
Which Java protocol does it target?+
The current server targets Minecraft Java 1.21.4, protocol 769, alongside its native Bedrock listener.
Build once. Welcome everyone.
Stop translating.
Start crafting.
A lean Minecraft server for communities that should not have to choose an edition.