2016-08-12 67 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 –