Overview

Gate is an extensible Minecraft proxy written in Go and can be run as a binary or be integrated like a framework with your own code.

What is Gate?

Gate is an extensible, high performant & paralleled Minecraft proxy server with scalability, flexibility & excellent server version support - ready for the cloud!

Why you need a Minecraft proxy?

(for those who have never heard of a Minecraft proxy)

TL;DR

  • keep the player’s session without disconnect
  • to move players between servers
  • cross server functionalities (events such as chat/commands, send messages, …builtin/custom session- & packet handlers)

Gate presents itself as a normal Minecraft server in the player’s server list, but once the player connects Gate forwards the connection to one of the actual game servers (e.g. Minecraft vanilla, paper, spigot, sponge, etc.) to play the game.

The player can be moved around the network of Minecraft servers without fully disconnecting, since we want the player to stay connected (and not want them to re-login via the server-list every time).

Therefore, Gate reads all packets sent between players (Minecraft client) and upstream servers, logs session state changes, emits different events like Login, Disconnect, ServerConnect, Chat, Kick etc. that custom plugins/code can react to.

The advantages for using a proxy should be clear now.

Why Gate?

Some of Gate’s advantages:

  • Fast and less resources (CPU/Memory) needed
    • means more scalable
  • Excellent version support
    • Allows newest version down to 1.7
    • Forge support (for modded servers)
    • BungeeCord compatible plugin channels
    • BungeeCord or Velocity’s player info forwarding
  • A much simpler API for “plugins”
  • Gate and developers immensely benefit from the Go language and its wide ecosystem

Similar to the in Java written proxies BungeeCord, Waterfall and Velocity (where much of the knowledge comes from) Gate delivers a rich interface to interact with connected players on your cluster of Minecraft servers.

Target audience

Note that Gates targets advanced Minecraft networks that already (or want to) have a Go code base for their Minecraft related workloads.

If you already have all your code base in Java and/or need to use plugins for those other proxies, just stay there. Gate is for the Go ecosystem and does not have all the convenient plugins published on SpigotMC!

Although Gate targets better performance, has more version support (modded servers) and has a simpler API than other Java proxies, and Gate lets you write “plugin” code in the awesome Go programming language <3.

Major Features

While Gate has all the features you expect a modern Minecraft proxy to have, Gate incorporates these additional abilities:

  • Extensibility!
  • All expected modern Minecraft proxy capabilities
  • Simple configuration
    • Sane defaults!
    • Use a config file and/or environment variables to override defaults
  • Simple deployment
    • Single binary for all major platforms!
    • Ready to use Docker image
  • Builtin IP range rate limiter (anti-DoS)
    • Configurable in config
  • Automatic server icon resizing to 64x64
    • Resizes your server list icon down to the maximum allowed size

What Next?



Last modified September 20, 2020: add Minecraft 1.16.3 (717eae5)