带有2个参数的静音命令(ArrayIndexOutOfBoundsException)

时间:2014-06-26 10:46:04

标签: java bukkit

出于某种原因,我在第41行有一个ArrayIndexOutOfBoundsException。我一直在尝试至少一个小时来弄清楚我的代码有什么问题。我正在尝试创建一个静音命令,所以命令应该是:/ mute [player] [enable / disable]。

你的帮助非常有用。

package me.parat26.cmds;

import me.parat26.admingui.MessageManager;
import me.parat26.admingui.SettingsManager;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class Mute implements CommandExecutor
{
    SettingsManager config = SettingsManager.getInstance();
    MessageManager send = MessageManager.getInstance();

    public static boolean chatDisabled = false;

    @SuppressWarnings("deprecation")
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
    {
        if ( sender.hasPermission((String) config.getConfig().get("permissions.mute")) )
        {
            if (args.length == 0)
            {
                send.message(sender, "Error", "Please provide enough arguments.");
            }

            if (args.length == 1)
            {
                Player offender = Bukkit.getServer().getPlayer(args[0]);
                String s = sender.getName();

                if (offender == null)
                {
                    send.message(sender, "Error", "Player " + ChatColor.YELLOW + args[0] + ChatColor.WHITE + " could not be found.");
                    return true;
                }
                // Line 41
                if (args[0] != null && args[1] != null && offender != null && offender.isOnline())
                {
                    if (args[1].equalsIgnoreCase("enable"))
                    {
                        send.message(sender, "Yes", "Enabled...");
                    }
                    else if (args[1].equalsIgnoreCase("disabled"))
                    {
                        send.message(sender, "Yes", "Disabled...");
                    }
                }
                else
                {
                    send.message(sender, "Error", "Please provide enough arguments.");
                    return true;
                }
            }
        }
        return true;
    }
}

1 个答案:

答案 0 :(得分:1)

你有

if (args.length == 1)
  {
      /* ... */

      if (args[0] != null && args[1] != null &
      // Problem is here ----^

如果args.length1,则您无法访问args[1],因为数组没有args.length == 1。这就是你获得例外的原因。

args[1]测试错误,或者您无需在if块内的任何位置使用{{1}}。