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

Spigot登录注册插件PlayerMoveEvent报错求助

问题排查与解决方案

错误核心原因

从堆栈信息java.lang.NoSuchMethodError: 'boolean br.com.daniyusk.API.areLoged(java.lang.String)'可明确:

  • 你的Events类中所有调用API.areLoged(player)的地方,传入的是Player对象,但API类里的areLoged方法参数是String类型,方法签名完全不匹配,导致JVM找不到对应方法。
  • 你提到修改过参数类型但未解决,大概率是编译缓存未清理,或服务器仍加载着旧版本插件文件导致的。

具体解决方案

1. 统一方法参数类型(二选一即可)

方案A:修改API方法支持Player参数

更新API类的areLoged方法,直接接收Player对象并处理:

public static boolean areLoged(Player player) {
    try {
        // 用玩家名称匹配集合中的字符串
        return playersLoged.contains(player.getName());
    } catch (NullPointerException e) {
        System.out.println("Player == NULL");
        return false;
    }
}

这种方式不需要修改Events类的任何调用代码,保持原有逻辑即可。

方案B:修改Events类的调用参数

在Events类的所有areLoged调用处,传入玩家名称字符串:

// PlayerJoined方法中
if (!API.areLoged(player.getName())) {
    // 原有逻辑
}

// doNotMove方法中
if (!API.areLoged(player.getName())) {
    player.teleport(e.getFrom());
}

// doNotChat方法中
if (!API.areLoged(player.getName())) {
    e.setCancelled(true);
    player.sendMessage("§cRegistre-se/Logue para digitar no chat!");
}

这种方式不需要修改API类的方法定义,仅调整调用处的参数。

2. 清理缓存与重新部署

完成代码修改后,必须执行以下步骤确保服务器加载最新版本:

  • 若用Maven/Gradle构建插件,删除项目的target(Maven)或build(Gradle)目录,重新编译打包生成新jar文件。
  • 停止Minecraft服务器,删除plugins目录下的AuthPlugin旧jar包及相关配置文件夹(如有)。
  • 将新编译的jar包放入plugins目录,重启服务器。

3. 可选:修正方法名拼写(规范建议)

当前方法名areLoged为拼写错误,正确拼写应为areLogged,虽不是当前错误的直接原因,但修正后可避免后续维护时的混淆。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 10:40:37