Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем xDark, 1 июл 2016.

Статус темы:
Закрыта.
  1. Автор темы
    xDark

    xDark Активный участник Пользователь

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    Здравствуйте девелоперы! Возникает ошибка "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
    Главный класс:
    Код:
    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;
          }
    }
    
    Заранее спасибо.
     
  2. Хостинг MineCraft
    <
  3. Mr_RoboMan

    Mr_RoboMan Старожил Пользователь

    Баллы:
    123
    1. Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
    2. at ru.xDark.xTagEdit.MAIN.XMAINCLASS.onCommand(XMAINCLASS.java:64)
     
  4. Автор темы
    xDark

    xDark Активный участник Пользователь

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    Логично, только вот не могу понять что, убрал replaceColoredMacros - не помогло, можно по-корректнее?
     
  5. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Почему не используете конструкцию
    switch() {
    case:
    }
    ?
     
  6. Mr_RoboMan

    Mr_RoboMan Старожил Пользователь

    Баллы:
    123
    Потому-что для слабаков!
    У тебя ошибка "Выше предела массива" т.е. скорее всего длина массива - 1 (т.е. макс элемень - 0) а ты пытаешся получить args[1] (второй аргумент (которого нету)).
     
  7. Автор темы
    xDark

    xDark Активный участник Пользователь

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    Проблема решена!
    Буду юзать
     
Статус темы:
Закрыта.

Поделиться этой страницей