Overview
HytaleMenus is a lightweight, JSON-configurable GUI menu system for Hytale servers. It enables server owners to create beautiful, interactive menus with nested sub-menus and text pages entirely through configuration files—no coding required.
Key Features
- Simple JSON configuration (no coding required)
- 3x3 grid menu layout with 9 clickable slots
- Unlimited nested sub-menus
- Text pages with player placeholders
- Permission-based access control (hide or deny modes)
- Built-in action system for commands, messages, and navigation
- Hot reload configuration without server restart
- Developer API for custom action registration
Installation
- Download HytaleMenus from your BuiltByBit purchase
- Stop your Hytale server
- Place the JAR file in your server's
mods/directory - Start your server
- Configure the plugin in
mods/HytaleMenus/config.json - Use
/menuadmin reloadto apply changes
Requirements: Hytale Server, Java 25+
Commands
Player Commands
| Command | Description |
|---|---|
/menu | Open the default menu |
/menu <name> | Open a specific named menu |
Admin Commands
| Command | Description |
|---|---|
/menuadmin reload | Reload configuration from disk |
/menuadmin list | List all configured menus |
Permissions
| Permission | Description | Default |
|---|---|---|
hytalemenus.use | Access to /menu command | true |
hytalemenus.admin | Access to /menuadmin command | OP |
hytalemenus.menu.<name> | Access to specific menus | true |
Configuration
Main configuration file: mods/HytaleMenus/config.json
Global Settings
{
"defaultMenu": "main",
"noPermissionMessage": "&cYou don't have permission!"
}Menu Configuration
{
"menus": {
"main": {
"title": "Main Menu",
"rows": 3,
"permission": "",
"items": {
"0": {
"icon": "COMPASS",
"name": "&bServer Info",
"lore": ["&7Click for info"],
"action": "page:rules"
},
"4": {
"icon": "DIAMOND",
"name": "&6VIP Menu",
"lore": ["&7VIP only!"],
"action": "menu:vip",
"permission": "rank.vip",
"noPermission": "hide"
}
}
}
}
}Text Page Configuration
{
"pages": {
"rules": {
"title": "Server Rules",
"lines": [
"&6Welcome to our server, {player}!",
"",
"&e1.&f Be respectful to all players",
"&e2.&f No griefing or stealing",
"&e3.&f No hacking or exploits",
"&e4.&f Have fun!"
]
}
}
}Item Slot Positions
The 3x3 grid uses slot positions 0-8:
0
1
2
3
4
5
6
7
8
Actions
Actions define what happens when a player clicks a menu item.
| Action | Format | Description |
|---|---|---|
close | close | Close the current menu |
menu | menu:menuname | Open another menu |
page | page:pagename | Open a text page (closes on back) |
page | page:pagename:menuname | Open text page with back to menu |
message | message:text | Send a message to the player |
command | command:cmd args | Execute command (menu stays open) |
close-command | close-command:cmd | Close menu and execute command |
Permission Handling
When an item has a permission requirement, you can choose how to handle unauthorized access:
"noPermission": "hide"- Item is completely hidden from players without permission"noPermission": "deny"- Item is visible but shows an error when clicked
Developer API
HytaleMenus provides an API for other plugins to register custom actions.
Registering Custom Actions
// Get the API instance
HytaleMenusAPI api = HytaleMenusAPI.getInstance();
// Register a custom action
api.registerAction("myplugin:teleport", (player, playerRef, ref, store, args) -> {
// args contains everything after the colon
// e.g., "myplugin:teleport:spawn" -> args = "spawn"
Location loc = getWarpLocation(args);
player.teleport(loc);
// Optionally open a custom page
// MyPage page = new MyPage(playerRef);
// player.getPageManager().openCustomPage(ref, store, page);
});
// Usage in config: "action": "myplugin:teleport:spawn"Opening Menus Programmatically
// Open a menu for a player
HytaleMenusAPI api = HytaleMenusAPI.getInstance();
api.openMenu(player, "main");Ready to use HytaleMenus?
Create professional server menus without writing any code!
$4.99 Learn More