🧩
JMenus
K
v1.0.0 GitHub ↓ Download
docs/overview

JMenus

The most powerful GUI menu system for Minecraft servers. Create stunning, interactive menus with 11+ action types — no coding required.

✦ Plugin Documentation

Craft Any Menu, Instantly

In-game editor, rich action system, BungeeCord support, economy integration, and full PlaceholderAPI compatibility — all in one lightweight plugin.

11+
Action Types
1.21+
Minecraft
1–6
Row Support
0
Coding Required

Core Features

🎨
Advanced Menu System

Unlimited custom GUI menus with flexible 1–6 row layouts, fill items, and custom commands.

✏️
In-Game Editor

Edit menus visually without touching any YAML files. Add items and configure actions live.

Rich Actions

11+ action types — commands, messages, sounds, teleports, BungeeCord, economy, and more.

🌐
BungeeCord

Send players between network servers seamlessly. Perfect for server selectors.

💰
Economy

Full Vault integration — give, take, or check money directly from menu actions.

🏷️
Placeholders

PlaceholderAPI support plus 15+ built-in placeholders for players and server data.

Technical Specs

RequirementDetails
Minecraft Version1.21+
Server SoftwarePaper, Spigot, Bukkit-based
Java VersionJava 21+
DependenciesNone required · PlaceholderAPI + Vault optional
LicenseOpen Source · GitHub

Why JMenus?

  • Zero learning curve — intuitive in-game editor makes menu creation effortless for anyone
  • Performance optimized — lightweight and efficient, won't slow your server
  • Highly customizable — every aspect configurable to match your server's style
  • Developer friendly — clean API for integration with other plugins (coming soon)
  • Future proof — regular updates and new features
  • Active support — responsive developer and community

Made by J2D · GitHub · Modrinth

docs/installation

Installation

Get JMenus running on your server in under two minutes.

Requirements

  • Minecraft Server 1.21 or higher
  • Paper, Spigot, or Bukkit-based server software
  • Java 21 or higher
  • Write permissions to the plugins/ directory

Download

Steps

1

Download the JAR

Get the latest JMenus.jar from Modrinth or GitHub above.

2

Place in plugins folder

Move the JAR to your server's plugins/ directory.

3

Install optional dependencies

PlaceholderAPI — for dynamic content. Vault — for economy actions. Both are optional.

4

Start / restart the server

JMenus will auto-generate config.yml, the menus/ folder, and an example menu.

5

Verify installation

Run /jmenus help in-game. If the help menu appears, you're all set!

Done! Open the example menu with /jmenus open example_menu to see JMenus in action.

Generated Files

PathPurpose
plugins/JMenus/config.ymlMain plugin configuration
plugins/JMenus/menus/Folder containing individual menu YAML files
plugins/JMenus/menus/example_menu.ymlExample menu for reference
docs/quick-start

Quick Start

Create your first custom menu in under 5 minutes.

💡
You can build menus entirely in-game using the visual editor — no file editing needed.

Step-by-Step

Step 1 — Create the menu

command
/jmenus create my_first_menu

Creates a new menu file with a basic template in plugins/JMenus/menus/.

Step 2 — Open the in-game editor

command
/jmenuedit my_first_menu

Opens the visual editor — drag items, change the title, adjust size, all without touching YAML.

Step 3 — Test your menu

command
/jmenus open my_first_menu

Example YAML

Here's what a basic menu config looks like — you can also edit this directly in the file:

yaml
title: "&8&l✦ &e&lMy First Menu &8&l✦"
size: 3
open-sound: "BLOCK_CHEST_OPEN:1:1"
close-sound: "BLOCK_CHEST_CLOSE:1:1"

fill-item:
  material: BLACK_STAINED_GLASS_PANE
  name: " "

command:
  enabled: true
  name: "myfirstmenu"

items:
  welcome:
    material: PAPER
    slot: 13
    name: "&e&lWelcome!"
    lore:
      - "&8╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍"
      - "&7Welcome to my server!"
      - "&7Click for a surprise!"
      - "&8╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍"
    actions:
      left:
        - "[message] &aHello %player_name%!"
        - "[sound] ENTITY_PLAYER_LEVELUP:1:1"

  close:
    material: BARRIER
    slot: 22
    name: "&c&lClose Menu"
    actions:
      left:
        - "[close]"
        - "[sound] BLOCK_CHEST_CLOSE:1:1"
🎉
You've created your first JMenus menu. Keep reading to explore all the advanced features!
docs/download

Download & Support

Official download sources and support channels for JMenus.

Official Downloads

⚠️
Always download JMenus from official sources to ensure you get the genuine, safe version.

Support Channels

🐛
Bug Reports

Open a GitHub Issue with reproduction steps, server version, and error logs.

💬
Discord

Get community help and reach the developer at Discord: J2D

📖
Documentation

This wiki — comprehensive guides, examples, and configuration reference.

Version History

VersionReleaseHighlights
v1.0.0LatestIn-game editor, template system, 11+ actions, BungeeCord, economy
docs/commands

Commands

Full reference for all JMenus commands. Aliases: /jmenu /menus /jm

/jmenus — Main Command

CommandDescriptionPermission
/jmenus helpShow help menu
/jmenus open <menu>Open a menujmenus.open
/jmenus listList all menusjmenus.list
/jmenus create <menu> [template]Create a new menujmenus.create
/jmenus delete <menu>Delete a menu permanentlyjmenus.delete
/jmenus edit <menu>Open the in-game editorjmenus.editor
/jmenus reloadReload all configs and menusjmenus.reload

/jmenuedit — Editor Shortcut

Aliases: /jme, /menuedit

command
/jmenuedit <menu_name>
⌨️
All commands support tab completion — press Tab to autocomplete menu names and options.

Templates (for /jmenus create)

basic
3-row menu with welcome + close button
shop
Pre-built shop layout with item slots
navigation
Server hub / navigation menu
info
Info display with scrollable content
admin
Admin control panel template
empty
Blank canvas, fully manual
docs/permissions

Permissions

Granular permission control for players, moderators, and admins.

Core Nodes

PermissionDescriptionDefaultLevel
jmenus.useBasic plugin accesstruePlayer
jmenus.openOpen menus via commandstruePlayer
jmenus.listList all menusopModerator
jmenus.reloadReload configurationopAdmin
jmenus.createCreate new menusopAdmin
jmenus.deleteDelete menusopAdmin
jmenus.editorAccess in-game editoropAdmin

Menu-Specific Permissions

Restrict individual menus to specific permission nodes:

permission nodes
jmenus.open.shop      # Can open the 'shop' menu
jmenus.open.warps     # Can open the 'warps' menu
jmenus.open.admin     # Can open the 'admin' menu
jmenus.open.vip       # Can open the 'vip' menu
ℹ️
If a player has jmenus.open (the general node), they can open any menu unless you add a permission: field directly in the menu YAML file.

Permission in Menu Files

yaml
title: "&c&lAdmin Panel"
size: 3
permission: "admin.use"   # Required to open this menu

items:
  ban_player:
    material: BARRIER
    slot: 10
    name: "&cBan Player"
    permission: "admin.ban"   # Required to see and use this item
docs/configuration

Configuration

Main config at plugins/JMenus/config.yml. Use /jmenus reload after changes.

General Settings

yaml
settings:
  debug: false            # Extra console output for troubleshooting
  update-check: true      # Check for updates on startup
  use-placeholders: true  # Enable PlaceholderAPI integration
  language: "en_US"       # Language (future multi-language support)
  auto-reload: true       # Reload menus when files are modified
  metrics: true           # Anonymous usage statistics

Menu Defaults

yaml
menu:
  default-size: 3
  default-title: "&8Menu"

  default-fill-item:
    enabled: false
    material: "BLACK_STAINED_GLASS_PANE"
    name: " "

  sounds:
    enabled: true
    default-open: "BLOCK_CHEST_OPEN:1:1"
    default-close: "BLOCK_CHEST_CLOSE:1:1"

BungeeCord Settings

yaml
bungee:
  enabled: true
  ping-interval: 60
  server-info-format: "&fPlayers: &a%count%/%max%"
  show-status: true
  servers:
    - "hub"
    - "survival"
    - "creative"
    - "skyblock"
    - "minigames"
  aliases:
    main: "hub"
    build: "creative"
    lobby: "hub"
⚠️
Run /jmenus reload after editing config.yml to apply changes without restarting.
docs/actions

Actions System

Actions define what happens when players click menu items. Chain multiple actions together for complex behavior.

Actions execute in order, top to bottom. Use this for conditional logic — check permissions or money first, then execute the real action.

Available Actions

[message]
Message
Send a private message to the player.
[command]
Command
Run a command as the player.
[console]
Console
Run a command as console with full permissions.
[sound]
Sound
Play a sound: SOUND:vol:pitch
[close]
Close
Close the current menu.
[menu]
Open Menu
Navigate to another menu.
[teleport]
Teleport
Teleport player to a location or player.
[broadcast]
Broadcast
Send a message to all online players.
[bungee]
Bungee
Send player to another BungeeCord server.
[permission]
Permission
Check a permission before executing actions.
[money]
Money
Give, take, or check player balance (Vault).

Action Syntax Examples

yaml — actions
actions:
  left:
    - "[message] &aHello %player_name%!"
    - "[sound] ENTITY_PLAYER_LEVELUP:1:1"
    - "[console] give %player_name% diamond 1"
    - "[broadcast] %player_name% claimed a reward!"
    - "[close]"

  right:
    - "[menu] shop"

  shift_left:
    - "[permission] admin.use:[console] op %player_name%"
    - "[money] take:500"
    - "[message] &aYou spent $500!"

  middle:
    - "[bungee] hub"
    - "[teleport] spawn"

Click Types

KeyTriggerCommon Use
leftLeft mouse buttonPrimary action
rightRight mouse buttonSecondary / alternative
middleScroll wheel clickSpecial actions
shift_leftShift + left clickAdmin or advanced actions
shift_rightShift + right clickAdvanced alternatives
docs/editor

In-Game Editor

JMenus' flagship feature — create and modify menus entirely in-game without touching any files.

Accessing the Editor

command
/jmenuedit <menu_name>
# or
/jmenus edit <menu_name>
🔑
Requires jmenus.editor permission (OP only by default).

Editor Interface

🧊
Edit Items

Left-click to edit. Right-click to remove. Shift-click to configure actions.

📝
Edit Title

Chat input for title changes. Supports color codes and placeholders.

📐
Edit Size

Adjust the menu from 1–6 rows (9–54 slots) interactively.

⚙️
Settings

Configure fill items, sounds, and direct commands.

Waypoint Editor

Access by Shift-clicking any item in the main editor view:

  • Name Tag — rename the item with color code support
  • Book — edit the item's lore lines
  • Anvil — change the item material
  • Lightning — configure click actions
  • Arrow — return to main editor
docs/templates

Templates

Use built-in templates when creating menus to get a head start.

command
/jmenus create <menu_name> <template>

Available Templates

basic
3-row menu with welcome message and close button. Best starting point.
shop
Pre-built shop layout with item display slots and buy actions.
navigation
Server hub with teleport buttons. Ideal for warps menus.
info
Information display panel with organized sections.
admin
Admin control panel with player management and server tools.
empty
Completely blank — full manual control, zero pre-built items.
💡
Templates are just starting points. Customize everything with the in-game editor after creation.
docs/placeholders

Placeholders

Use dynamic values in menu titles, item names, lore, and action messages.

Built-in Placeholders

PlaceholderReturns
%player_name%Player's username
%player_displayname%Player's display name
%player_health%Current health
%player_max_health%Max health
%player_food_level%Hunger level
%player_level%XP level
%player_exp%XP points
%player_x% / %player_y% / %player_z%Coordinates
%player_world%Current world name
%player_gamemode%Current gamemode
%server_online%Online player count
%server_max_online%Max player slots
%server_name%Server name
%server_version%Server version string
%server_tps%Server TPS

PlaceholderAPI

Install PlaceholderAPI to unlock thousands of additional placeholders from other plugins:

examples
%vault_eco_balance_formatted%   # Player's money (Vault)
%luckperms_primary_group_name%  # LuckPerms rank
%statistic_player_kills%        # Kill count
%player_world%                  # World name
%server_time_HH:mm:ss%         # Server time
JMenus auto-detects PlaceholderAPI when installed. No extra configuration required.
docs/bungee

BungeeCord Support

Send players between servers in your network seamlessly — perfect for server selectors.

Requirements

🌐
BungeeCord Proxy

A properly configured BungeeCord proxy with multiple backend servers.

🔌
JMenus Installed

JMenus must be installed on all backend servers with consistent configs.

⚙️
Enable in Config

Set bungee.enabled: true and configure your server list.

Using the [bungee] Action

yaml — actions
# Send to specific servers
[bungee] hub
[bungee] survival
[bungee] creative
[bungee] minigames

# Using aliases (defined in config.yml)
[bungee] main    # → goes to "hub"
[bungee] build   # → goes to "creative"
[bungee] lobby   # → goes to "hub"
⚠️
BungeeCord support has not been tested with Velocity yet. Report any issues on GitHub!
docs/economy

Economy Integration

Full Vault support — create shops, charge for services, or reward players with in-game currency.

Setup

1

Install Vault

Download Vault from Bukkit/Spigot. It bridges JMenus with your economy plugin.

2

Install an economy plugin

EssentialsX Economy, CMI Economy, TNE, or any Vault-compatible economy plugin.

3

Restart the server

All three (JMenus + Vault + economy) must load on the same startup.

Money Action Syntax

Give Money

[money] give:1000
Add money to balance.

Take Money

[money] take:500
Remove money (only if sufficient).

🔍
Check Money

[money] has:1000
Verify balance before action.

yaml — shop example
buy_diamond:
  material: DIAMOND
  slot: 11
  name: "&b&lDiamond"
  lore:
    - "&7Price: &a$500"
  actions:
    left:
      - "[money] has:500"
      - "[money] take:500"
      - "[console] give %player_name% diamond 1"
      - "[message] &aPurchased 1 Diamond for $500!"
      - "[sound] ENTITY_EXPERIENCE_ORB_PICKUP:1:2"
💡
Combine [money] has: checks with [permission] guards and rank-based discounts for sophisticated shop systems.
docs/api

API Documentation

Developer resources for integrating JMenus with other plugins.

🔨

Under Development

The JMenus API is being built alongside the plugin. Full JavaDoc, integration guides, custom action creation, and event system — coming in a future release.

⭐ Watch on GitHub

What's Coming

📖
JavaDoc Reference

Complete method documentation with examples and best practices.

🔧
Integration Guide

Step-by-step tutorials for adding JMenus to your plugin.

💻
Code Examples

Ready-to-use snippets and patterns.

🎯
Custom Actions

Register your own action types from external plugins.

📢
Need early API access? Reach out to J2D via GitHub Issues or Discord for early-access docs.
docs/troubleshooting

Troubleshooting

Solutions for common issues and how to get further help.

Common Issues

IssueSymptomsSolution
Plugin won't loadError in console, commands don't existCheck Java 21+, server software compatibility, download from official source
Menus don't openCommands work but no GUI appearsCheck permissions, verify the menu file exists and has valid YAML syntax
Items don't showMenu opens but appears emptyVerify item config, check material names, ensure slots are 0–53
Actions don't triggerClicking does nothingCheck action syntax, verify permissions, test with a simple [message] action
Placeholders show raw text%player_name% not replacedInstall PlaceholderAPI and the required expansion packs

Enable Debug Mode

yaml
settings:
  debug: true

Then reload: /jmenus reload. The console will log detailed info about menu loading and action execution.

Quick Checklist

  1. Verify player permissions are correctly configured in your permission plugin
  2. Confirm the plugin is enabled and on the latest version
  3. Check server console for error stack traces
  4. Enable debug mode for detailed output
  5. Validate YAML syntax — use a YAML linter (YAML is whitespace-sensitive)
  6. Test with a fresh minimal menu to isolate plugin conflicts

Getting More Help

🐛
Bug Reports

Open a GitHub Issue with error logs and reproduction steps.

💬
Discord

Chat support with the developer at Discord: J2D

💡
Feature Requests

Suggest new features on GitHub Discussions or Discord.

🔍
Self-Diagnosis

Enable debug mode, check console, validate YAML, test minimal config.

docs/examples

Examples

Real-world menu configurations — copy, paste, and customize.

📋
These are templates. Modify them to match your server's theme, items, commands, and plugin setup.

Admin Control Panel

yaml
title: "&c&l⚡ &4&lAdmin Panel &c&l⚡"
size: 4
permission: "admin.use"

fill-item:
  material: RED_STAINED_GLASS_PANE
  name: " "

items:
  player_management:
    material: PLAYER_HEAD
    slot: 10
    name: "&e&lPlayer Management"
    lore:
      - "&8╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍"
      - "&7Manage online players"
      - "&7• Kick · Ban · Teleport"
      - "&8╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍"
    actions:
      left:
        - "[menu] player_management"

  quick_actions:
    material: EMERALD
    slot: 22
    name: "&a&lQuick Actions"
    lore:
      - "&eLeft: &7Heal all"
      - "&eRight: &7Feed all"
      - "&eShift+Left: &7Clear weather"
      - "&eShift+Right: &7Set day"
    actions:
      left:
        - "[console] heal *"
        - "[broadcast] &aAll players healed!"
      right:
        - "[console] feed *"
        - "[broadcast] &aAll players fed!"
      shift_left:
        - "[console] weather clear"
      shift_right:
        - "[console] time set day"

VIP Perks Menu

yaml
title: "&6&l⭐ &e&lVIP Perks &6&l⭐"
size: 4
permission: "vip.use"

fill-item:
  material: YELLOW_STAINED_GLASS_PANE
  name: " "

items:
  vip_kit:
    material: DIAMOND_CHESTPLATE
    slot: 11
    name: "&b&lVIP Kit"
    lore:
      - "&7Claim your daily VIP kit"
      - "&7Cooldown: &e24 hours"
    flags:
      - "HIDE_ATTRIBUTES"
    actions:
      left:
        - "[console] kit vip %player_name%"
        - "[message] &aVIP kit claimed!"
        - "[sound] ENTITY_PLAYER_LEVELUP:1:1"

  fly_toggle:
    material: FEATHER
    slot: 13
    name: "&f&lFly Toggle"
    actions:
      left:
        - "[console] fly %player_name%"
        - "[message] &aFlight toggled!"
        - "[sound] ENTITY_BAT_TAKEOFF:1:1"

  daily_bonus:
    material: GOLD_INGOT
    slot: 15
    name: "&6&lDaily Bonus"
    lore:
      - "&7Claim: &a$1000 &7daily"
    actions:
      left:
        - "[money] give:1000"
        - "[message] &aReceived &6$1000 &adaily bonus!"
        - "[sound] ENTITY_EXPERIENCE_ORB_PICKUP:1:2"
Tip: Use the in-game editor (/jmenuedit <menu>) to tweak these examples visually after pasting the YAML.

© 2024 J2D · GitHub · Modrinth