JPMenus
Custom chest menus and dialog screens with an in-game editor for Paper servers.
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
- Put
JPMenus-<version>.jarin your server'spluginsfolder. - Restart the server.
plugins/JPMenus/is created with the config and messages. - 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
| Command | Description | Permission |
|---|---|---|
/jpmenus <open|list|edit|create|reload>Aliases: /jpmenu, /menus | Open, edit and reload menus. | jpmenus.open |
Permissions
| Permission | Default | Description |
|---|---|---|
jpmenus.open | everyone | Use /jpmenus open <menu> (menu permissions and requirements still apply). |
jpmenus.staff | operators | Get [staff] messages from menus (e.g. feedback). |
jpmenus.admin | operators | Edit, 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: trueSupport
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.