You are using Lemehost V2, the new version with a fresh database. Check Lemehost V1 Status
A modern PocketMine-MP v5 GUI framework powered by the InventoryUI virion and PlaceholderAPI. Create fully dynamic menus from YAML with placeholders, requirements, actions, live updates, sounds, and more.
NetherByte\NetherMenus\NetherMenus
PlaceholderAPI, PocketVault
/shop, /kits), plus /gui and /guiadmin
update_interval, [refresh] action)plugins/ folder.plugin_data/NetherMenus/ and default folders.plugin_data/NetherMenus/guis/*.yml.NetherMenus uses a bundled InventoryUI virion that requires the server to have the Inventory UI Resource Pack installed and resource packs forced for clients.
21f0427f-572a-416d-a90e-c5d9becb0fa3
1.1.0
force_resources=true in server.properties
If the pack is missing or not forced:
/gui, custom open commands and /guiadmin will show a message and NOT open any forms.[NetherMenus] InventoryUI not ready: Resource pack 'Inventory UI Resource Pack' not found[NetherMenus] Plugin will not work and features will be degraded[NetherMenus] Download the resource pack from (link)[NetherMenus] NetherMenus: Resource pack not detected. Please download/enable the Inventory UI Resource Pack for full functionality.Install the resource pack put the resource pack in the resource pack folder and set force_resources=true in resource_packs.yml and name file name of resource pack in resource_stack: like this
resource_stack:
-Inventory UI Resource PackThen restart the server to restore full functionality.
/gui <id>
open_command: "gui <id>"
nethermenus.command (default: true)/guiadmin
nethermenus.admin (default: op)open_command: (string or list). Example: open_command: shop registers /shop.nethermenus.command
Top-level keys (GUI file):
id: string – Logical ID (defaults to the file name without extension)name: string – GUI title (supports placeholders)rows: 1..6 – Number of rows (size = rows * 9)open_command: string | string[] – Commands that open this GUI (besides /gui <id>)command_description: string – Description used when registering custom commandsopen_actions: string | string[] – Actions to run when GUI opensclose_actions: string | string[] – Actions to run when GUI closesopen_requirement: { … } – Requirement block evaluated before openingupdate_interval: number – Seconds between updates for items with update: true
filler_item: – Background filler configuration
material: stringslots: string | string[] – Comma list or ranges (e.g. "0-8, 36-44")items: – Map of item entries. Each entry supports:
slot: number | string | string[] – Single slot or comma/range/arraypriority: number – Lower is chosen first when entries target the same slotmaterial: string – See Materialsamount: number (1..64)dynamic_amount: string – Placeholder string resolving to 1..64display_name: stringlore: string | string[]tooltip: { display_name?, lore? } – Alternate container for name/loredye: string – leather color (purple or #RRGGBB)trim_material: string – e.g. emerald, copper, netherite, ...
trim_pattern: string – e.g. host, coast, vex, ...
update: bool – If true, only name/lore are refreshed each update_interval
view_requirement: { … } – Requirement block controlling visibilityclick_requirement: { … } – Requirement block evaluated on clicksuccess_actions: string | string[] – Actions to run on click successaction | actions – Legacy aliases for success_actions
StringToItemParser:
STONE, OAK_PLANKS, or full names like minecraft:netherite_chestplate
material: nbt-"<base64-serialized-nbt>"material: placeholder-%player_item_in_hand%main_hand | mainhand, off_hand | offhand
armor_helmet, armor_chestplate, armor_leggings, armor_boots
Write as lines in [tag] arg format. All args are parsed by PlaceholderAPI before use.
[close] – Closes the GUI (runs close_actions)[opengui] <guiId> – Opens another GUI (respects its open requirement)[refresh] – Rebuilds current GUI items without closing[message] <text> / [broadcast] <text> / [chat] <text>
[console] <cmd> / [player] <cmd>
[givemoney] <amount> / [takemoney] <amount>
[givepermission] <node> / [takepermission] <node>
[giveexp] <amt|amtL> / [takeexp] <amt|amtL> (L suffix = levels)[sound] <id> [volume] [pitch][broadcastsound] <id> [volume] [pitch][broadcastsoundworld] <id> [volume] [pitch]A requirement block is evaluated as a whole and supports success/deny actions.
Block keys:
requirements: – map of individual requirement specsminimum_requirements: number – Minimum number of individual requirements that must passstop_at_success: bool – Stop evaluating after reaching minimum_requirements
success_actions: – Run if the block passesdeny_actions: – Run if the block failsIndividual requirement types (examples):
type: has permission + permission: node
type: has permissions + permissions: [node1, node2] + minimum: 1
type: has money + amount: 500
type: has exp + amount: 10 + level: true|false
type: is near + location: 'WORLD,X,Y,Z' + distance: '5'
type: has item with advanced options (name/lore contains, ignorecase, armor/offhand, strict)type: string equals / string equals ignorecase / string contains
type: string length + min: + max:
type: (==, !=, >=, <=, >, <) + input: + output:
type: javascript + expression:
Negation is supported for any type using type: "!has permission", etc.
Provided via hook/PlaceholdersHook.php (requires PlaceholderAPI):
%nethermenus_opened_menu% – ID of the menu currently open (empty if none)%nethermenus_is_in_menu% – yes/no if a menu is open%nethermenus_last_menu% – ID of the last menu the player had open%nethermenus_opened_menu_name% – Display name of the currently open menu%nethermenus_last_menu_name% – Display name of the last open menuopen_command: and registered on enable (excluding the base /gui to avoid conflicts).priority. When priority ties, the last-defined entry wins.id: a1
name: Actions Menu
rows: 4
open_command: action
command_description: Open the actions menu
open_actions: '[sound] beacon.activate 1 1'
close_actions: '[sound] beacon.deactivate 1 1'
update_interval: 1
filler_item:
material: light_gray_stained_glass_pane
slots: 0-35
items:
Slot_24:
material: minecraft:clock
slot: 24
update: true
display_name: Ping
lore:
- 'Ping: %player_ping%'
Slot_26:
material: minecraft:netherite_chestplate
slot: 26
trim_material: emerald
trim_pattern: hostforce_resources=true, restart the server./gui and /guiadmin will send an in-game message and not open.src/NetherByte/NetherMenus/ – Main plugin codesrc/NetherByte/NetherMenus/ui/gui/ – GUI runtimesrc/NetherByte/NetherMenus/hook/ – Hooks (PlaceholderAPI provider, PocketVault hook, inventory close listener)src/NetherByte/NetherMenus/libs/ – Bundled virions/libs (InventoryUI, forms, etc.)plugin_data/NetherMenus/guis/*.yml – Your GUI definitionsIf you want a full in-depth guide, see the wiki in NetherMenus-wiki/ for options, examples, and requirement type references.