出于某种原因,我在第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;
}
}
答案 0 :(得分:1)
你有
if (args.length == 1)
{
/* ... */
if (args[0] != null && args[1] != null &
// Problem is here ----^
如果args.length
为1
,则您无法访问args[1]
,因为数组没有args.length == 1
。这就是你获得例外的原因。
args[1]
测试错误,或者您无需在if
块内的任何位置使用{{1}}。