AbstractMenus 1.18.0
一个大型性能版本。菜单在服务器端明显更轻松——主线程的菜单刷新路径比1.17.x便宜
×MiniMessage / PlaceholderAPI的使用在正常游戏中不再显示为热路径。现有的菜单配置依然能正常运行。
你会在同一台带有Spark的Paper 1.21.11服务器上,实际工作量下感受到
的:
- 主线菜单更新成本:−70%
- 物品刷新成本(姓名、背景、图标):−80%
- MiniMessage + PlaceholderAPI 在刷新时工作:静态菜单几乎消失了
菜单系统最多可容纳50名玩家,并打开菜单,从主线预算的一半降到六分之一左右。实际上:更高的TPS余量,多玩家同时打开菜单时的延迟峰值更少,菜单动画更流畅。
有什么新动态
- 菜单名称和不使用占位符的背景故事现在只需加载一次并缓存——不再每次刷新都重新解析颜色和MiniMessage标签。
- 动画菜单现在每帧完成一半的工作——物品不再重复制作。
- 实时球员皮肤和HeadDatabase头像会缓存,所以以骷髅为主的菜单不会每次刷新都重新下载或重建数据。
修复了漏洞
- Sign 菜单在左键点击时没有触发——这是1.17.x版本的回归,禁用了左键激活器。两个点击键又能正常使用。
- 头骨拥有者物品的控制台垃圾邮件——每次渲染即使成功也会出现错误。沉默。
- 偶尔会在点击触发命令中替换双重占位符,以及一个聊天事件循环,可以重新打开激活器命令的菜单。两人都解决了。
- 当 Mojang 的 API 限速皮肤请求时会出现资源泄漏,以及一个能够承受 /am 重载的文件监视线程。两人都清理干净了。
- 主线程和异步线程在玩家加入和BungeeCord插件消息上出现了一些混淆。
⚠ 如果你在菜单配置中使用音名——请阅读
论文1.21.x,修改了声音ID解析方式——旧的全大写表单(如BLOCK_NOTE_BLOCK_CHIME或UI_BUTTON_CLICK)不再被接受,会触发菜单文件加载错误。切换到小写虚点形式:
- UI_BUTTON_CLICK → ui.button.click
- BLOCK_NOTE_BLOCK_CHIME→block.note_block.铃声
- BLOCK_NOTE_BLOCK_BELL → block.note_block.bell
- ENTITY_VILLAGER_NO→entity.villager.no
- BLOCK_ENDER_CHEST_OPEN→block.ender_chest开放
- ENTITY_PLAYER_LEVELUP → entity.player.levelup
你在原版音效列表中看到的任何弦都能用。
你现有配置里的其他内容都是
完全向下兼容的——菜单、规则、动作、激活器都不会更改加载。
在 Paper 1.20.6 – 1.21.11(支持 Folia 版本)
中安装
Drop AbstractMenus-1.18.0.jar 到你的插件/文件夹中。没有硬依赖;推荐用 PlaceholderAPI / Vault + 一个经济插件 / LuckPerms 来处理常见的占位符和规则,但并非必须——缺少的钩子会优雅地退化。