2016-08-12 13 views
-1

私のサーバーのプラグインの開発を開始しました。私はmain classコマンドとplehコマンドを作ったが、gamemodeコマンドではじめるとすべてが停止した。つまり、エラーなしで動作しますが、出力はありません。それは簡単な間違いかもしれないが、私はそれを見つけることができない。BUKKIT - MINECRAFTゲームモードの設定

import org.bukkit.Material; 
import org.bukkit.command.Command; 
import org.bukkit.command.CommandExecutor; 
import org.bukkit.command.CommandSender; 
import org.bukkit.entity.Player; 
import org.bukkit.event.EventHandler; 
import org.bukkit.event.Listener; 
import org.bukkit.event.inventory.InventoryClickEvent; 
import org.bukkit.inventory.Inventory; 
import org.bukkit.inventory.ItemStack; 
import org.bukkit.inventory.meta.ItemMeta; 
import org.bukkit.plugin.java.JavaPlugin; 

public class Gamemode implements CommandExecutor { 

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

     if (!(sender instanceof Player)) { 
      sender.sendMessage(ChatColor.RED + "Haha nice try not happening today."); 
      return true; 
     } 
     Player p = (Player) sender; 
     if (cmd.getName().equalsIgnoreCase("gm")) { 
      if ((!p.hasPermission("sutils.*")) && 
        (!p.hasPermission("sutils.gamemode"))) { 
       p.sendMessage(ChatColor.RED + "Sorry no permission."); 
       return true; 
      } 
      if (args.equals("0")) { 
       p.setGameMode(GameMode.SURVIVAL); 
       p.sendMessage(ChatColor.RED + "Gamemode set to Survival"); 
      } 

      if (args.equals("1")) { 
       p.setGameMode(GameMode.CREATIVE); 
       p.sendMessage(ChatColor.RED + "Gamemode set to Creative"); 
      } 

      if (args.equals("2")) { 
       p.setGameMode(GameMode.ADVENTURE); 
       p.sendMessage(ChatColor.RED + "Gamemode set to Adventure"); 
      } 

      if (args.equals("3")) { 
       p.setGameMode(GameMode.SPECTATOR); 
       p.sendMessage(ChatColor.RED + "Gamemode set to Spectator"); 
      } 
      return true; 

     } 
     return true; 
    } 

} 

実際、起こる唯一の事は、私は、コンソールにコマンドを入力すると、それは私に私ではないプレーヤーのMSGを送信しますが、プレイヤーとしてハズレが動作しないです。

は、ここに私のコードです。

答えて

0

ここにある状況は次のとおりです。 'args'は単一の文字列ではなく、文字列の配列です。 それは、文字列の配列が文字列と等しいかどうかをチェックすることはできません。

それでは、あなたがしなければならないです。

  • チェック引数場合引数は
  • チェックnullでない場合は、[0] .equals( "0")場合、または引数[1] .equals(」 1 ")...

args [0]を使用して、コマンドの位置0の引数にアクセスしようとします。このような何か:

/GM GMは、コマンドのcommandlabel

  • 1は、コマンドの引数に0そのために

  • である1

    • 、私たちにできること以下:

      if (args == null) { 
          p.sendMessage(ChatColor.RED + "You must use an arg!"); 
          return false; 
      } 
      
      if (args[0].equals("0") { 
          p.setGameMode(GameMode.SURVIVAL); 
          p.sendMessage(ChatColor.RED + "Gamemode set to survival"); 
          return true; 
      } else if (args[0].equals("1") { 
          //Setgamemode to creative 
          //...... 
      } 
      

      それはトリックを行う必要があります!

    +1

    あなたはそこにタイプミスがありました。私はそれを固定しました。私はあなたの記事に完全に同意しますが、私はこの場合には私の代わりに使用スイッチを追加したいと思います。あなたのJavaのバージョンによっては、args [0]を整数に変換する必要があります。なぜそのクリーナーイモ –

    関連する問題