Ich mache einen Minecraft Position command, doch es kommen fehler. Könnt ihr mir helfen?


21.08.2021, 13:30
public class pos implements CommandExecutor {
    PositionManager manager;
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(sender instanceof Player) {
            Player p = (Player) sender;
            PositionManager manager = new PositionManager(p.getUniqueId());
            if(args.length == 1 && !args[0].equalsIgnoreCase("add") && !args[0].equalsIgnoreCase("delete")) {
                if(manager.exsist(args[1])) {
                    message(p, args, manager.getPosition(args[1]));
                } else {
                    p.sendMessage("§cPosition §6" + args[1] + "does not exsist!");
                }
            } else if(args.length == 0 && !args[0].equalsIgnoreCase("add") && !args[0].equalsIgnoreCase("delete")) {
                String out = "";
                for(String s : manager.getPositions()) {
                    out = "§e" + s + "§7, " + out;
                }
                out = out.trim();
                out= out.substring(0, out.length() -1);
                
                p.sendMessage("§aPositions" + "\n" + out);
                
                if(manager.getPositions().size() == 0) {
                    p.sendMessage("§cYou don't have positions. Use§6 /pos set <name>§c to create positions!");
                }
            } else {
                p.sendMessage("§cPlease use §6/pos [add | delete] <name>§c or §6/pos§ [name]!");
            }
            if(args.length == 1 && args[0].equalsIgnoreCase("add")) {
                message(p, args, p.getLocation());
                manager.addPosition(p.getLocation(), args[1]);
            } else {
                p.sendMessage("§cPlease use §6/pos [set | delete] <name>§c or §6/pos§!");
            }
            if(args.length == 1 && args[0].equalsIgnoreCase("delete")) {
                if(manager.exsist(args[1])) {
                    p.sendMessage("§cDeleted §6" + args[1] + "Position!");
                } else {
                    p.sendMessage("§cPosition §6" + args[1] + "does not exsist!");
                }
            } else {
                p.sendMessage("§cPlease use §6/pos [set | delete] <name>§c or §6/pos§!");
            }
        } else {
            sender.sendMessage("§cOnly a player can perform this command!");
        }
        return false;
    }

Ohne deinen Code und die entsprechende(n) Fehlermeldung(en) können wir dir hier nicht weiterhelfen. Bitte Frage damit ergänzen.

wartet kurz



Wo ist denn der Code?

ihr müsst eine Antwort geben damit ich auch bilder schicken kann, oder insg. mehr text


Bitte noch die Fehlermeldungen posten.

es gibt bei zeile 82,54,34,29 fehler

Ich muss Wissen WELCHE Fehler. Kannst alles hier reinpasten: https://hastebin.com/

https://hastebin.com/cejiranalo.properties


1 Antwort

Auf Zeile 29 greifst du auf einen Index des arg Arrays zu, welcher nicht existiert, deshalb die ArrayIndexOutOfBoundsException. Vorher prüfst du, ob der Array eine Länge von 1 hat. Wenn ein Array aber nur 1 lang ist, hat er nur den Index 0. Ein Index 1 existiert dann nicht, also kannst du auch nicht darauf zugreifen.

Auch auf Zeile 34 prüfst du die Länge. Diesmal auf die Länge 0. Somit ist gar nichts im Array vorhanden, der Index 0 wird also auch nicht existieren. Weite in deinem if-Statement greifst du dann eben auf Index 0 zu, da ist aber nix drin, darum auch dort die Exception.

Ein wenig Feedback noch zu deinem Code:

  • Deine pos-Klasse sollte mit Grossbuchstaben beginnen und mit CamelCase fortgeführt werden.
  • Dein Commands-Paket sollte hingegen mit Kleinbuchstaben beginnen.
  • Die einzelnen Funktionen deines Befehls (add, delete, etc.) könntest du in separate Methoden auslagern, sodass die onCommand Methode übersichtlicher wird.

Vielleicht würde ich an deiner Stelle auch nochmal ein paar Java Grundlagen repetieren, bevor du dich an Minecraft Plugins machst. Dies setzt ein klares Verständnis von Java voraus. Diesen Fehler hättest du somit also auch alleine ausfindig machen sollen.

Bevor du weitere Fragen stellst, lies dir doch bitte noch das hier durch und auch die weiter unten verlinkten Seiten: https://www.propublica.org/nerds/how-to-ask-programming-questions

Ohne eine detaillierte Fehlerbeschreibung, deinen gesamten Code, etc. kann dir niemand helfen. All das gehört in eine ordentliche Frage.

Woher ich das weiß:eigene Erfahrung – Spiele Minecraft Java seit 2014