ServerHilfe Posted March 20, 2017 Share Posted March 20, 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 to comment Share on other sites More sharing options...
Baustein Posted March 21, 2017 Share Posted March 21, 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 to comment Share on other sites More sharing options...
ServerHilfe Posted April 3, 2017 Author Share Posted April 3, 2017 Was ist die NumberFormatException? Link to comment Share on other sites More sharing options...
Yuki Posted April 4, 2017 Share Posted April 4, 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 to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now