Skip to content
Back to Blog
Go code editor showing Dragonfly server framework implementation and configuration

Dragonfly: Building Custom Minecraft Bedrock Servers with Go

ice
ice
@ice
Updated
46 views
TL;DR:Dragonfly is a Go-based framework that lets you build custom Minecraft Bedrock servers from scratch. If you want complete control over your server's mechanics instead of being limited by pre-built software, this is the library to learn. It's lightweight and designed for developers who can code.
🐙 Open-source Minecraft project

df-mc/dragonfly

Minecraft Bedrock Edition server software written in Go

⭐ 790 stars💻 Go📜 MIT
View on GitHub ↗

What Dragonfly Is

Dragonfly is a Minecraft Bedrock server framework written in Go. But calling it a "server" is a bit misleading if you're used to traditional server software like Spigot or Paper. It's really a library - a set of tools and building blocks you use to construct your own server application. You don't install it and immediately have a playable server. Instead, you write Go code that uses Dragonfly's API, then run that code to create whatever server you envision.

This matters because it flips the script. With traditional server software, you're confined to what the developers thought you'd want to do. Dragonfly says: "Here's the networking layer, the world format handling, and the protocol implementation. Build whatever you need on top of that." It's designed for people who want to ship something custom, not something off-the-shelf.


Who Should Care About This

If you're running a small SMP with friends, Dragonfly is probably overkill. Use a pre-built server for that. But if you're trying to build something unique - a survival server with custom economy mechanics, a creative world with special building tools, or a mini-game network with custom rules - Dragonfly gives you the foundation to make it real.

Network owners who've hit the ceiling of what traditional server software allows tend to find their way here. Developers learning how Minecraft's network protocol works also dig into Dragonfly's source code. It's got 790 stars on GitHub. That means it's got a real community behind it but isn't mainstream. Small enough that you'll actually recognize people in the Discord, large enough that you won't be alone.

The learning curve is real, though.


Getting Started: The Installation Paths

Dragonfly requires Go 1.24 or newer. If you don't have Go installed yet, grab it from golang.org first. The project gives you two realistic paths forward.

Path one: use it as a library in your own project. Create a new Go module, declare Dragonfly as a dependency, and start coding:

bash
go mod init github.com/user/myserver
go get github.com/df-mc/dragonfly

From there, you're writing Go to set up listeners, handle player connections, and define your game logic. The GitHub repo and the pkg.go.dev documentation show you the API. You control everything, which is powerful and terrifying in equal measure.

Path two: clone the repo and run the example server. This gets you something playable immediately while you explore what's possible:

bash
git clone https://github.com/df-mc/dragonfly
cd dragonfly
go run main.go

The main.go file in the repository is a working example server - not feature-complete, but enough to understand how pieces fit together. You can connect to it with a Bedrock client and poke around. Shut it down with Ctrl+C whenever you're done.


What Makes It Worth the Effort

Go compiles to self-contained binaries, meaning you get a single executable that runs anywhere without needing a separate runtime installed. That's a real advantage. No Java version conflicts, no Python environment woes, no "works on my machine" drama.

The API is well-documented compared to most open-source server projects. You get actual godocs explaining what each function does and what parameters it expects. The code itself is readable. That's not guaranteed in the Minecraft server ecosystem - some projects are a maze of inheritance and state management that'll make your head spin.

Dragonfly's async architecture (fancy way of saying it's designed to handle tons of stuff happening at once without breaking) means you're not blocked waiting for one player's action to finish before processing another's. When you're running a server with hundreds of concurrent connections, that matters. It can also feel snappier than servers written in languages that force things to happen sequentially.

And the community is genuinely helpful. The Discord server linked in the GitHub repo has people who actually answer questions. One maintainers engage with feature requests. For a 790-star project, that's uncommon enough to be worth mentioning.


The Catch: What Could Frustrate You

Learning Go takes time if you're coming from Python or JavaScript. The language is simpler than Java in some ways, more rigid in others. Goroutines (Go's concurrency model) are powerful but they require a different mental model than async/await. If you've never dealt with channels and synchronization primitives, you're going to hit some walls.

Building a server with Dragonfly means you're responsible for a lot of things that other server software handles for you. Want player persistence? Write it. Need anti-cheat? Build it. Custom commands? That's on you. This is the tradeoff for freedom - you get complete control, but complete responsibility comes along for the ride.

Bedrock Edition also has quirks that Java Edition doesn't. The protocol is different. Some mechanics work differently. If you're only familiar with Java servers, some of Dragonfly's behavior might surprise you. Actually, even if you know Bedrock servers, Dragonfly's approach to certain things (like how chunks load or how entities sync) has its own opinions.

The wiki exists and has useful info, but it's not full. You'll find yourself reading source code and running experiments to figure things out. That's fine if you enjoy that kind of learning, but it's not a "follow the tutorial" situation.


Putting It Into Practice and Considering Alternatives

Planning matters before you start coding. Sketch out what your server actually needs to do. What custom features are non-negotiable? What standard Bedrock behaviors do you need to change? Once you know that, you can estimate whether building with Dragonfly makes sense or whether something pre-built would serve you better. Using a tool like the Server Properties Generator can help you think through your server configuration needs upfront - understanding what properties matter helps you know what features to bake in.

After your server is running, the Minecraft Server Status Checker is useful for monitoring if your server's staying responsive. It'll tell you if something in your Go code is blocking or if network issues are creeping in.

If you want to build something custom but aren't ready to dive into Go, Nukkit is another Bedrock server option written in Java. It's more established and has more third-party plugins. The tradeoff is less control for lower effort. For Java Edition, Spigot and Paper are the standard, though they won't help you with Bedrock. And vanilla servers are still solid if you don't need custom mechanics.

Dragonfly is the pick if you want to build something custom and you're comfortable writing code to get there.

Frequently Asked Questions

Is Dragonfly free and open source?
Yes, Dragonfly is licensed under MIT, which means it's completely free and open source. You can use it for commercial projects, modify it, and distribute it without licensing costs. The source code is available on GitHub for inspection and contribution.
Do I need to know Go to use Dragonfly?
Yes, you need to know Go. Dragonfly isn't a pre-built server you download and run - it's a library. You write Go code using Dragonfly's API to build your server. If you're new to Go, you'll need to learn it first, though the language is relatively beginner-friendly.
Can I run a public Minecraft server with Dragonfly?
Absolutely. People run production Bedrock servers with Dragonfly in the wild. You'll need reliable hosting, adequate bandwidth, and you'll need to build or integrate features like anti-cheat and player authentication yourself, but nothing prevents a public server.
How does Dragonfly compare to Nukkit or other Bedrock servers?
Dragonfly gives you complete control because you're writing code, but requires more effort than pre-built servers like Nukkit. Nukkit is traditional - install it and add plugins. Choose Dragonfly if you need flexibility and don't mind coding; choose Nukkit if you want ease of use.
What Minecraft Bedrock versions does Dragonfly support?
Dragonfly supports current Minecraft Bedrock Edition. The project stays current as new Bedrock versions release. Check the GitHub releases page and documentation to see which specific Bedrock versions are officially supported by your Dragonfly version.