javapluginlass不';Don’我似乎不在听课上工作

javapluginlass不';Don’我似乎不在听课上工作,java,bukkit,Java,Bukkit,我正试图像平常一样处理事件,但这一个根本不起作用,而且我绝对没有错误。有什么想法吗,伙计们 public class JavaPluginClass extends JavaPlugin{ HashMap<String, Location> games = new HashMap<String, Location>(); HashMap<String, Location> currentLocation = new HashMap<String,

我正试图像平常一样处理事件,但这一个根本不起作用,而且我绝对没有错误。有什么想法吗,伙计们

 public class JavaPluginClass extends JavaPlugin{

 HashMap<String, Location> games = new HashMap<String, Location>();
 HashMap<String, Location> currentLocation = new HashMap<String, Location>();
 ArrayList<String> gamesList = new ArrayList<String>();
 HashMap<String, String> attackersPlayers = new HashMap<String, String>();
 HashMap<String, String> defensePlayers = new HashMap<String, String>();
 HashMap<String, Boolean> playerJoined = new HashMap<String, Boolean>();

 //Teams:
 ScoreboardManager manager = Bukkit.getScoreboardManager();
 Scoreboard board = manager.getNewScoreboard();
 Team attack = board.registerNewTeam("Attacker");
 Team defense = board.registerNewTeam("Defense");

 StringBuilder sb = new StringBuilder();

 public void onEnable(){
        new joinOrNot(this);
  getLogger().info("Final Frontier enabled!");
 }

 public void onDisable(){
  getLogger().info("Final Frontier disabled!");
 }


 public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){

  Player p = (Player) sender;

  attack.setAllowFriendlyFire(false);
  defense.setAllowFriendlyFire(false);

  if (cmd.getName().equalsIgnoreCase("ff")){


    if (args.length == 0){
     //Help page: come back to this
     p.sendMessage("This will display help page");
     return true;
    }


   if (args.length == 1){
    if (args[0].equalsIgnoreCase("create") || args[0].equalsIgnoreCase("join")){
     p.sendMessage(ChatColor.RED + "Invalid usage! Type /ff for a bit o' help!");
     return true;
    }
    if (args[0].equalsIgnoreCase("list")){

     p.sendMessage(ChatColor.YELLOW + "Available games: " + ChatColor.GREEN + sb.toString());
     return true;

    }

    if (args[0].equalsIgnoreCase("attack") && playerJoined.get(p.getName()) == true){
     p.sendMessage(ChatColor.RED + "You are now attacking! Better watch out, eh?");
     attack.addPlayer(p);
     return true;
    }
    else if(args[0].equalsIgnoreCase("defend") && playerJoined.get(p.getName()) == true){
     p.sendMessage(ChatColor.YELLOW + "You are now defending! Whip dem weapons out!");
     defense.addPlayer(p);
     return true;
    }
    else if (args[0].equalsIgnoreCase("attack") || args[0].equalsIgnoreCase("defend") && playerJoined.get(p.getName()) == false){
     p.sendMessage(ChatColor.RED + "You should probably join first! God darn kids these days!");
     return true;
    }

    else if (args[0].equalsIgnoreCase("leave")){
     playerJoined.remove(p.getName());
     playerJoined.put(p.getName(), false);
     return true;
    }

   }

    if (args.length == 2){

     if (args[0].equalsIgnoreCase("create")){
      if(args[1] != null){
       p.sendMessage(ChatColor.GREEN + "You have created game " + args[1]);
       games.put(args[1], p.getLocation());
       sb.append(args[1] + ", ");
       return true;
      }

    }

     if (args[0].equalsIgnoreCase("join")){
      if (args[1] != null && games.containsKey(args[1])){

       playerJoined.remove(p.getName());
       playerJoined.put(p.getName(), true);
       p.teleport(games.get(args[1]));
       p.sendMessage(ChatColor.GREEN + "You have joined the battle of "
       + ChatColor.YELLOW + "Final Frontier! Now choose a god darn team!");
       return true;
      }
      if (!games.containsKey(args[1])){
       p.sendMessage(ChatColor.RED + "Woooah watch it soldier! Don't get cocky! That arena don't darn exist!");
       return true;
      }
     }

   }


  }

  return false;
 }
}

但是,当我尝试执行我正在执行的操作时,它会向我抛出一个错误,即使没有任何错误。

您没有在“joirOrNot”类中初始化字段“getter”

该字段具有空值(因为您没有将其设置为任何值)。加入服务器时,您的错误是NullPointerException,因为您正在从Null字段访问字段或方法:

getter.playerJoined.put(p.getName(), false);
要解决此问题,只需使用以下命令初始化侦听器构造函数中的字段:

this.getter = plugin;
旁注:

  • 您可以将“getter”字段声明为“final”,以便IDE将此类错误通知您
  • 按照Java约定,类名“joinOrNot”应该以大写字母开头
getter.playerJoined.put(p.getName(), false);
this.getter = plugin;