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

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

请登录后获取
📌 更新日志 – v1.4.3
🆕 新增功能
打字机效果 – 为文本元素添加逐字显示动画

可配置显示速度(字符间隔)

可配置开始延迟(动画开始前等待tick数)

可配置光标字符(文本末尾闪烁光标)

支持热重载,通过 /cmenu reload 生效
悬停音效 – 鼠标悬停文本元素时播放音效

可配置音效名称(支持所有Minecraft音效)

可配置音量和音调

可配置冷却时间(防止音效过于频繁)

无效音效配置时自动回退备用音效
🔧 修复

修复 config.yml 中 join-run 命令占位符不替换问题

无论是否安装 PlaceholderAPI,内置占位符均正确替换

支持: %player% 、 %player_name% 、 %player_uuid% 、 %player_displayname% 、 %player_x% 、 %player_y% 、 %player_z% 、 %player_world% 、 %player_health% 等
⚡ 优化

线程安全: HoverEnlargeManager 中 HashMap 替换为 ConcurrentHashMap

内存优化: CursorMenuPlugin.getPlayerTextDisplays() 使用 Collections.emptyList()

稳定性: TypewriterEffect 添加 completed 标志防止重复清理


[MD] # 悬停放大效果 # ========== 打字机效果(新增) ========== typewriter: enabled: true # 启用打字机效果 speed: 2 # 每2个tick显示一个字符(值越小越快) start-delay: 10 # 延迟10个tick后开始显示(约0.5秒) cursor-char: "|" # 光标字符,也可以用 "_" 或 "▌" # ========== 悬停音效(新增) ========== hover-sound: name: "minecraft:block.lever.click" # 音效名称(必填) volume: 0.8 # 音量 0.0-1.0(可选,默认1.0) pitch: 1.2 # 音调 0.5-2.0(可选,默认1.0) cooldown: 20 # 冷却时间ticks(可选,默认20) [/MD]
全面配置化消息 - 所有提示信息现在都可以在lang.yml中自定义配置。

  • 支持热加载,修改配置后使用/cursormenu reload即可生效
  • 新增50+条可配置消息
  • 配置分类:登录提示、注册提示、权限提示、命令提示、玩家管理提示、菜单提示、系统提示、NPC提示、WASD导航提示

  • 代码:
    # ========================================
    # CursorMenu 提示信息配置文件
    # 该文件包含插件所有的提示信息配置
    # 支持热加载,修改后使用 /cursormenu reload 即可生效
    # ========================================
    
    # ========================================
    # 登录相关提示
    # ========================================
    login:
      success: '&a[CursorMenu] 登录成功!'
      wrong_password: '&c[CursorMenu] 密码错误'
      empty_password: '&c[CursorMenu] 密码不能为空'
      user_not_found: '&c[CursorMenu] 用户不存在'
      locked: '&c[CursorMenu] 账户已被锁定,请稍后再试'
      too_many_attempts: '&c[CursorMenu] 登录尝试次数过多,请稍后再试'
    
    # ========================================
    # 注册相关提示
    # ========================================
    register:
      success: '&a[CursorMenu] 用户 %player_name% 注册成功!'
      failed: '&c[CursorMenu] 注册失败,请稍后重试'
      password_mismatch: '&c[CursorMenu] 两次输入的密码不一致'
      invalid_password_length: '&c[CursorMenu] 密码长度必须在6-12位之间'
      weak_password: '&c[CursorMenu] 密码过于简单,请使用更复杂的密码'
      user_exists: '&c[CursorMenu] 该账户已注册'
      empty_password: '&c[CursorMenu] 密码不能为空'
      empty_confirm_password: '&c[CursorMenu] 确认密码不能为空'
      error: '&c[CursorMenu] 注册失败,请稍后重试'
      ip_blacklisted: '&c[CursorMenu] 您的IP地址已被禁止注册'
      ip_not_in_whitelist: '&c[CursorMenu] 您的IP地址不在允许注册的列表中'
    
    # ========================================
    # 输入相关提示
    # ========================================
    input:
      field_set: '&a[CursorMenu] 当前输入字段已设置为: %field%'
      data_saved: '&a[CursorMenu] %field% 已设置为: %value%'
      incomplete: '&c[CursorMenu] 请先完成所有输入项'
    
    # ========================================
    # 密码可见性相关提示
    # ========================================
    password:
      visibility_toggled: '&a[CursorMenu] 密码可见性已切换'
      visibility_shown: '&a[CursorMenu] 密码已显示'
      visibility_hidden: '&a[CursorMenu] 密码已隐藏'
      visibility_button_shown: '[密码:隐藏]'
      visibility_button_hidden: '[密码:显示]'
    
    # ========================================
    # 权限相关提示
    # ========================================
    permission:
      no_permission: '&c[CursorMenu] 你没有权限使用该命令'
      no_permission_button: '&c[CursorMenu] 你没有权限执行该按钮'
      no_permission_menu: '&c[CursorMenu] 你没有权限打开该菜单'
      player_only: '&c[CursorMenu] 仅玩家可用'
    
    # ========================================
    # 命令相关提示
    # ========================================
    command:
      unknown_argument: '&c[CursorMenu] 未知参数'
      reload: '&a[CursorMenu] 插件重载成功...'
      reload_complete: '&a[CursorMenu] 插件重载完成!'
      menu_not_found: '&c[CursorMenu] 菜单 ''%menu%'' 未找到,请检查配置文件!'
      menu_opened: '&a[CursorMenu] 已为玩家 %player% 打开菜单 %menu%'
      text_display_opened: '&a[CursorMenu] 已为玩家 %player% 打开文字显示: %text_id%'
      text_display_not_found: '&c[CursorMenu] 文字显示ID不存在: %text_id%'
      item_disabled: '&a[CursorMenu] 已关闭物品显示'
      item_not_found: '&c[CursorMenu] 物品ID不存在: %item_id%'
      input_menu_hint: '&c[CursorMenu] 输入对应的菜单选项'
      menu_option_not_found: '&c[CursorMenu] 无该菜单选项'
    
    # ========================================
    # 玩家管理相关提示
    # ========================================
    player:
      not_found: '&c[CursorMenu] 玩家 %player% 不存在或不在线'
      not_registered: '&c[CursorMenu] 玩家 %player% 不存在于注册列表中'
      delete_success: '&a[CursorMenu] 玩家 %player% 的注册信息已成功删除,该玩家现在可以重新注册'
      delete_failed: '&c[CursorMenu] 删除玩家 %player% 的注册信息失败'
      delete_notify: '&e[CursorMenu] 您的注册信息已被管理员删除,请重新注册'
      reset_password_success: '&a[CursorMenu] 玩家 %player% 的密码已成功重置'
      reset_password_failed: '&c[CursorMenu] 重置玩家 %player% 的密码失败'
      reset_password_notify: '&e[CursorMenu] 您的密码已被管理员重置,请重新登录'
    
    # ========================================
    # 菜单相关提示
    # ========================================
    menu:
      require_login: '&c[CursorMenu] 请先登录后再执行此操作'
      already_registered: '&c[CursorMenu] 您已注册,请直接登录'
      condition_not_met: '&c[CursorMenu] 条件不满足,无法执行该操作'
      cursor_activated: '&a[CursorMenu] 光标菜单已激活!'
      cursor_deactivated: '&c[CursorMenu] 光标菜单已关闭!'
    
    # ========================================
    # 系统相关提示
    # ========================================
    system:
      ip_warning: '&e[警告] 您的IP与注册时不同!'
      server_transfer_failed: '&c[CursorMenu] 跨服传送失败: %error%'
      config_reloaded: '&a[CursorMenu] 配置文件已重新加载'
    
    # ========================================
    # NPC相关提示
    # ========================================
    npc:
      toggle_on: '&a[CursorMenu] NPC创建已启用'
      toggle_off: '&c[CursorMenu] NPC创建已禁用'
      status_enabled: '&a[CursorMenu] NPC创建状态: 已启用'
      status_disabled: '&c[CursorMenu] NPC创建状态: 已禁用'
      reloaded: '&a[CursorMenu] NPC配置已重载'
      rotated: '&a[CursorMenu] NPC已旋转 %angle% 度'
      rotate_usage: '&c[CursorMenu] 用法: /cursormenu npc rotate <角度>'
      invalid_angle: '&c[CursorMenu] 无效的角度值: %angle%'
      system_disabled: '&e[CursorMenu] NPC镜像系统未启用(需要安装FancyNpcs插件)'
    
    # ========================================
    # WASD导航相关提示
    # ========================================
    wasd:
      enabled: '&a[CursorMenu] WASD导航已启用'
      disabled: '&c[CursorMenu] WASD导航已禁用'
📌 更新日志 – v1.4.1

🔒 安全性更新

密码哈希算法升级 - 从不安全的 SHA-256 升级到 BCrypt 加密算法。

新注册用户自动使用 BCrypt 加密,旧用户首次登录成功后自动升级密码格式。

临时 OP 操作安全性增强 - 改进了 `[op]` 命令执行的安全机制,确保 OP 状态正确恢复。

🧵 并发安全修复

修复非线程安全集合 - 将所有 HashMap/HashSet 替换为线程安全的 ConcurrentHashMap,解决了多线程环境下可能出现的并发问题。

🧹 代码质量改进

新增命令执行工具类 - 统一了命令执行逻辑,支持 `[console]`、`[op]`、`[player]`、`[server]` 等命令前缀。

代码清理 - 清理了重复的导入语句,简化了代码结构。

新增支持 1.21.11 版本

⚠️ 注意事项

BCrypt 计算比 SHA-256 慢,这是正常的安全特性,无需担心性能问题。
此版本更新内容较多,请移步Discord查看详细更新内容。

添加了菜单NPC显示,玩家可以查看自己的NPC等等
🚀 里程碑更新
当前版本是一个分水岭,插件将在下一个版本进入1.4.0的版本。
新增功能

完全自定义的登录注册系统

完全支持玩家的注册、登录、密码显示以及玩家账号的记录存储。

支持本地 SQL 玩家数据存储。
🔧 改进

删除了与 ProtocolLib 插件相关的所有剩余无用代码。

改进了 IP 绑定和管理员 IP 白名单功能。

提高了菜单加载速度和响应性能。
🔧 修复

修复了在1.21.8版本中,传送不支持回到指定坐标点的问题。

修复了在测试版本中,玩家登录注册时密码错误的问题。
📌 更新日志 – v1.3.6
🆕 新增功能

新增链接功能:配置中添加 link: "[link]https://xxxxxxx" ,可直接发送可点击链接并跳转至网页。

代码:
    # 文字组件1
    layout5:
      permission: cursormenu.button.test.layout4
      name: 加入官方Q群
      # 文字组件的x轴
      x: 2
      # 文字组件的y轴
      y: -1.0
      # 文字组件的z轴
      z: 3.5
      tilt:
        x: 0.0 # 上下倾斜(俯仰)
        y: 0.0 # 左右倾斜(偏航)
        z: 0.0 # 前后倾斜(翻滚)             
      command: []
      link: "[link]https://XXXXX|&c点击加入我们的官方Q群"
🔧 修复

修复了当玩家处于菜单中时,使用 /cmenu reload 命令重载配置,若开启了 camera-block-check ,退出菜单后清除的方块不会恢复的问题。
📌 更新日志 – v1.3.5

🆕 新增内容
- 输入内容输入变量
- `%cursormenu_input_password%` 获取玩家首次输入的聊天内容
- `%cursormenu_password_visibility%` 返回输入内容当前是否可见
- `%cursormenu_input_confirm_password%` 获取玩家第二次输入的确认内容
- 同级子菜单 在同一坐标下直接展开子页面,无需退出再进
- 主菜单秒切 若世界与坐标一致,可直接刷新到另一主菜单,不再经历“关闭-再打开”流程
- 文本悬停特效 默认关闭,开启后鼠标悬停文本时显示高亮/阴影效果
- SQL 数据存储支持
- 实验性 WorldGuard 兼容 初步支持区域检测,后续持续完善

🔧 修复与优化
- 修复若干微小 bug
- 代码结构优化,提升整体性能
📌 更新日志 – v1.3.4

🆕 新增 / 重大变更
  • 核心依赖迁移完成:正式弃用 ProtocolLib,全面改用 PacketEvents,安装前请移除旧依赖。
  • 支持 Velocity 跨服传送:命令列表中直接写 [server] 目标服务器 即可无缝跳转。
  • 可自定义光标大小:按需调整指针尺寸,适配不同 UI 风格。
  • 可自定义光标移动范围:限定光标活动区域,防止误触。
🔧 修复与优化
  • 修复若干边缘小问题,清理无用代码,体积更小,运行更快。
📌 更新日志 – v1.3.3

新增:
按钮级「随机概率命令」功能
配置 random-commands 与 random-chances 后生效
系统按给定概率(如 [10,50,40] )随机选取一条命令执行
未配置时自动回退到原有 commands 逻辑

🔧 调整
所有菜单的语言文件已同步更新,支持新随机命令提示字段

⚡ 优化
内部逻辑清理,确保随机分支与旧模式零冲突
📌 更新日志 – v1.3.2
🔧 修复
延迟命令在玩家退出菜单后仍被执行的问题已修正
config 内菜单命令失效已恢复,现可正常解析
🆕 新增
菜单支持“条件使用”——仅当满足设定条件时才允许打开/点击
🚀 其他
插件已恢复常规更新节奏,后续版本将保持持续迭代
后退
顶部 底部