TGViewer
开发者工具箱|编程·开发工具·资源 开发者工具箱|编程·开发工具·资源 @devtoolboxhub · 559 subscribers
Post #1196 2
Paper 命令注册:用 Brigadier 替代 CommandExecutor

传统 Paper 插件通过 plugin.yml + CommandExecutor 注册命令,存在多个痛点:args[0] 需手动解析、不支持选择器(@a、@p)、Tab 补全须单独维护 TabCompleter 且容易不同步,命令树静态固定,无法根据配置动态改变参数结构。

Paper 内置了 Mojang 的 Brigadier 框架,通过 LifecycleEvents.COMMANDS 生命周期钩子注册命令树,无需 commands 块。权限检查挂在树节点上,Brigadier 在构建 Tab 补全时自动过滤无权限的命令,例如 requires() 确保只有拥有对应权限的玩家才能看到 /punish。命令树可根据配置条件化注册——例如 /report 只在启用 severity 时增加 severity 参数,否则注册简化版,Tab 补全和错误提示始终准确。

ArgumentTypes.player() 返回的不是 Player 对象,而是一个解析器,支持 Steve、@a、@p 等选择器,无需手动实现。解析后通过 resolvePlayer 转换为玩家,同时处理空选择器的情况。整体注册流程比传统方式更清晰、类型安全,且 Tab 补全自动同步。

传统方式的问题:Bukkit.getPlayer(args[0]) 只能精确匹配当前在线玩家,不支持选择器和模糊匹配;Tab补全必须手动同步,易出错;命令树固定,无法动态调整。

Brigadier 方式示例:在 LifecycleEvents.COMMANDS 内注册 /punish 字面量,requires 检查权限,then 追加 target 参数并绑定执行方法。对于 /report,先读取配置,若启用 severity 则注册含 severity 分支,否则注册简单分支。

ArgumentTypes.player() 的使用:在命令上下文中获取 PlayerSelectorArgumentResolver,调用 resolve(ctx.getSource()) 获得玩家列表,取第一个或处理空情况。这样命令处理器就能直接使用解析到的玩家。


迁移到 Brigadier 可大幅简化 Paper 插件命令开发,消除重复劳动和潜在 bug。虽然旧命令映射仍能工作,但 Brigadier 已成为推荐的首选方案。

#开发者 #工具 #Paper #Brigadier #Minecraft #Command
@DevToolboxHub
More from @devtoolboxhub
  1. Oct 2, 2026AWS AIF-C01 偏差与方差考点梳理 备考 AWS Certified AI Practitioner 时,偏差与方差是高频易错点。核心判断逻辑只有一条:训练集与未见数据的表…
  2. Oct 2, 2026功能开关正在变成没人清理的技术债 功能开关(Feature Flag)是现代软件交付里最有效的工具之一:支持灰度发布、A/B 实验、未发布功能门控,以及生产环境的即时熔断开关。但这…
  3. Oct 2, 2026containerd 检查点恢复路径默认关闭 Kubernetes 里策略变成进程状态只有一处,就是创建。检查点恢复是通往运行进程的第二条路,而这条路上没有任何环节决定:当保存的状…
  4. Oct 1, 2026给 AI 代理建一份「自欺清单」 维也纳邮政与邮件服务商 Postservice.at 创始人 Stephan Holzbach 不是开发者,但今年公司大部分工作跑在 Claude…
  5. Oct 1, 2026代码评审评论为何比本意更刺耳 一条评审评论大约四十秒写完,通常夹在两件事之间,写的人清楚自己的语气。读的人刚在这份代码上花了三天,正想收尾,而且听不到你的声音,于是自己补上一种语气…
  6. Oct 1, 2026用 Hindsight 给客服 Agent 加上持久记忆 大多数客服 Agent 只擅长回答眼前这条消息。真正难的是同一个客户一周后再来,Agent 完全不知道之前发生过什么。作者…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →