
CustomScreenMenu 1.2.3
An amazing plugin that lets you fully customize the player's screen options menu
### Changelog – v1.2.3
#### ✅ Fixes
- **Fixed**: Custom-model-data cursors were not loaded after every server restart.
#### 🆕 New Features
1. **Auto-Config Generation**
On startup the plugin checks for missing files and automatically creates fresh defaults.
2. **Extended Text Styles**
- Added new display modes: text rotation, bottom-to-top flow, and left-right direction.
- See the freshly generated `test.yml` for usage examples.
3. **Gamemode Sync**
- Switching to the camera view automatically sets the player to **Adventure** mode.
- Disconnecting or leaving the view restores **Survival** mode.
- Works seamlessly with **ItemsAdder** and **BetterHud** to hide the crosshair.
4. **Player-State Variable**
New placeholder: `cursormenu_is_attacking_or_breaking`
Returns `true` while the player is attacking an entity or breaking a block, otherwise `false`.
5. **Per-Player Menu Command**
New command: `/cursormenu run test <player>`
Opens the specified menu for the given player without affecting others.
6. **Granular Permissions**
Added to `config.yml`:
- Menu-level permission nodes (e.g. `cursormenu.button.test.layout1`).
- Individual button permissions within any menu.
- Fixed invalid custom model data in config configuration.
- Fix color codes not working
- Performance optimizations have minimized cursor latency, and cursor movement is now smoother and smoother
- You can now use color codes and gradient colors <#d9afd9> to add cool effects to your options!
- Added a shadow to the menu display text.
- Fixed some minor bugs.
New placeholders:
- %cursormenu_current_menu%`– the name of the menu currently open
- %cursormenu_selected_option% – the name of the currently highlighted option
- %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
Add a new folder lang/ inside the plugin’s data directory.
Inside it, place one file per language:
- lang/en_us.yml – English example
- lang/ru_ru.yml – Russian example
- lang/zh_cn.yml – Chinese example
Each file contains the same keys and only the translated strings.
Fix: prevent menu overlap when /cursormenu run is used while already in camera mode.
Patch: in setupCursor, immediately call stopCursor(player, true) if the player is already in cursor mode, before creating new entities.