• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

NullPointerException bei OfflinePlayer

Nevsix

Minecrafter
Registriert
25 März 2012
Beiträge
11
Alter
30
Diamanten
315
Minecraft
Derakar
Heyho,
ich habe da mal eine Frage und zwar Warum bekomme ich immer einen Internal Error (NullPointerException) wenn ich einen Befehl habe und einen OfflinePlayer angebe. Sprich meine Befehl ist jetzt /tpa <Spieler>. Wenn ich jetzt /tpa Derakar eingebe (Ich selbst) funktioniert es und wenn ich dann /tpa ABCD eingebe bekomme ich einen Error und nicht die Message das der Spieler nicht Online ist.

EDIT: Und dann möchte ich noch, dass man /tpa annehmen und /tpa ablehnen machen kann und das Funktioniert ebenfals nicht (Test unten im Code)

Hier mein Code:
Code:
public class COMMAND_TPA implements CommandExecutor{
  
    private Plugin plugin;
  
    public COMMAND_TPA(Plugin plugin) {
        this.plugin = plugin;
    }

    HashMap<Player, Player> teleport = new HashMap<Player, Player>();
  
    @Override
    public boolean onCommand(CommandSender s, Command cmd, String label, String[] args) {
        Player p = (Player)s;
        if(cmd.getName().equalsIgnoreCase("tpa")){
            if(p instanceof Player){
                if(args.length == 0){
                    p.sendMessage("§cDu musst einen Spieler eingeben. §6/tpa <Spieler>");
                    return true;
                } else if(args.length == 1){
                    Player op = Bukkit.getPlayer(args[0]);
                    if(op.isOnline()){
                        if(!teleport.containsValue(p)){
                            teleport.put(op, p);
                            p.sendMessage("§7Die Anfrage wurde versendet.");
                            op.sendMessage("§6" + p.getName() + "§7 hat dir eine Teleport Anfrage gesendet.");
                            op.sendMessage("§7Annehmen: §6/tpa annehmen §7| Ablehnen: §6/tpa ablehnen");
                          
                            Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
                              
                                @Override
                                public void run() {
                                    if(teleport.containsValue(p)){
                                        teleport.remove(op);
                                        p.sendMessage("§6" + op.getName() + "§7 hat deine Anfrage ignoriert.");
                                        op.sendMessage("§7Die Anfrage von §6" + p.getName() + "§7 ist abgelaufen.");
                                    }
                                  
                                }
                            }, 20*30);
                        } else {
                            p.sendMessage("§cDu hast bereits eine offene Anfrage.");
                        }
                    } else {
                        p.sendMessage("§cDer Spieler ist nicht Online.");
                    }
                  
                    if(args[0].equalsIgnoreCase("annehmen")){
                        p.sendMessage("Test");
                    }
                }
            } else {
                ConsoleCommandSender cs = (ConsoleCommandSender)s;
                cs.sendMessage("§cDieser Befehl kann nur von Spielern ausgeführt werden.");
            }
            return true;
        }
      
        return false;
    }

}
 

Nevsix

Minecrafter
Registriert
25 März 2012
Beiträge
11
Alter
30
Diamanten
315
Minecraft
Derakar
Jaa das ist mir ja schon bewusst, dass der "dumme" PC nur den Code liest von oben nach unten (ggf. unterbrochen wird von return oder continue) deswegen frage ich ja welche Möglichkeit besteht, damit man das umgehen kann.
Und ich möchte auch keine Fertigen Code sondern eine Hilfestellung wie man das machen kann. (weil meine Lehrerin mir mal gesagt hat, dass es mehrere gibt ein Programm zu schreiben)
 
Oben