为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 Cmds.java 中的 getPlugin 方法不起作用?

为什么 Cmds.java 中的 getPlugin 方法不起作用?

红颜莎娜 2021-08-25 10:19:37
我想从EventsClass.class更改放置在Cmds.class 中的记录变量。但我对这条线有问题:private EventsClass plugin = EventsClass.getPlugin(EventsClass.class);编译器无法解析 getPlugin。代码:主.java:package com.github.noisersup.serverrust.LoginMe;import org.bukkit.plugin.java.JavaPlugin;public class Main extends JavaPlugin {    @Override    public void onEnable() {        loadConfig();        getServer().getPluginManager().registerEvents(new EventsClass(),this);    }    public void loadConfig(){        getConfig().options().copyDefaults(true);        this.saveConfig();    }}事件类.java:    package com.github.noisersup.serverrust.LoginMe;    import org.bukkit.entity.Player;    import org.bukkit.event.EventHandler;    import org.bukkit.event.Listener;    import org.bukkit.event.player.PlayerJoinEvent;    import org.bukkit.event.player.PlayerMoveEvent;    import java.util.UUID;    public class EventsClass implements Listener {    public boolean logged;    @EventHandler    public void onJoin(PlayerJoinEvent e){        Player p = e.getPlayer();        UUID uuid = p.getUniqueId();        logged = false;        if("player."+uuid+".password"!=null){            //login            p.sendMessage("§2Welcome again "+p.getName()+"! Please login with command: §6§n/login <password>");        }else{            //register            p.sendMessage("§2Welcome "+p.getName()+"! Please register with command: + §6§n/register <password> <repeat_password>");        }    }    @EventHandler    public void onMove(PlayerMoveEvent e){        if(!logged){            e.setCancelled(true);        }    }}
查看完整描述

2 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

此代码将清楚地指示编译错误:

private EventsClass plugin = EventsClass.getPlugin(EventsClass.class);
                                         ^^^^^^^^^

因为类中没有getPlugin(Class<?> class)定义EventsClass

EventsClass只有定义onJoin(PlayerJoinEvent e)onMove(PlayerMoveEvent e)方法。

另一方面,Main这里的类JavaPlugin使用以下方法扩展:

public static <T extends JavaPlugin> T getPlugin(Class<T> clazz)

这就是为什么Main.getPlugin(...)可以进行呼叫的原因。


查看完整回答
反对 回复 2021-08-25
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

编译器无法解析该方法,getPlugin(...)因为EventsClass它没有这样的方法。它只有方法onJoin(...)onMove(...)


查看完整回答
反对 回复 2021-08-25
  • 2 回答
  • 0 关注
  • 180 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信