- Removed Folia declaration: Removed folia-supported: true; the plugin no longer declares Folia support.
- Fixed duplicate chunk loader: Removed duplicate chunk loader initialization, keeping only a single task.
- Unified command execution path: Both CursorMenuPlugin and WASD command execution now route through CommandUtils, ensuring real OPs are not incorrectly demoted.
- Optimized login verification performance: BCrypt and SQLite operations are now moved to a fixed-capacity background thread pool (1–2 threads, 64 queue), with player state updates posted back to the main thread to avoid blocking it.
- Improved thread pool lifecycle: Authentication thread pool is now properly shut down on plugin disable and reload to prevent resource leaks.
Added and Fixed
- Added interactive menu text features:
- Hover text styles.
- Hover cursor styles.
- Animated icons when clicking menu elements.
- MiniMessage support for sending chat messages to players.
- Permission-based menu text styles.
- Added a built-in CMP tutorial page with Chinese, English, and Russian language switching.
- OP players can use /cmenu tutorial to receive the tutorial link in chat.
If the tutorial cannot be opened, configure the URL manually, for example:
http://127.0.0.1:8169
You can also open CMP.html directly from the plugin folder.- Added configurable tutorial HTTP server port, bind address, and public URL.
- Tutorial HTTP settings can now be reloaded, and the service will restart automatically after a plugin reload.
- Fixed Maven resource filtering corrupting JavaScript templates inside the tutorial HTML file.
- The tutorial now uses the built-in HTTP service instead of sending unsupported clickable file: links on Paper 26.1.
Menu Transition and Cursor Fixes
- Fixed hover and click interactions sometimes stopping after next-menu.
- Fixed an asynchronous race where delayed cleanup from the previous menu could remove the state of the newly opened menu.
- Added menu-key and session validation to delayed menu creation and cleanup tasks, preventing stale tasks from overwriting or removing the active menu.
- Fixed the cursor sometimes stopping or becoming incorrectly positioned after a menu transition.
- Cursor updates now use the active menu stored in currentPlayerMenus instead of guessing the menu by scanning the camera’s world.
- Cursor movement is now calculated relative to the menu camera’s cameraYaw and cameraPitch, rather than using the player’s absolute rotation.
- Added a PlayerMoveEvent fallback to refresh cursor movement when Paper 26.1.2 misses certain rotation updates.
- Enabled the same-camera refresh path. When two menus use the same camera position, only the menu content is replaced.
- Before using the same-camera refresh path, CMP now verifies that the old camera exists, is valid, and is still carrying the player.
- Fixed a black-screen or flickering issue when both next-menu and stop-menu.enabled were enabled.
- next-menu transitions now preserve the existing camera whenever possible and only replace menu text, items, and interactive content, providing a seamless transition.
![]()
Fixed
UI & Interaction
- Typewriter effect for buttons now properly activates on first menu open
- Cursor smoothing and tri-axis size configuration now fully effective
- Auto-rotation and menu mode now active
Event Listeners
- Removed duplicate MenuListener registrations
- Eliminated duplicate join-run executions
- Registered and fixed WorldChangeListener
Player & Location
- NPC world disable, equipment/skin sync now active
- use-player-location changed to per-player independent Section, no longer overwriting each other
IP & Network
- IP lock count, lock duration, and same-IP login configuration now effective
- CIDR now supports IPv4, IPv6, and non-whole-byte masks
- Fixed IP warning language key path
Bug Fixes:
Fixed PAPI variables outputting values even when player is not in menu mode
New Features:
Added hover interaction commands for menu buttons hover-enter-command – Executes when cursor hovers over button hover-leave-command – Executes when cursor leaves button Added compatibility with CraftEngine plugin images
Code:# hover-commands: # - '[player] say 光标悬停在logo上' # - '[console] title %player% actionbar "&a欢迎查看Logo"' # leave-commands: # - '[player] say 光标离开了logo'
Code:Menu Animation Effects – Add dynamic visual effects to buttons Three animation types supported: up-down – Vertical floating left-right – Horizontal floating rotate – Rotation Adjustable animation speed and amplitude name: "Your Button Text" x: 0 y: 0 z: 3 # ⬇ Floating animation config floating-animation: enabled: true # Enable animation (required) type: "up-down" # Animation type (required) speed: 1.5 # Animation speed, higher = faster (optional, default 1.0) amplitude: 0.3 # Animation amplitude, higher = more noticeable (optional, default 0.25)
![]()
