GeyserMenu-Companion
1.1.6Server-side companion plugin for GeyserMenu — register buttons, send Bedrock forms, and handle player events via a simple API on Spigot/Paper or Velocity.
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
- Button registration API — register buttons with icons, priorities, and click handlers
- Form builder API — send simple, modal, and custom forms to Bedrock players
- Permission-based visibility — conditionally show buttons based on player permissions
- Bedrock player events — listen for Bedrock join/leave, check if a player is Bedrock
- Multi-platform — supports Spigot/Paper and Velocity from a single codebase
- Auto-reconnect — automatically reconnects to the GeyserMenu extension on disconnect
- Command buttons — register buttons that execute commands without writing click handlers
Requirements
- Spigot/Paper 1.20.4+ or Velocity 3.3.0+
- Java 21+
- Floodgate
- GeyserMenu extension running on Geyser
Installation
- Download the JAR for your platform —
SpigotorVelocity - Place it in your
plugins/folder - Start the server once to generate
config.yml - Set the
host,port, andsecret-keyto match your GeyserMenu extension config - Restart — the plugin will connect and sync buttons automatically
Configuration
extension:
host: "localhost"
port: 19133
secret-key: "your-secret-key-here"
connection:
auto-reconnect: true
reconnect-delay: 5
server:
identifier: "lobby"
Quick API Example
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
Similar projects
Plugin →Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
Emotecraft
Create your own emotes in Minecraft.
7.5MSueta
Simple Tpa
A simple tpa plugin which sends requests
5.4MSueta
Common Network
Forge and Fabric Unified Networking Solution
3.9MSueta
Set Home
A lightweight plugin for players to set their homes.
3.8MSueta