[Решено] Ащипка при выполнении команды

  • Автор темы Автор темы xDark
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

xDark

Активный участник
Пользователь
Баллы
96
del
 
Последнее редактирование:
  1. Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
  2. at ru.xDark.xTagEdit.MAIN.XMAINCLASS.onCommand(XMAINCLASS.java:64)
 
Здравствуйте девелоперы! Возникает ошибка "An internal error occurred while attempting to perform this command".
Вот логи:
Код:
2016-07-01 19:21:36 [INFO] xDark issued server command: /te set
2016-07-01 19:21:36 [SEVERE] null
org.bukkit.command.CommandException: Unhandled exception executing command 'te' in plugin xTagEdit v1.0
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:189)
    at org.bukkit.craftbukkit.v1_5_R3.CraftServer.dispatchCommand(CraftServer.java:523)
    at net.minecraft.server.v1_5_R3.PlayerConnection.handleCommand(PlayerConnection.java:966)
    at net.minecraft.server.v1_5_R3.PlayerConnection.chat(PlayerConnection.java:884)
    at net.minecraft.server.v1_5_R3.PlayerConnection.a(PlayerConnection.java:841)
    at net.minecraft.server.v1_5_R3.Packet3Chat.handle(Packet3Chat.java:44)
    at net.minecraft.server.v1_5_R3.NetworkManager.b(NetworkManager.java:292)
    at net.minecraft.server.v1_5_R3.PlayerConnection.d(PlayerConnection.java:110)
    at net.minecraft.server.v1_5_R3.ServerConnection.b(SourceFile:35)
    at net.minecraft.server.v1_5_R3.DedicatedServerConnection.b(SourceFile:30)
    at net.minecraft.server.v1_5_R3.MinecraftServer.r(MinecraftServer.java:581)
    at net.minecraft.server.v1_5_R3.DedicatedServer.r(DedicatedServer.java:226)
    at net.minecraft.server.v1_5_R3.MinecraftServer.q(MinecraftServer.java:477)
    at net.minecraft.server.v1_5_R3.MinecraftServer.run(MinecraftServer.java:410)
    at net.minecraft.server.v1_5_R3.ThreadServerApplication.run(SourceFile:573)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
    at ru.xDark.xTagEdit.MAIN.XMAINCLASS.onCommand(XMAINCLASS.java:64)
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
    ... 15 more
Главный класс:
CSS:
package ru.xDark.xTagEdit.MAIN;

import java.io.PrintStream;

import org.bukkit.entity.Player;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.FileConfigurationOptions;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;

public class XMAINCLASS extends JavaPlugin {
    PrintStream sys = System.out;
    public void onEnable() {
        FileConfiguration cfg = getConfig();
        FileConfigurationOptions cfgOptions = cfg.options();
        cfgOptions.copyDefaults(true);
        cfgOptions.copyHeader(true);
        saveConfig();
        sys.println("[xTagEdit] Plugin enabled!");
    }
    public void onDisable() {
        sys.println("[xTagEdit] Plugin disabled!");
    }
    public boolean onCommand(CommandSender s, Command cmd, String label, String[] args) {
        Player sp = (Player)s;
        String command = ChatColor.GOLD + "[" + ChatColor.DARK_GREEN + "xTagEdit" + ChatColor.GOLD + "] ";
        if ((cmd.getName().equalsIgnoreCase("te")))
            if (args.length == 0)
                if (s.hasPermission("xTagEdit.help")) {
                    s.sendMessage("");
                    s.sendMessage(ChatColor.GREEN + "/te set [префикс] - " + ChatColor.YELLOW + "Установить префикс");
                    s.sendMessage(ChatColor.GREEN + "/te set [игрок] [префикс] - " + ChatColor.YELLOW + "Установить префикс другому игроку");
                    s.sendMessage(ChatColor.GREEN + "/te reset - " + ChatColor.YELLOW + "Сбросить префикс");
                    s.sendMessage(ChatColor.GREEN + "/te reset [игрок] - " + ChatColor.YELLOW + "Сбросить префикс другому игроку");
                }
        if ((cmd.getName().equalsIgnoreCase("te")))
            if (args.length == 1)
                if (args[0].equalsIgnoreCase("set"))
                    if (s.hasPermission("xTagEdit.set")) {
                        s.sendMessage(command + ChatColor.RED + "Слишком мало аргументов!");
                        s.sendMessage(command + ChatColor.GOLD + "/te set [префикс]");
                    }
        if ((cmd.getName().equalsIgnoreCase("te")))
            if (args.length >= 2)
                if (args[0].equalsIgnoreCase("set"))
                    if (s.hasPermission("xTagEdit.set")) {
                        StringBuilder prefix = new StringBuilder();
                        if (args.length > 0)
                        {
                            prefix.append(args[1]);
                          for (int i = 2; i < args.length; i++)
                          {
                              prefix.append(" ");
                              prefix.append(args[i]);
                          }
                            sp.setPlayerListName(ChatColor.translateAlternateColorCodes('&', prefix + s.getName()));
                            s.sendMessage(command + ChatColor.GOLD + "Установлен префикс: " + prefix);
                        }
                    }
        Player t = Bukkit.getPlayer(args[1]);
        if ((cmd.getName().equalsIgnoreCase("te")))
            if (args.length >= 3)
                if (args[0].equalsIgnoreCase("set"))
                    if (args[1].equals(t))
                        if (s.hasPermission("xTagEdit.set.others")) {
                        if (t.isOnline()) {
                            StringBuilder prefix = new StringBuilder();
                            if (args.length > 0)
                            {
                                prefix.append(args[2]);
                              for (int i = 3; i < args.length; i++)
                              {
                                  prefix.append(" ");
                                  prefix.append(args[i]);
                              }
                            t.setPlayerListName(replaceColorMacros(prefix + s.getName()));
                            s.sendMessage(command + ChatColor.GOLD + " Установили префикс " + prefix + " для игрока " + t.getName());
                            }
                        }
                    }
        if ((cmd.getName().equalsIgnoreCase("te")))
            if (args.length >= 3)
                if (args[0].equalsIgnoreCase("set"))
                    if (args[1].equals(t))
                        if (s.hasPermission("xTagEdit.set.others")) {
                        if (!t.isOnline()) {
                            s.sendMessage(command + ChatColor.RED + "Игрок оффлайн!");
                        }
                    }
        if ((cmd.getName().equalsIgnoreCase("te")))
            if (args.length == 1)
                if (args[0].equalsIgnoreCase("reset"))
                    if (s.hasPermission("xTagEdit.reset")) {
                        sp.setPlayerListName(ChatColor.translateAlternateColorCodes('&', this.getConfig().getString("defaultprefix")));
                        s.sendMessage(command + ChatColor.GOLD + "Установлен стандартный префикс!");
                    }
        if ((cmd.getName().equalsIgnoreCase("te")))
            if (args.length == 2)
                if (args[0].equalsIgnoreCase("reset"))
                    if (args[1].equals(t))
                        if (s.hasPermission("xTagEdit.reset.others")) {
                            t.setPlayerListName(ChatColor.translateAlternateColorCodes('&', this.getConfig().getString("defaultprefix")));
                        }
        return true;
    }
      public String replaceColorMacros(String str)
      {
        str = str.replace("&c", ChatColor.RED.toString());
        str = str.replace("&4", ChatColor.DARK_RED.toString());
        str = str.replace("&e", ChatColor.YELLOW.toString());
        str = str.replace("&6", ChatColor.GOLD.toString());
        str = str.replace("&a", ChatColor.GREEN.toString());
        str = str.replace("&2", ChatColor.DARK_GREEN.toString());
        str = str.replace("&b", ChatColor.AQUA.toString());
        str = str.replace("&3", ChatColor.DARK_AQUA.toString());
        str = str.replace("&9", ChatColor.BLUE.toString());
        str = str.replace("&1", ChatColor.DARK_BLUE.toString());
        str = str.replace("&d", ChatColor.LIGHT_PURPLE.toString());
        str = str.replace("&5", ChatColor.DARK_PURPLE.toString());
        str = str.replace("&0", ChatColor.BLACK.toString());
        str = str.replace("&8", ChatColor.DARK_GRAY.toString());
        str = str.replace("&7", ChatColor.GRAY.toString());
        str = str.replace("&f", ChatColor.WHITE.toString());
        str = str.replace("&0", ChatColor.BLACK.toString());
        str = str.replace("&d", ChatColor.LIGHT_PURPLE.toString());
        return str;
      }
}
Заранее спасибо.
Почему не используете конструкцию
switch() {
case:
}
?
 
Почему не используете конструкцию
switch() {
case:
}
?
Потому-что для слабаков!
Логично, только вот не могу понять что, убрал replaceColoredMacros - не помогло, можно по-корректнее?
У тебя ошибка "Выше предела массива" т.е. скорее всего длина массива - 1 (т.е. макс элемень - 0) а ты пытаешся получить args[1] (второй аргумент (которого нету)).
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх