Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Добавление игрока в группу permissions

Статус
Закрыто для дальнейших ответов.

dnebik

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
dnebik
Возникла такая проблема - когда я создаю комманду на смену группы с Re на Ya и наоборот, то если это происходит в отношении sender'a то все идет гладко, но если я хочу сменить группу другого игрока, то выдает гигантский лог.

Код:
@Override
   public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
   
    ...

        if (cmd.getName().equalsIgnoreCase("y") && sender.isOp()) {
            if(args.length == 0){
                Player p = (Player) sender;
                PermissionUser user = PermissionsEx.getUser(p);
                if(user.inGroup("Re")){
                    user.removeGroup("Re");
                    user.addGroup("Ya");
                }else{
                    user.addGroup("Ya");
                }
                sender.sendMessage("Команда изменена на" + ChatColor.YELLOW + " YELLOW");
                return true;
                }else{
                    if(args.length == 1){
                        Player p = Bukkit.getPlayer(args[1]);
                        PermissionUser user = PermissionsEx.getUser(p);
                        if(user.inGroup("Re")){
                            user.removeGroup("Re");
                            user.addGroup("Ya");
                        }else{
                            user.addGroup("Ya");
                        }
                        sender.sendMessage("Команда игрока" + ChatColor.BLUE + args[1] + "изменена на" + ChatColor.YELLOW + " YELLOW");
                        return true;
                }else{
                    sender.sendMessage("Слишком много аргументов");
                    return true;
                }
            }
        }

в чем моя ошибка?
 
Возникла такая проблема - когда я создаю комманду на смену группы с Re на Ya и наоборот, то если это происходит в отношении sender'a то все идет гладко, но если я хочу сменить группу другого игрока, то выдает гигантский лог.

Код:
@Override
   public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
  
    ...

        if (cmd.getName().equalsIgnoreCase("y") && sender.isOp()) {
            if(args.length == 0){
                Player p = (Player) sender;
                PermissionUser user = PermissionsEx.getUser(p);
                if(user.inGroup("Re")){
                    user.removeGroup("Re");
                    user.addGroup("Ya");
                }else{
                    user.addGroup("Ya");
                }
                sender.sendMessage("Команда изменена на" + ChatColor.YELLOW + " YELLOW");
                return true;
                }else{
                    if(args.length == 1){
                        Player p = Bukkit.getPlayer(args[1]);
                        PermissionUser user = PermissionsEx.getUser(p);
                        if(user.inGroup("Re")){
                            user.removeGroup("Re");
                            user.addGroup("Ya");
                        }else{
                            user.addGroup("Ya");
                        }
                        sender.sendMessage("Команда игрока" + ChatColor.BLUE + args[1] + "изменена на" + ChatColor.YELLOW + " YELLOW");
                        return true;
                }else{
                    sender.sendMessage("Слишком много аргументов");
                    return true;
                }
            }
        }

в чем моя ошибка?
Что пишет в лог?
 
Код:
20.04 01:28:13 [Server] INFO ... 13 more
20.04 01:28:13 [Server] INFO at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[craftbukkit-1.7.2-R0.3.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
20.04 01:28:13 [Server] INFO at RPG.MainClass.onCommand(MainClass.java:86) ~[?:?]
20.04 01:28:13 [Server] INFO Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
20.04 01:28:13 [Server] INFO at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [craftbukkit-1.7.2-R0.3.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
20.04 01:28:13 [Server] INFO at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:457) [craftbukkit-1.7.2-R0.3.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
20.04 01:28:13 [Server] INFO at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:545) [craftbukkit-1.7.2-R0.3.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
20.04 01:28:13 [Server] INFO at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:250) [craftbukkit-1.7.2-R0.3.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
20.04 01:28:13 [Server] INFO at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:655) [craftbukkit-1.7.2-R0.3.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
20.04 01:28:13 [Server] INFO at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [craftbukkit-1.7.2-R0.3.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
20.04 01:28:13 [Server] INFO at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:146) [craftbukkit-1.7.2-R0.3.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
20.04 01:28:13 [Server] INFO at net.minecraft.server.v1_7_R1.PacketPlayInChat.handle(PacketPlayInChat.java:47) [craftbukkit-1.7.2-R0.3.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
20.04 01:28:13 [Server] INFO at net.minecraft.server.v1_7_R1.PacketPlayInChat.a(PacketPlayInChat.java:28) [craftbukkit-1.7.2-R0.3.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
20.04 01:28:13 [Server] INFO at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java:814) [craftbukkit-1.7.2-R0.3.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
20.04 01:28:13 [Server] INFO at net.minecraft.server.v1_7_R1.PlayerConnection.handleCommand(PlayerConnection.java:952) [craftbukkit-1.7.2-R0.3.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
20.04 01:28:13 [Server] INFO at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCommand(CraftServer.java:683) ~[craftbukkit-1.7.2-R0.3.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
20.04 01:28:13 [Server] INFO at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:175) ~[craftbukkit-1.7.2-R0.3.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
20.04 01:28:13 [Server] INFO at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[craftbukkit-1.7.2-R0.3.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
20.04 01:28:13 [Server] INFO org.bukkit.command.CommandException: Unhandled exception executing command 'y' in plugin RPGCommands v1
20.04 01:28:13 [Server] ERROR null
 
Первый Ваш косяк:
Java:
Player p = (Player) sender;
Если выполните команду из консоли или ещё чего-нибудь - получите ClassCastException. По крайней мере, поддержка вызова из консоли быть должна.

Java:
            if(args.length == 1){
                        Player p = Bukkit.getPlayer(args[1]);
С какого индекса начинается нумерация в массиве? :)
 
С какого индекса начинается нумерация в массиве? :)
с нуля, но когда ноль то группа меняется у отправителя
Первый Ваш косяк:
Java:
Player p = (Player) sender;
Если выполните команду из консоли или ещё чего-нибудь - получите ClassCastException. По крайней мере, поддержка вызова из консоли быть должна.
Этот момент я позже исправлю ))
 
Тогда отправляйся учить основы Java.
хотя бы пояснили ошибку, что ли
one_diamentional-array.gif


гхм... если не с нуля то с чего
 
хотя бы пояснили ошибку, что ли
one_diamentional-array.gif


гхм... если не с нуля то с чего
С нуля. length -- количество элементов. Почему при длине в 1 значение Вы берёте в торой элемент с индексом 1, а не первый элемент с индексом 0?
args[args.length>1?1:0]
 
С нуля. length -- количество элементов. Почему при длине в 1 значение Вы берёте в торой элемент с индексом 1, а не первый элемент с индексом 0?
args[args.length>1?1:0]

то есть что то типо этого
Код:
            if(args.length == 1){
                        Player p = Bukkit.getPlayer(args[0]);

Все работает! спасибо за помощь
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх