JP Plugins
All plugins

JPMenus

Custom chest menus and dialog screens with an in-game editor for Paper servers.

Display plugin, version 1.0.0

Downloads open soon.

Features

  • Custom chest menus and dialog screens
  • Buttons that run commands, open menus, check permissions or cost money
  • PlaceholderAPI support
  • In-game menu editor
  • Example menus to start from

Requirements

  • Paper 26.1 or newer (Java 25)
  • Optional:
    • PlaceholderAPI: placeholders in texts, and this plugin's own placeholders
    • Vault: money (any Vault economy)

Installation

  1. Put JPMenus-<version>.jar in your server's plugins folder.
  2. Restart the server. plugins/JPMenus/ is created with the config and messages.
  3. Change what you want in the files, then reload or restart.

Type /jp as an operator to see every JP plugin you have installed, its version and which optional plugins it found.

Commands

CommandDescriptionPermission
/jpmenus <open|list|edit|create|reload>
Aliases: /jpmenu, /menus
Open, edit and reload menus.jpmenus.open

Permissions

PermissionDefaultDescription
jpmenus.openeveryoneUse /jpmenus open <menu> (menu permissions and requirements still apply).
jpmenus.staffoperatorsGet [staff] messages from menus (e.g. feedback).
jpmenus.adminoperatorsEdit, create and reload menus, open menus for others.

Configuration

All files are in plugins/JPMenus/. Files: config.yml, messages.yml.

When you update the plugin, new options are added to your config.yml by themselves, with their comments. Your own settings stay as they are, and the old file is kept as config.old-v<number>.yml.

Languages: English, Spanish, Portuguese, French and German. Set language: in config.yml (en, es, pt, fr or de).

Default config.yml
# Used to add new options to this file after an update. Don't change it.
config-version: 1

# ╔══════════════════════════════════════════════════════════════════╗
# ║                     JPMenus  ·  config.yml                       ║
# ╚══════════════════════════════════════════════════════════════════╝
# Your own menus: chest menus (items you click) and dialog screens (Minecraft's
# pop-up windows with text, buttons and text boxes). Every file in the "menus" folder is
# one menu; the file name is its id. Apply changes with /jpmenus reload
# (a new or changed "command:" needs a restart).
#
# In game (op):
#   /jpmenus create shop             new chest menu, opens the editor
#   /jpmenus create rules dialog     new dialog screen
#   /jpmenus edit main               click items to change them, click an empty slot
#                                    with an item from your inventory to add one
#   /jpmenus open main [player]      open a menu (for someone else too)
#
# ---------------- chest menu file ----------------
#   type: chest
#   title: '&8Menu'
#   rows: 3                    1-6
#   command: menu              opens with /menu (optional), aliases: [m]
#   permission: ''             needed to open it
#   fill: GRAY_STAINED_GLASS_PANE   fills empty slots
#   update-ticks: 0            redraw every X ticks for live placeholders
#   open-requirements: []      see requirements below
#   open-actions: []           run when it opens
#   items:
#     <id>:
#       slot: 13               or slots: [0, 8]
#       material: COMPASS      PLAYER_HEAD + head: '{player}' shows a skin
#       amount: 1
#       name: '&aSpawn'
#       lore: ['&7Go home']
#       glow: false
#       model-data: 0          custom model data for resource packs
#       priority: 0            when two items want one slot, the higher one shows
#       view-requirements: []  hide the item unless they pass
#       click-requirements: [] when they fail, deny-actions run instead
#       actions: []            any click   (left-actions / right-actions: per button)
#       deny-actions: []
#
# ---------------- dialog file ----------------
#   type: dialog
#   title: '&8Rules'
#   body: ['line', ...]        paragraphs of text
#   inputs:                    text boxes; what was typed is {input:<id>}
#     <id>: {label: 'Your name', max-length: 64, multiline: false}
#   columns: 2                 buttons per row
#   buttons:
#     <id>: {label: '&aOK', tooltip: '', width: 150, actions: [...]}
#
# ---------------- actions ----------------
#   [player] spawn             command as the player      [console] give {player} cake
#   [message] text  [broadcast] text  [staff] text (jpmenus.staff)  [actionbar] text
#   [title] Title|Subtitle
#   [sound] UI_BUTTON_CLICK    [open] other-menu  [close]  [refresh]
#   [server] lobby             send to a Velocity/BungeeCord server
#   [take-money] 100  [give-money] 100  (Vault)   [delay] 20 (ticks)
#   [op] command               runs as op for that one command - be careful with it
#
# ---------------- requirements ----------------
#   permission:vip.kit    !permission:vip.kit    money:100
#   %player_level% >= 10    %player_world% == world    %some_placeholder% contains text
#
# {player} and %placeholders% (PlaceholderAPI) work in names, lore, titles and actions.
# Never put {input:...} straight into a [console] command - players could type anything.

# Language of the messages: en (messages.yml), es, pt, fr or de (lang/<code>.yml).
# Your own language: copy a file in the lang folder to lang/<code>.yml, translate it
# and set its code here (for example it for lang/it.yml).
language: en

# Replace messages.yml with the new design when the plugin is updated.
# Your old file is kept as messages.old-vX.yml. false = never touch it.
auto-update-style: true

Support

Guides and the docs of every JP plugin are on the JP Plugins website. Questions, bugs or ideas? Join the JP Plugins Discord.

License

JPMenus is free to use on any server, including servers that make money, but it is not open source. Don't reupload, sell or share modified copies of it. The full terms are in LICENSE.txt, which is also inside the jar.