GeyserMenu-Companion

Server-side companion plugin for GeyserMenu — register buttons, send Bedrock forms, and handle player events via a simple API on Spigot/Paper or Velocity.

100

GeyserMenu-Companion

GeyserMenu Companion

The server-side half of the GeyserMenu stack. Connects to the GeyserMenu Geyser extension over TCP and exposes a clean Java API for registering menu buttons, sending native Bedrock forms, and listening to Bedrock player events — on both Spigot/Paper and Velocity.

How It Works

Once connected to the GeyserMenu extension, your plugins use the companion API to register buttons that appear in the Bedrock menu. When a player clicks a button, the event is forwarded to your plugin's handler. You can also send forms directly to any Bedrock player at any time.

Features

- Command buttons — register buttons with icons, priorities, and click handlers - Command buttons — send simple, modal, and custom forms to Bedrock players - Command buttons — conditionally show buttons based on player permissions - Command buttons — listen for Bedrock join/leave, check if a player is Bedrock - Command buttons — supports Spigot/Paper and Velocity from a single codebase - Command buttons — automatically reconnects to the GeyserMenu extension on disconnect - Command buttons — register buttons that execute commands without writing click handlers

Requirements

- Spigot/Paper 21+ or Velocity 21+ - Java 21+ - Floodgate - 21+ extension running on Geyser

Installation

1. Download the JAR for your platform — `Spigot` or `Velocity` 2. Place it in your `plugins/` folder 3. Start the server once to generate `config.yml` 4. Set the `host`, `port`, and `secret-key` to match your GeyserMenu extension config 5. Restart — the plugin will connect and sync buttons automatically

Configuration

```yaml extension: host: "localhost" port: 19133 secret-key: "your-secret-key-here"

connection: auto-reconnect: true reconnect-delay: 5

server: identifier: "lobby" ```

Quick API Example

```java GeyserMenuAPI api = GeyserMenuAPI.getInstance();

api.registerButton(MenuButton.builder() .id("myplugin-main") .text("My Plugin") .imageUrl("https://example.com/icon.png") .priority(50) .onClick((player, session) -> openMenu((Player) player)) .build()); ```

Full API documentation is available on the GitHub repository.

Links

- GeyserMenu Extension - GitHub - Report Issues

ADS