BUKKIT - MINECRAFT设置游戏模式问题
问题描述:
我开始为我的服务器开发插件。我做了主要类和命令,但是当我开始使用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;
}
}
其实,出现这种情况的唯一的事情是,当我在控制台输入命令时,它给我发我不是一个球员味精但作为球员都能跟得上不起作用。
答
您在这里遇到的情况如下: '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
//......
}
这应该做的伎俩!
你在那里有一个错字,我修好了它。我完全同意你的帖子,但是我想补充一点,在这种情况下,我会使用开关代替。根据您的Java版本,您需要将args [0]转换为整数。之所以只是因为它更清洁imo –