自定义玩家屏幕菜单 —— 多场景多样化的实时面对面菜单使用场景

付费 开源 娱乐 自定义玩家屏幕菜单 —— 多场景多样化的实时面对面菜单使用场景 1.5.3

请登录后获取
1. 修复插件中的漏洞,该漏洞导致在启动过程中无法加载方块(版本 26.2)。
2. 添加重新加载修改后的语言文件。
3. 优化 GIF 动画导入代码。
1. 新增GIF动图支持的导入,采用Packet发包处理来实现,详细教程课查看插件文档
支持循环播

代码:
map-animations:
  demo_gif:
    enabled: true
    source: 'demo.gif'

    x: 0.0
    y: 1.0
    z: 3.5

    width: 2.4
    height: 1.35

    billboard: center

    rendering:
      fit: contain
      background: transparent
      dithering: none

    playback:
      mode: loop
      timing: source
      speed: 1.0
      start-delay-ticks: 0
      end-behavior: hold-last

    interaction:
      enabled: false
2. 优化目前无用代码

修复与兼容性​

  • 修复玩家退出服务器时菜单会话被重复清理的问题。
  • 删除 MenuListener 中重复的退出监听逻辑,避免在玩家离线后再次执行延迟 stopCursor() 清理。
  • 保留 SessionCleanupListener 作为唯一的退出会话清理入口,确保菜单实体、光标、摄像机和玩家状态能够及时释放。
  • 新增对 Paper 26.2 的兼容支持。
修复:
1. 移除 Folia 声明:删除 folia-supported: true,插件不再声明支持 Folia。

2. 修复重复区块加载器:删除重复的区块加载器初始化,仅保留一份任务。

3.统一命令执行路径:CursorMenuPlugin 与 WASD 的命令执行统一走 CommandUtils,确保真实 OP 不会被错误降权。

4. 优化登录验证性能:BCrypt 与 SQLite 操作移至固定容量后台线程池(1–2 线程、64 队列),完成后回主线程更新玩家状态,避免阻塞主线程。

5. 完善线程池生命周期:插件关闭和重载时正确停止认证线程池,防止资源泄漏。

新增与修复​

  • 新增菜单文本交互功能:
    • 鼠标悬停文本样式。
    • 鼠标悬停光标样式。
    • 点击菜单元素时播放动画图标。
    • 支持通过 MiniMessage 向玩家发送聊天消息。
    • 可根据玩家权限显示不同的菜单文本样式。
  • 新增内置 CMP 教程文档,支持中文、英文和俄文切换。
  • OP 玩家可使用 /cmenu tutorial 在聊天框中获取教程链接。

    如果教程无法打开,请在配置文件中重新设置 URL,例如:

    也可以直接打开插件文件夹中的 CMP.html。
  • 新增教程 HTTP 服务的端口、绑定地址和公网 URL 配置。
  • 支持通过重载命令重新读取教程配置并重启教程 HTTP 服务。
  • 修复教程 HTML 被 Maven 资源过滤错误改写 JavaScript 模板的问题。
  • 教程链接改用插件内置 HTTP 服务,不再向 Paper 26.1 发送不受支持的 file: 点击链接。

菜单切换与光标修复​

  • 修复执行 next-menu 后,菜单悬停和点击可能失效的问题。
  • 修复旧菜单的延迟清理任务可能错误移除新菜单状态的问题。
  • 为菜单延迟生成和清理任务增加菜单键与会话状态校验,防止旧任务覆盖或清理新菜单。
  • 修复菜单切换后光标可能停止移动或位置错误的问题。
  • 光标更新现在直接使用 currentPlayerMenus 中记录的当前活动菜单,不再通过摄像机所在世界猜测菜单。
  • 光标位置现在根据菜单摄像机的 cameraYaw 和 cameraPitch 计算相对旋转,不再直接使用玩家的绝对视角。
  • 新增 PlayerMoveEvent 光标刷新兜底,在 Paper 26.1.2 未正常收到部分旋转更新时继续刷新光标。
  • 启用同摄像机菜单刷新路径;当新旧菜单摄像机位置相同时,只替换菜单内容,不重新创建摄像机。
  • 使用同摄像机刷新前,会检查旧摄像机是否存在、实体是否有效,以及玩家是否仍然乘坐该摄像机。
  • 修复同时启用 next-menu 和 stop-menu.enabled 时,旧逻辑提前移除摄像机造成的黑屏和闪屏。
  • next-menu 切换现在会尽可能保留原摄像机,仅替换菜单文本、物品和交互内容,实现无缝菜单切换。

已修复​

UI 与交互​

  • 初次打开菜单时正式启用按钮打字机效果
  • 光标平滑、三轴尺寸配置正式生效
  • 自动旋转和菜单模式生效

事件监听​

  • 移除重复注册的 MenuListener
  • 消除 join-run 重复执行
  • 注册并修正 WorldChangeListener

玩家与位置​

  • NPC 世界禁用、装备/皮肤同步生效
  • use-player-location 改为玩家独立 Section,不再互相覆盖

IP 与网络​

  • IP 锁定次数、锁定时长、同 IP 登录配置生效
  • CIDR 支持 IPv4、IPv6 和非整字节掩码
  • 修复 IP 警告语言键路径
修复
  • 统一修复 PAPI 变量问题:即使玩家未处于菜单模式,变量仍输出内容的问题已解决
新增功能
  • 菜单按钮新增悬停交互命令
    • hover-enter-command – 光标悬停到按钮上时执行
    • hover-leave-command – 光标离开按钮时执行

    • 代码:
            # 悬停触发命令(光标悬停时自动执行)
            # hover-commands:
            #   - '[player] say 光标悬停在logo上'
            #   - '[console] title %player% actionbar "&a欢迎查看Logo"'
            # 离开触发命令(光标离开时自动执行)
            # leave-commands:
            #   - '[player] say 光标离开了logo'
  • 兼容 CraftEngine 插件的图片使用
菜单动画效果 – 为按钮添加动态视觉效果

支持三种动画类型:

up-down – 上下浮动

left-right – 左右浮动

rotate – 旋转

可自由调节动画速度与幅度


代码:
      name: "你的按钮文字"
      x: 0
      y: 0
      z: 3
      # ⬇ 浮动动画配置
      floating-animation:
        enabled: true       # 是否启用(必填)
        type: "up-down"     # 动画类型(必填)
        speed: 1.5          # 动画速度,越大越快(可选,默认 1.0)
        amplitude: 0.3      # 动画幅度,越大摆动越明显(可选,默认 0.25)

浏览附件136380
🔧 修复

Paper 26.1 兼容

左键点击:修复了 26.1 版本下左键点击菜单文本不执行命令的问题,现在左键挥手事件也能正常触发
⚡ 优化

内置 SQLite 驱动:将 sqlite-jdbc 直接打包进插件,避免服务器环境下载失败导致无法加载

语言文件缓存: getLangMessage 改为缓存读取,减少频繁 IO 带来的性能开销

数据库线程安全:为 DatabaseManager 关键方法添加同步控制,降低 SQLite 并发访问风险

状态清理完善:加强玩家退出、被踢、重载、异常等场景的菜单状态清理,减少内存泄漏隐患
修复:
  • 修复菜单文本与光标悬停/点击检测范围不一致的问题(当调整 text-size 和光标 scale 时)
新增功能:
  • 光标移动灵敏度配置 sensitivity (1.0 为默认,数值越小移动越慢)
  • 光标平滑系数配置 smoothing (0.05-1.0,1.0=无滤波零延迟,越小越丝滑但会有拖手感)
  • 文本大小支持无限放大或缩小
优化:
  • 修复若干已知性能报错
后退
顶部 底部