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;