# CustomScreenMenu Plugin Documentation
---
## Core Features
---
## Commands
| Command | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Alias command:
---
## Highlights
---
PlaceholderAPI:
%cursormenu_current_menu% – the name of the menu currently open
%cursormenu_selected_option% – the name of the currently highlighted option
%cursormenu_hovered_option% – the key of the button currently hovered by the cursor
%cursormenu_display_item_id% – the ID of the item currently shown
%cursormenu_clicked_option% – the key of the text layout component that was just clicked
%cursormenu_menu_world% – the world in which the menu is located
%cursormenu_button_x% – X coordinate of the selected button
%cursormenu_button_y% – Y coordinate of the selected button
%cursormenu_button_z% – Z coordinate of the selected button
%cursormenu_is_attacking_or_breaking% – Determine whether the player is currently attacking or destroying blocks, with true as yes and false as no
%cursormenu_input_<field_name>% – gets the value of an input field, such as %cursormenu_input_username%
%cursormenu_password_visibility% – returns whether the password is currently visible
WASD PlaceholderAPI:
%cmp_wasd_menu% – the name of the current WASD menu
%cmp_wasd_enabled% – whether WASD navigation is enabled for the player
%cmp_wasd_index% – the currently selected WASD button index
%cmp_wasd_x% – X coordinate of the current WASD selection
%cmp_wasd_y% – Y coordinate of the current WASD selection
%cmp_wasd_z% – Z coordinate of the current WASD selection
%cmp_wasd_location% – full location information of the current WASD selection
%cmp_<menu_name>_xyz% – XYZ coordinates of the specified menu
%cmp_<menu_name>_x% – X coordinate of the specified menu
%cmp_<menu_name>_y% – Y coordinate of the specified menu
%cmp_<menu_name>_z% – Z coordinate of the specified menu
Built-in command placeholders:
%player% – player name
%player_name% – player name
%player_uuid% – player UUID
%player_displayname% – player display name
%player_x% – player's current X coordinate
%player_y% – player's current Y coordinate
%player_z% – player's current Z coordinate
%player_world% – player's current world
%player_health% – player's current health
---
## Integrations
| Plugin | Added Capabilities |
|---|---|
| PlaceholderAPI | Use dynamic placeholders in menu text, NPC names, commands, and conditions. |
| PacketEvents | Provides packet features for menu cameras, cursor interaction, and WASD input listening. |
| FancyNpcs | Creates player NPC mirrors inside menus. |
| SkinsRestorer | Synchronizes player skins for NPC mirrors. |
| bStats | Collects anonymous plugin usage statistics, can be disabled manually. |
---
## Dependencies
| Dependency | Type | Description |
|---|---|---|
| PlaceholderAPI | Required | Provides placeholder support for menus, text, commands, and variables. |
| PacketEvents | Required | Provides packet-level interaction for camera, cursor, and WASD systems. |
| FancyNpcs | Optional | Required only when using the NPC mirror system. |
| SkinsRestorer | Optional | Recommended when player skin synchronization is needed. |
---
## Demo Videos
---
## Core Features
- Future-proof: Compatible with Minecraft 1.19+ and optimized for 1.21.x packet compatibility.
- Command-driven: Open, close, reload menus, or open menus for specific players with a single command.
- 3-D screen menus: Build immersive menu interfaces using TextDisplay and ItemDisplay entities.
- Cursor interaction: Players can control the cursor with their camera view, hover over buttons, and click menu options.
- WASD navigation: Supports W / A / S / D button selection and Space confirmation, working alongside the cursor system.
- NPC mirror: Create an NPC mirror with the same appearance as the player when entering a menu, with equipment and skin synchronization support.
- Login/register system: Built-in account registration, login, password input, password visibility toggle, password reset, and user deletion.
- Security enhancements: Supports IP binding, IP whitelist / blacklist, admin IP whitelist, login failure lockout, and BCrypt password encryption.
- Visual effects: Supports hover enlargement, text scaling, tilt angles, rotation animation, typewriter text effect, and hover sounds.
- Hot reload: Edit configuration files and apply changes with
/cursormenu reload.
---
## Commands
| Command | Description |
|---|---|
|
/cursormenu run <menu_name> | Opens the specified menu. ||
/cursormenu run <menu_name> <player_name> | Opens the specified menu for a player. ||
/cursormenu stop | Closes the current menu and restores the player state. ||
/cursormenu close | Closes the current menu. ||
/cursormenu reload | Reloads all plugin configuration files. ||
/cursormenu items <item_id> | Displays the specified item as a 3-D model. ||
/cursormenu itemsstop | Ends the current 3-D item preview. ||
/cursormenu text open <text_config_name> | Opens the specified text display configuration. ||
/cursormenu input <field> <value> | Writes content into a login / register input field. ||
/cursormenu toggle_password_visibility | Toggles whether passwords are shown as plain text. ||
/cursormenu register_confirm | Confirms account registration. ||
/cursormenu check_registered | Checks whether the player is already registered. ||
/cursormenu check_and_register | Checks and registers an account. ||
/cursormenu check_password_before_login | Checks the password before login. ||
/cursormenu login | Performs login. ||
/cursormenu deleteuser <player_name> | Deletes the specified player's registration data. ||
/cursormenu resetpassword <player_name> <new_password> | Resets the specified player's password. ||
/cursormenu npc toggle | Toggles the NPC mirror system. ||
/cursormenu npc enable | Enables the NPC mirror system. ||
/cursormenu npc disable | Disables the NPC mirror system. ||
/cursormenu npc status | Shows the NPC mirror system status. ||
/cursormenu npc reload | Reloads NPC mirror configuration. ||
/cursormenu npc rotate <angle> | Rotates the current NPC mirror. ||
/cursormenu npc help | Shows NPC mirror command help. |Alias command:
/cmenu---
## Highlights
- 360° camera interaction around menus, text displays, items, and menu scenes.
- Join-trigger: Decide whether a menu should open automatically when a player joins.
- 3-D model settings: custom model-data, size, rotation, glow, and display position.
- Text placement: precise X, Y, Z offsets, scale, tilt angles, and rotation for on-screen text.
- Typewriter text effect: display menu text character by character.
- Hover sound effect: play configurable sounds when hovering over menu elements.
- Hover enlargement: enlarge selected buttons to make interactions clearer.
- WASD control: navigate menus with keyboard input and confirm with Space.
- NPC mirror display: show the player's own character model inside the menu scene.
- Login and registration menus: create pre-entry server interfaces with account protection.
- BCrypt password security: legacy passwords are automatically upgraded after successful login.
- IP protection: supports IP binding, login lockout, and admin IP whitelist.
- Random commands: trigger commands by probability for rewards, lotteries, or events.
- Delayed commands: execute commands after a configurable delay.
- Menu switching: move players between menus after clicking buttons.
- Teleport support: teleport players when entering or leaving menu scenes.
- Custom messages: edit
lang.ymland reload without restarting the server. - bStats support: anonymous usage statistics can be disabled in the bStats configuration.
- …and many more configurable options.
---
PlaceholderAPI:
%cursormenu_current_menu% – the name of the menu currently open
%cursormenu_selected_option% – the name of the currently highlighted option
%cursormenu_hovered_option% – the key of the button currently hovered by the cursor
%cursormenu_display_item_id% – the ID of the item currently shown
%cursormenu_clicked_option% – the key of the text layout component that was just clicked
%cursormenu_menu_world% – the world in which the menu is located
%cursormenu_button_x% – X coordinate of the selected button
%cursormenu_button_y% – Y coordinate of the selected button
%cursormenu_button_z% – Z coordinate of the selected button
%cursormenu_is_attacking_or_breaking% – Determine whether the player is currently attacking or destroying blocks, with true as yes and false as no
%cursormenu_input_<field_name>% – gets the value of an input field, such as %cursormenu_input_username%
%cursormenu_password_visibility% – returns whether the password is currently visible
WASD PlaceholderAPI:
%cmp_wasd_menu% – the name of the current WASD menu
%cmp_wasd_enabled% – whether WASD navigation is enabled for the player
%cmp_wasd_index% – the currently selected WASD button index
%cmp_wasd_x% – X coordinate of the current WASD selection
%cmp_wasd_y% – Y coordinate of the current WASD selection
%cmp_wasd_z% – Z coordinate of the current WASD selection
%cmp_wasd_location% – full location information of the current WASD selection
%cmp_<menu_name>_xyz% – XYZ coordinates of the specified menu
%cmp_<menu_name>_x% – X coordinate of the specified menu
%cmp_<menu_name>_y% – Y coordinate of the specified menu
%cmp_<menu_name>_z% – Z coordinate of the specified menu
Built-in command placeholders:
%player% – player name
%player_name% – player name
%player_uuid% – player UUID
%player_displayname% – player display name
%player_x% – player's current X coordinate
%player_y% – player's current Y coordinate
%player_z% – player's current Z coordinate
%player_world% – player's current world
%player_health% – player's current health
---
## Integrations
| Plugin | Added Capabilities |
|---|---|
| PlaceholderAPI | Use dynamic placeholders in menu text, NPC names, commands, and conditions. |
| PacketEvents | Provides packet features for menu cameras, cursor interaction, and WASD input listening. |
| FancyNpcs | Creates player NPC mirrors inside menus. |
| SkinsRestorer | Synchronizes player skins for NPC mirrors. |
| bStats | Collects anonymous plugin usage statistics, can be disabled manually. |
---
## Dependencies
| Dependency | Type | Description |
|---|---|---|
| PlaceholderAPI | Required | Provides placeholder support for menus, text, commands, and variables. |
| PacketEvents | Required | Provides packet-level interaction for camera, cursor, and WASD systems. |
| FancyNpcs | Optional | Required only when using the NPC mirror system. |
| SkinsRestorer | Optional | Recommended when player skin synchronization is needed. |
---
## Demo Videos
- Demo 1 – Menu Interaction
- Demo 2 – Menu example for registration and login
- Demo 3 – Advanced Menu Design
