You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

继承CommandExecutor接口时方法参数名称为何与教程不一致?

解决Paper插件开发中IDEA自动生成onCommand方法参数名不符的问题

问题原因

IDEA自动生成方法时用commandSender、s、strings这类占位符参数名,本质是没读取到Paper API源码里定义的标准参数名(sender、label、args)。就算勾选了Maven自动下载源码,也可能因依赖拉取异常、源码未正确关联导致问题。

解决方案

1. 确认Paper依赖配置正确

确保pom.xml里引入了对应Minecraft版本的Paper API依赖:

<dependency>
    <groupId>io.papermc.paper</groupId>
    <artifactId>paper-api</artifactId>
    <version>你的MC版本对应Paper版本,比如1.20.4-R0.1-SNAPSHOT</version>
    <scope>provided</scope>
</dependency>

2. 手动关联Paper API源码

自动下载失败的话,手动操作关联:

  • 打开IDEA的Project Structure(快捷键Ctrl+Alt+Shift+S)
  • 切换到Libraries标签,找到paper-api依赖
  • 点击右侧加号选择Attach Sources,从Paper Maven仓库下载对应版本的sources.jar文件并关联

3. 强制刷新Maven依赖

  • 点击IDEA右侧Maven面板的刷新图标(圆形箭头)
  • 或终端执行命令:
mvn clean install -U

-U参数会强制Maven更新快照依赖和源码文件。

4. 检查IDEA参数名存储设置

确保IDEA编译时保留参数名信息:

  • 打开Settings(快捷键Ctrl+Alt+S)
  • 搜索Java Compiler,勾选Store information about parameters in generated class files (useful for reflection)选项
  • 点击Apply后重新编译项目

临时替代方案

如果不想折腾,直接手动修改参数名即可——参数名称不影响方法功能,只是可读性差异。修改后代码如下:

public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
                         @NotNull String[] args) {
    // 你的命令逻辑
    return true;
}

内容的提问来源于stack exchange,提问作者DiceMa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 22:16:15