ServerHilfe Geschrieben 20. März 2017 Share Geschrieben 20. März 2017 Also bei beinem Command funktioniert es nicht alles so wie es sollte :/ Wenn ich /flyspeed eingebe kommt immer der fehler: An internal error occurred while attempting to perform this command. Aber wenn ich z.b /flyspeed 10 eingebe funktioniert alle super :/ Mein code: import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; public class flyspeed implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { int i = Integer.parseInt(args[0]); if(command.getName().equalsIgnoreCase("flyspeed")) { if(sender instanceof Player) { Player p =(Player)sender; if(args.length == 1) { if((args[0].equalsIgnoreCase("1"))){ p.setFlySpeed((float) 0.1); return true; } else if(args[0].equalsIgnoreCase("2")) { p.setFlySpeed((float) 0.2); return true; } else if(args[0].equalsIgnoreCase("3")) { p.setFlySpeed((float) 0.3); return true; } else if(args[0].equalsIgnoreCase("4")) { p.setFlySpeed((float) 0.4); return true; } else if(args[0].equalsIgnoreCase("5")) { p.setFlySpeed((float) 0.5); return true; } else if(args[0].equalsIgnoreCase("6")) { p.setFlySpeed((float) 0.6); return true; } else if(args[0].equalsIgnoreCase("7")) { p.setFlySpeed((float) 0.7); return true; } else if(args[0].equalsIgnoreCase("8")) { p.setFlySpeed((float) 0.8); return true; } else if(args[0].equalsIgnoreCase("9")) { p.setFlySpeed((float) 0.9); return true; } else if(args[0].equalsIgnoreCase("10")) { p.setFlySpeed((float) 1); return true; } else if(args[0].equalsIgnoreCase("0")) { p.setFlySpeed((float) 0.0); return true; } else if(args[0].equalsIgnoreCase("reset")) { p.setFlySpeed((float) 0.2); return true; } else if(i<0) { p.sendMessage("§8[§2§l!§8] §2Die angabe §8ist §4zu klein! §8--> §8[§40-10§8]"); } else if(i>10){ p.sendMessage("§8[§2§l!§8] §2Die angabe §8ist §4zu gross! §8--> §8[§40-10§8]"); } else if(i != 0-10) { p.sendMessage("§8[§2§l!§8] Dies ist keine Zahl! §8--> §8[§40-10§8]"); } } else { p.sendMessage("§4verwende /flyspeed [1-10]"); } } } return false; } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Baustein Geschrieben 21. März 2017 Share Geschrieben 21. März 2017 int i = Integer.parseInt(args[0]); Kann nicht funktionieren, wenn es kein args[0] gibt. Das solltest du von daher erst machen, wenn du festgestellt hast, dass args.length == 1 ist. Außerdem solltest du besser die NumberFormatException per try / catch abfangen, das kann sonst zu Problemen führen. Liebe Grüße, Baustein Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
ServerHilfe Geschrieben 3. April 2017 Autor Share Geschrieben 3. April 2017 Was ist die NumberFormatException? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Yuki Geschrieben 4. April 2017 Share Geschrieben 4. April 2017 Hi, dass ist eine Fehlermeldung, welche ausgegeben wird wenn (wie der Name schon sagt) das Format einer Nummer nicht stimmt. In dem Beispiel von Baustein wäre es, wenn die Funktion Integer.parseInt nicht ausgeführt werden kann, weil args[0] keine Zahl enthält. Also würde dass ganze halt z.B. so aussehen: try { int i = Integer.parseInt(args[0]); } catch (NumberFormatException e) { int i = 2; // Dein Standardwert, wenn kein gültiger Wert angegeben wurde, also die Exception auslöste } -Yuki Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden