HytaleMenus

JSON-Configurable GUI Menu System

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

  1. Download HytaleMenus from your BuiltByBit purchase
  2. Stop your Hytale server
  3. Place the JAR file in your server's mods/ directory
  4. Start your server
  5. Configure the plugin in mods/HytaleMenus/config.json
  6. Use /menuadmin reload to apply changes

Requirements: Hytale Server, Java 25+

Commands

Player Commands

CommandDescription
/menuOpen the default menu
/menu <name>Open a specific named menu

Admin Commands

CommandDescription
/menuadmin reloadReload configuration from disk
/menuadmin listList all configured menus

Permissions

PermissionDescriptionDefault
hytalemenus.useAccess to /menu commandtrue
hytalemenus.adminAccess to /menuadmin commandOP
hytalemenus.menu.<name>Access to specific menustrue

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.

ActionFormatDescription
closecloseClose the current menu
menumenu:menunameOpen another menu
pagepage:pagenameOpen a text page (closes on back)
pagepage:pagename:menunameOpen text page with back to menu
messagemessage:textSend a message to the player
commandcommand:cmd argsExecute command (menu stays open)
close-commandclose-command:cmdClose 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!