1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

В разработке нужно поправить код

Тема в разделе "Разработка плагинов для новичков", создана пользователем Аминчик, 25 дек 2017.

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

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

    Баллы:
    76
    Имя в Minecraft:
    AmiN4iK_03
    Всем привет, пожалуйста поправьте код если есть ошибки:
    Код:
            if (args[0].equalsIgnoreCase("remove") && (p.hasPermission("donateplus.remove"))) {
                if (args.length < 3) {
                    p.sendMessage("§eИспользуйте - §c/don remove [ник] [причина]");
                } else {
                    String name = args[1];
                    String reason = args[2];
                    Player target = Bukkit.getPlayer(name);
                if (target == null) {
                    p.sendMessage("§eИгрока§c " + name + " §eнет на сервере!");
                    return true;
            }
                    PermissionsEx.getUser(name).remove(); {
                    p.sendMessage("§eВы забрали привилегию у игрока§c " + name);
                    target.sendMessage("§eИгрок§c " + p.getName() + " §eзабрал у Вас привилегию");
                    target.sendMessage("§eПричина:§c " + reason);
                    target.sendTitle("§eИгрок§c " + p.getName(), " §eзабрал у Вас привилегию Причина:§c " + reason);
                    Bukkit.broadcastMessage("§eИгрок§c " + p.getName() + " §eзабрал привилегию у игрока§c" + name + "§eпричина:§c " + reason);
                    return true;
                    }
                }
                return false;
            }
            return false;
        }
    }
    Или есть лишний код.
    Помогите оптимизировать код если это возможно :)
    P.S делаю обнову плагина DonatePlus.
     
  2. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Конечно не уверен, но зачем проверка игрока на онлайн? Если нужно срочно забрать привилегию, а игрок вышел - придется ждать его возвращения(либо адекватно использовать /pex как все нормальные люди).
    Лучше убрать эту часть
    а проверку переместить туда, где у тебя отправляются сообщения с target. (т.е. либо отправлять их, либо просто продолжать код)

    Здесь пробелов не хватает
    Сюда добавить return true;
    Первый return false; можно не писать

    Ну, и для такой скудной вещи писать плагин немного лишнее. Хотя если народ хавает, то какая разница?
     
  3. Автор темы
    Аминчик

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

    Баллы:
    76
    Имя в Minecraft:
    AmiN4iK_03
    Ну, а привилегия то будет сниматься. А мне это не нужно C:
    Код:
            if (args[0].equalsIgnoreCase("remove") && (p.hasPermission("donateplus.remove"))) {
                if (args.length < 3) {
                    p.sendMessage("§eИспользуйте - §c/don remove [ник] [причина]");
                } else {
                    String name = args[1];
                    String reason = args[2];
                    Player target = Bukkit.getPlayer(name);
                    if (target == null) {
                        p.sendMessage("§eИгрока§c " + name + " §eнет на сервере!");
                        return true;
                    }
                    PermissionsEx.getUser(name).remove(); {
                    }
                    p.sendMessage("§eВы забрали привилегию у игрока§c " + name);
                    target.sendMessage("§eИгрок§c " + p.getName() + " §eзабрал у Вас привилегию");
                    target.sendMessage("§eПричина:§c " + reason);
                    target.sendTitle("§eИгрок§c " + p.getName(), " §eзабрал у Вас привилегию Причина:§c " + reason);
                    Bukkit.broadcastMessage("§eИгрок§c " + p.getName() + " §eзабрал привилегию у игрока§c " + name + " §eПричина:§c " + reason);
                    return true;
                }
            }
            return false;
        }
    }
    Всё норм?
     
  4. Автор темы
    Аминчик

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

    Баллы:
    76
    Имя в Minecraft:
    AmiN4iK_03
    И подскажи пожалуйста куда здесь можно перенести проверку на target:
    Код:
            if (args[0].equalsIgnoreCase("set") && (p.hasPermission("donateplus.set"))) {
                if (args.length < 3) {
                    p.sendMessage("§eИспользуйте - §c/don set [ник] [привилегия]");
                } else {
                    String name = args[1];
                    String group = args[2];
                    Player target = Bukkit.getPlayer(name);
                    PermissionUser user = PermissionsEx.getUser(name);
                    String[] groups = user.getGroupNames();
                    for (String playerGroup : groups) {
                        user.removeGroup(playerGroup);
                    }
                    if (target == null) {
                        p.sendMessage("§eИгрока§c " + name + " §eнет на сервере!");
                        return true;
                    }
                    user.addGroup(group);
                    p.sendMessage("§eПривилегия§c " + group + " §eвыдана игроку§c " + name);
                    target.sendMessage("§eИгрок§c " + p.getName() + " §eвыдал Вам привилегию§c " + group);
                    target.sendTitle("§eИгрок§c " + p.getName(), " §eвыдал Вам привилегию§c " + group);
                    Bukkit.broadcastMessage("§eИгрок§c " + p.getName() + " §eвыдал привилегию§c " + group + " §eигроку§c " + name);
                    return true;
                }
            }
     
  5. Energy warrior

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

    Баллы:
    76
    Стоп а это разве не типо этого [​IMG]
    ?
     
  6. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
  7. TheZefirrkka

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

    Баллы:
    76
    Убрать это.
    Эти скобки вообще не нужны, они ничего не делают.
    Это лучше как отдельную проверку сделать, чтобы было удобнее и красивее с сообщениями.
    Заменить на
    if (args.length < 3) {
    p.sendMessage("§eИспользуйте - §c/don set [ник] [привилегия]");
    return true;
    }
    else убрать и тут уже сделать выдачу
    Эти все сообщения сделать через конфиг, чтобы можно было свои вставить сообщения.
     
  8. Автор темы
    Аминчик

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

    Баллы:
    76
    Имя в Minecraft:
    AmiN4iK_03
    Если я это уберу - то сервер не сможет отправить сообщение таргету и выдаст ошибку
     
  9. xDark

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

    Баллы:
    96
    ....
     
  10. Автор темы
    Аминчик

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

    Баллы:
    76
    Имя в Minecraft:
    AmiN4iK_03
    Код:
                    for (String playerGroup : groups) {
                        user.removeGroup(playerGroup);
                    }
    Ты про эти?
     
  11. Автор темы
    Аминчик

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

    Баллы:
    76
    Имя в Minecraft:
    AmiN4iK_03
    ?
     
  12. Автор темы
    Аминчик

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

    Баллы:
    76
    Имя в Minecraft:
    AmiN4iK_03
    Сделал так:
    Код:
            if (args[0].equalsIgnoreCase("set") && (p.hasPermission("donateplus.set"))) {
                if (args.length < 3) {
                    p.sendMessage("§eИспользуйте - §c/don set [ник] [привилегия]");
                } else {
                    String name = args[1];
                    String group = args[2];
                    Player target = Bukkit.getPlayer(name);
                    PermissionUser user = PermissionsEx.getUser(name);
                    String[] groups = user.getGroupNames();
                    for (String playerGroup : groups) {
                        if (target == null) {
                            p.sendMessage("§eИгрока§c " + name + " §eнет на сервере!");
                            return true;
                        }
                        user.removeGroup(playerGroup);
                    }
                    user.addGroup(group);
                    p.sendMessage("§eПривилегия§c " + group + " §eвыдана игроку§c " + name);
                    target.sendMessage("§eИгрок§c " + p.getName() + " §eвыдал Вам привилегию§c " + group);
                    target.sendTitle("§eИгрок§c " + p.getName(), " §eвыдал Вам привилегию§c " + group);
                    Bukkit.broadcastMessage("§eИгрок§c " + p.getName() + " §eвыдал привилегию§c " + group + " §eигроку§c " + name);
                    return true;
                }
            }
            if (args[0].equalsIgnoreCase("remove") && (p.hasPermission("donateplus.remove"))) {
                if (args.length < 3) {
                    p.sendMessage("§eИспользуйте - §c/don remove [ник] [причина]");
                } else {
                    String name = args[1];
                    String reason = args[2];
                    Player target = Bukkit.getPlayer(name);
                    if (target == null) {
                        p.sendMessage("§eИгрока§c " + name + " §eнет на сервере!");
                        return true;
                    }
                    PermissionsEx.getUser(name).remove(); {
                    }
                    p.sendMessage("§eВы забрали привилегию у игрока§c " + name);
                    target.sendMessage("§eИгрок§c " + p.getName() + " §eзабрал у Вас привилегию");
                    target.sendMessage("§eПричина:§c " + reason);
                    target.sendTitle("§eИгрок§c " + p.getName(), " §eзабрал у Вас привилегию Причина:§c " + reason);
                    Bukkit.broadcastMessage("§eИгрок§c " + p.getName() + " §eзабрал привилегию у игрока§c " + name + " §eПричина:§c " + reason);
                    return true;
                }
            }
            return false;
        }
    }
    Всё работает. Но может есть что-то лишнее?
    И почему привилегия снимается только после перезахода игрока?
     
  13. TheZefirrkka

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

    Баллы:
    76
    Вот эти
     
  14. TheZefirrkka

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

    Баллы:
    76
    if(target != null) { target.sendMsg... }
     
  15. Автор темы
    Аминчик

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

    Баллы:
    76
    Имя в Minecraft:
    AmiN4iK_03
    Спасибо, сделал обнову :D
     
Статус темы:
Закрыта.

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