2017-12-07 3 views
-1

最近、私はbukkitコーディングで問題に直面しています。プラグインを起動し、/ akitz コマンドラベルまたは名前と入力すると、内部エラーが表示されますが、/ akitz {サブコマンド}と入力すると正常に動作します。ここにあるものはすべて基本的にうまく動作しますが、/ akitz < - 私はそれを入力するだけで、エラーがポップアップします!ここでのコードは次のとおりです。サブコマンドBukkitの内部エラー

package me.frostgamersa; 

import org.bukkit.Material; 
import org.bukkit.command.Command; 
import org.bukkit.command.CommandSender; 
import org.bukkit.entity.Player; 
import org.bukkit.inventory.ItemStack; 
import org.bukkit.plugin.java.JavaPlugin; 

public class Main extends JavaPlugin { 
@Override 
public void onEnable() { 

} 

@Override 
public void onDisable() { 

} 

@Override 
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { 
    if (label.equalsIgnoreCase("akitz")) { 
     Player player = (Player) sender; 

     if (args.length == 0 || args.length < 2) { 
      player.sendMessage("§cIncorrect Arguements"); 

      if (args[0].equalsIgnoreCase("legend")) { 
       player.sendMessage("§bYou have been Granted §3Legend §bKit!"); 
       CustomItems.givela(player); 
       CustomItems.givels(player); 
       player.getInventory().addItem(new ItemStack(Material.GOLDEN_APPLE, 64)); 
       return true; 
      } 
      if (args[0].equalsIgnoreCase("god")) { 
       player.sendMessage("§bYou have been Granted §3God §bKit!"); 
       CustomItems.givega(player); 
       CustomItems.givegs(player); 
       player.getInventory().addItem(new ItemStack(Material.GOLDEN_APPLE, 64)); 
       return true; 
      } else { 
       player.sendMessage("§cIncorrect Arguements!"); 
       return true; 
      } 
     } 
+4

エラーは何ですか? –

+0

if文を終了していない 'if(args.length == 0 || args.length <2){' – ItzBenteThePig

+0

argsの長さが** zero **かどうかを最初に確認してから** argsなしの最初の**引数( 'if args [0] .equals ....')です。ですから、コンソールはArrayOfBoundsExceptionを出力します。 'onCommand'メソッドで例外が発生したため、 'Internal error ...'というメッセージが表示されます。 – i0xHeX

答えて

0

このコマンドは、あなたのクラスがCommandExecutorを実装し、あなたのonEnable方法にこれを追加してみましょう。..コマンドを登録します

public void onEnable() { 

     getCommand("akitz").setExecutor(this); 

} 

だけのために、また...

public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { 

    Player p = (Player) sender; 

    if (cmd.getName().equalsIgnoreCase("akitz")) { 

     if (args.length != 1) { 

      p.sendMessage("§cIncorrect argument count!"); 

     } 

     if (args[0].equalsIgnoreCase("legend")) { 

      p.sendMessage("§bYou got a kit §3Legend"); 
      CustomItems.givela(p); 
      CustomItems.givels(p); 
      p.getInventory().addItem(new ItemStack(Material.GOLDEN_APPLE, 64)); 
      return true; 

     } 

     if (args[0].equalsIgnoreCase("god")) { 

      p.sendMessage("§bYou got a kit §3God"); 
      CustomItems.givega(p); 
      CustomItems.givegs(p); 
      p.getInventory().addItem(new ItemStack(Material.GOLDEN_APPLE, 64)); 
      return true; 

     } 

     if (!args[0].equalsIgnoreCase("legend") | !args[0].equalsIgnoreCase("god")) { 

      p.sendMessage("§cIncorrect argument!"); 

     } 

    } 

    return false; 

} 

のようになります方法です確かに

0

は、着信Spoonfeed:

package me.frostgamersa; 

import org.bukkit.Material; 
import org.bukkit.command.Command; 
import org.bukkit.command.CommandSender; 
import org.bukkit.entity.Player; 
import org.bukkit.inventory.ItemStack; 
import org.bukkit.plugin.java.JavaPlugin; 

public class Main extends JavaPlugin { 
@Override 
public void onEnable() { 

} 

@Override 
public void onDisable() { 

} 

@Override 
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { 
    if (label.equalsIgnoreCase("akitz")) { 
     Player player = (Player) sender; 

     if (args.length < 2) { 
      player.sendMessage("§cIncorrect Arguements"); 
     } else { 
      if (args[0].equalsIgnoreCase("legend")) { 
       player.sendMessage("§bYou have been Granted §3Legend §bKit!"); 
       CustomItems.givela(player); 
       CustomItems.givels(player); 
       player.getInventory().addItem(new ItemStack(Material.GOLDEN_APPLE, 64)); 
       return true; 
      } 

      if (args[0].equalsIgnoreCase("god")) { 
       player.sendMessage("§bYou have been Granted §3God §bKit!"); 
       CustomItems.givega(player); 
       CustomItems.givegs(player); 
       player.getInventory().addItem(new ItemStack(Material.GOLDEN_APPLE, 64)); 
       return true; 
      } else { 
       player.sendMessage("§cIncorrect Arguements!"); 
       return true; 
      } 
     } 
    } 
} 

私はまた、これらが必要とされていないとして、あなたが、onEnableとonDisableを削除推薦する、とあなたがそれらに何も持っていないので、それだけでスペースを使用していますそれは必要ではないことを。

また、コンソールがコマンドを実行するときにエラーが発生する可能性があるため、送信者がキャストする前にプレーヤであるかどうかを確認する必要があります。