ServerHilfe Geschrieben 20. März 2017 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; } }
Baustein Geschrieben 21. März 2017 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
ServerHilfe Geschrieben 3. April 2017 Autor Geschrieben 3. April 2017 Was ist die NumberFormatException?
Yuki Geschrieben 4. April 2017 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
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