Jump to content

Minecraft: An internal error occurred..


ServerHilfe
 Share

Recommended Posts

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

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

  • 2 weeks later...

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...
B
B