Ich habe versucht, nicht auf das Posting in den Foren zurückgreifen, aber alles, was ich getan habe, wird dies nicht funktionieren. Was ich versuche zu tun ist, wenn eine ArrayList keinen Spielernamen enthält, dann fügt sie sie der ArrayList hinzu, aber sie überspringt das und entfernt sie nur aus der Liste, zu der sie nie hinzugefügt wurden. Das ultimative Ziel aus diesem Plugin ist, wenn sie im Gott-Modus sind, können sie nicht verletzt werden. Befehlsklasse:If-Anweisung wird nicht durch meine Array-Liste überprüfen
public static List<String> playerList = new ArrayList<String>();
@Override
public boolean onCommand(CommandSender sender, Command cmd, String str, String[] args) {
Player player = (Player) sender;
String p = player.getName();
List<String> isGod = new ArrayList<String>();
if (cmd.getName().equalsIgnoreCase("god") && sender instanceof Player) {
if (!isGod.contains(p)) {
isGod.add(p);
playerList.add(p);
player.sendMessage(ChatColor.GREEN + "Godmode is enabled");
return true;
} else {
isGod.remove(p);
playerList.remove(p);
player.sendMessage(ChatColor.GREEN + "Godmode is disabled");
return true;
}
}
return true;
}
}
Listener Klasse:
@EventHandler
public void isDamaged(EntityDamageEvent e) {
String player = e.getEntity().getName();
if (playerList.contains(player)) {
e.setCancelled(true);
}
}
}
Die Überprüfung auf 'isGod' Einträge kann in Ihrem Fall niemals wahr sein. Sie erstellen bei jedem Aufruf der Methode eine neue Liste, sodass diese immer leer ist. Probiere stattdessen 'playerList.contains (p)'. Warum hast du überhaupt die isGod-Liste? Benutzt du es auch woanders? – dly