HomeJavaModsKaMenu
KaMenu
ModsJava

KaMenu

by Katacr · on Modrinth

A GUI plugin designed specifically for modern Minecraft Paper servers.

⬇ Download on Modrinth

KaMenu - Native Dialog Menu Builder

Create modern Minecraft Dialogs with YAML: forms, dynamic buttons, action workflows, persistent data, and optional JavaScript.

KaMenu animated preview

KaMenu is a menu plugin built around Minecraft's native Dialog system. Instead of simulating interfaces with inventory screens, it lets you create real client-native Dialogs with clean and structured YAML.

Use it for server navigation, shops, warps, friend lists, player profiles, daily rewards, forms, administration tools, or even game interfaces with live state and periodic refreshes. Basic menus require no programming. Conditions, action packages, JavaScript, and an external API are available when your project needs more advanced logic.

Quick Links

Interface Preview

KaMenu screenshot 1 KaMenu screenshot 2 KaMenu screenshot 3 KaMenu screenshot 4 KaMenu screenshot 5 KaMenu screenshot 6

Why KaMenu?

Native Dialogs Instead of Inventory GUIs

KaMenu uses Minecraft's Dialog system directly. Players can read text, inspect items, enter text, move sliders, switch options, and click buttons in one screen without using inventory items to imitate a form.

YAML First, JavaScript Optional

Regular menus only need YAML. Titles, body content, inputs, buttons, and actions use clear configuration sections. JavaScript is optional and intended for calculations, live state, and reusable advanced logic.

A Complete Menu Lifecycle

KaMenu does more than open a screen. It can validate permissions or data before opening, execute ordered action queues after a click, clean up state when the menu closes, and run periodic tasks while the menu remains active.

Component System

Body Components

Input Components

Captured values use $(input_id) inside actions, conditions, commands, or JavaScript. Input cleanup can trim surrounding whitespace and remove configured characters globally or per menu.

Bottom Layouts

Dynamic Lists and Pagination

Player counts, friend lists, and warp counts are not known in advance. repeat generates buttons from a simple string, JavaScript array, or object list at runtime.

Typical uses include:

Action System

Buttons, clickable text, custom commands, events, and action packages share one action syntax.

Category Common Actions
Messages tell, actionbar, title, toast, hovertext
Commands command, console, chat
Menus open, reset, close, force-open, force-close
Gameplay sound, tppos, server, money, item, stock-item
Storage data, gdata, list, glist, meta
Flow wait, return, run-task, stop-task, stop-current-task
Reuse actions packages and js packages

Actions execute in order and support delays, conditions, target-player selectors, and arguments. Action packages read parameters with {arg:0}, {arg:1}, and so on.

Conditions and Variables

Conditions can control action branches as well as titles, body content, input defaults, button labels, and component visibility.

{checkitem:[slot;property;format]} can also expose item names, lore, enchantments, damage, item_model, and custom model IDs.

Events, Tasks, and Lifecycle

Periodic tasks support automatic or manual starts, finite or infinite loops, completion actions, and wildcard stopping. KaMenu tracks active tasks per player to prevent duplicate lifecycle tasks when a menu refreshes.

JavaScript and Reusable Packages

Data Storage

KaMenu includes SQLite and MySQL storage without requiring another database plugin.

Custom Commands and API

Register player-facing commands in config.yml:

External plugins can use the KaMenu API to:

ESC Pause-Menu Entry

pause_menu.yml can be compiled into a vanilla data-pack Dialog and added as one custom entry on the client's ESC pause screen. The entry can contain body content, inputs, and a button grid that opens regular KaMenu menus or executes actions.

/km pause register

Fully restart the server after registration.

Quick Example

Create plugins/KaMenu/menus/welcome.yml:

Title: '&bServer Welcome Menu'

Settings:
  can_escape: true
  lifetime: 300
  after_action: CLOSE

Body:
  welcome:
    type: message
    width: 320
    text:
      - '&fWelcome, &a%player_name%&f!'
      - '&7Enter a nickname and choose an action.'

Inputs:
  nickname:
    type: input
    text: '&eNickname'
    default: '%player_name%'
    max_length: 16

Bottom:
  type: multi
  columns: 2
  buttons:
    hello:
      text: '&aSay Hello'
      tooltip: '&7Send a greeting'
      actions:
        - 'tell: &aHello, $(nickname)!'
        - 'sound: entity.experience_orb.pickup;volume=1.0;pitch=1.3'
    examples:
      text: '&bOpen Examples'
      actions:
        - 'open: example/main_menu'
  exit:
    text: '&cClose'
    actions:
      - 'close'

Then run:

/km reload menu
/km open welcome

Installation and First Use

  1. Place the KaMenu JAR in plugins/.
  2. Start the server and allow the first dependency download to complete.
  3. Run /kamenu guide to open the built-in setup guide.
  4. Select a language and release the matching example menus.
  5. Run /km open example/main_menu.

Common Commands

/km guide
/km list
/km open <menu-id> [player]
/km examples [zh_CN|en_US] [overwrite]
/km language <language-id>
/km reload [all|menu|config|actions|js|lang]
/km pause <register|unregister|info>

Administration commands use the kamenu.admin permission by default.

Requirements

Item Requirement
Java 21+
Minecraft 1.21.7+
Server Spigot/Paper/Folia 1.21.7+
Database SQLite by default, or MySQL 5.7+

The first startup requires Maven access to download runtime libraries. Downloaded libraries are stored in the server cache.

Optional Dependencies

All integrations are soft dependencies.

Usage Notes

Support and Metrics

When reporting an issue, include the full server version, KaMenu version, related menu YAML, and complete stack trace.

KaMenu bStats

KaMenu is free and open source under the GPL-3.0 license.

Verified by MCModsHub

These come from our own check of the pack file, not from the source page.

Explore more