Gate Minecraft Proxy

website·Indexed 32 days ago

https://gate.minekube.com/

A cloud-native, open-source Minecraft reverse proxy designed for high throughput and low resource footprint. Gate provides features including Bedrock Edition cross-play support, ForcedHosts routing, rate limiting, and OpenTelemetry integration. It includes a gRPC API with SDKs for TypeScript, Rust, and Python, and a command system utilizing Mojang's brigadier library.

Tokens
48.6K
Snippets
270
Records
370
Agent score
56%

What's inside Gate

  1. Overview of Gate Sound API

    Gate provides a dedicated sound package for playing and controlling sounds for Minecraft players.

    Version Requirements:

    • Minimum Minecraft Version: 1.19.3
    • UI Sound Source (sound.SourceUI): Requires 1.21.5+

    Players on versions older than 1.19.3 will receive an error when attempting to use sound features.

  2. Overview of Gate TypeScript/JavaScript Client Libraries

    Gate provides TypeScript and JavaScript client libraries that enable interaction with the Gate API across multiple runtime environments, including Node.js, Bun, and web browsers. The libraries feature full TypeScript type safety, a Promise-based async/await API, and use Protocol Buffers for efficient data transfer over HTTPS.
  3. Overview of Gate Minecraft Proxy

    Gate is a modern, cloud-native, open-source proxy for Minecraft servers. It is designed as a high-performance replacement for legacy proxies like BungeeCord and is inspired by the Velocity project. Built in Go, it focuses on scalability, flexibility, and developer-friendliness. Key features include support for Minecraft versions 1.7 through the latest, a minimal resource footprint (approximately 10MB RAM), and built-in Bedrock cross-play via Geyser and Floodgate integration without requiring backend plugins.
  4. Overview of Gate performance and protocol support

    Gate is a high-performance Minecraft infrastructure tool designed for large networks. It features a minimal resource footprint (approximately 10MB RAM) and is optimized for high throughput and efficient protocol handling.

    It provides broad protocol support, including:

    • Minecraft versions from 1.7 to the latest release
    • Forge mod support
    • BungeeCord compatibility
    • Velocity forwarding
  5. Understand Gate's plugin architecture

    Gate does not use a traditional plugin system (like Bukkit or BungeeCord) or the native Go plugin system. Instead, extensions are created as standard Go modules that import Gate APIs and are compiled as normal Go programs. This approach avoids the coupling and brittleness associated with Go's native plugin system.
  6. Understand the Gate API technology stack

    Gate's API leverages a modern RPC-based architecture. It primarily uses Protocol Buffers (Protobuf) for efficient, type-safe data serialization and gRPC for high-performance communication over HTTP/2. To ensure broad compatibility with web browsers and standard HTTP clients, Gate also supports HTTP/1.1 and JSON encoding via the ConnectRPC framework.
  7. Understand the Gate observability data flow

    The self-hosted observability stack processes telemetry data in the following sequence:

    1. Gate sends traces and metrics to the OpenTelemetry Collector via OTLP.
    2. The collector forwards traces to Tempo for storage.
    3. The collector exposes metrics on port 8889, which are then scraped by Prometheus.
    4. Grafana queries both Tempo and Prometheus to provide a unified visualization of the telemetry data.
  8. Understand ViaLite's role in Gate classic topology

    ViaLite is a managed Via runtime for Gate classic that enables Java protocol translation for backend connections. Unlike some proxies, ViaLite sits behind Gate; Gate first accepts the player and selects a backend, and then ViaLite translates the packets between Gate and the backend server. This allows Gate to retain ownership of authentication, events, routing, Connect, and backend login.
    Java player
      -> Gate classic
      -> ViaLite
      -> backend server
    
    Bedrock player
      -> GeyserLite
      -> Gate classic
      -> ViaLite
      -> backend server
  9. Import the sample Gate Overview dashboard into Grafana

    A sample dashboard is provided to visualize key Gate metrics including Total Player Count (proxy_player_count), Instance Status (up), Go Goroutines (go_goroutines), and Go Memory Usage (go_memstats_alloc_bytes).

    Import Steps:

    1. Download the gate-overview-dashboard.json file from the official repository.
    2. Log into Grafana (default: admin/admin).
    3. Navigate to Dashboards > New > Import.
    4. Upload the JSON file or paste the JSON content.
    5. Select the Prometheus data source from the dropdown menu.
    6. Click Import.
    // Download raw JSON from:
    https://raw.githubusercontent.com/minekube/gate/master/.web/docs/guide/otel/self-hosted/grafana-dashboards/gate-overview-dashboard.json
  10. Gate HTTP API Capabilities

    The Gate HTTP API allows developers to build and deploy functionality independently from the proxy. Key use cases include:

    • Applying live-safe changes without restarting Gate or disconnecting players.
    • Developing plugins and extensions in any programming language.
    • Automating server registration and management tasks.
    • Creating custom administrative interfaces and integrating Gate with external services.
  11. Choose between Native Go Plugin and HTTP API Client for Gate

    Gate provides two integration methods for Go developers:

    1. Native Go Plugin: Create a Go module and import Gate APIs. This allows for in-process execution, maximum performance, and full access to core functionality. Ideal for extending Gate's internal features.
    2. HTTP API Client: A language-agnostic interface suitable for out-of-process execution, independent deployment cycles, and cross-version compatibility. Ideal for external integrations.