2016-08-12 40 views
-1

我開始爲我的服務器開發插件。我做了主要類和命令,但是當我開始使用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; 
    } 

} 

其實,出現這種情況的唯一的事情是,當我在控制檯輸入命令時,它給我發我不是一個球員味精但作爲球員都能跟得上不起作用。

回答

0

您在這裏遇到的情況如下: 'args'不是單個字符串,而是一串字符串。 這就是說,你不能檢查一個字符串數組是否等於一個字符串。

所以,你必須做的是:

  • 檢查參數表是不是空
  • 檢查ARGS [0] .equals( 「0」),或者如果ARGS [1] .equals(」 1「)...

使用args [0],我們嘗試訪問命令的位置0處的參數。事情是這樣的:

/克1

  • GM爲你的命令的commandlabel

  • 1是你的命令

對於的參數0,我們可以做如下:

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]轉換爲整數。之所以只是因爲它更清潔imo –