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

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

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

Аминчик

Активный участник
Пользователь
Баллы
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.
 
Конечно не уверен, но зачем проверка игрока на онлайн? Если нужно срочно забрать привилегию, а игрок вышел - придется ждать его возвращения(либо адекватно использовать /pex как все нормальные люди).
Лучше убрать эту часть
Код:
if (target == null) { p.sendMessage("§eИгрока§c " + name + " §eнет на сервере!"); return true; }
а проверку переместить туда, где у тебя отправляются сообщения с target. (т.е. либо отправлять их, либо просто продолжать код)

Здесь пробелов не хватает
Код:
у игрока§c" + name + "§eпричина

Сюда добавить return true;
p.sendMessage("§eИспользуйте - §c/don remove [ник] [причина]");

Первый return false; можно не писать

Ну, и для такой скудной вещи писать плагин немного лишнее. Хотя если народ хавает, то какая разница?
 
а проверку переместить туда, где у тебя отправляются сообщения с target. (т.е. либо отправлять их, либо просто продолжать код)
Ну, а привилегия то будет сниматься. А мне это не нужно 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;
    }
}
Всё норм?
 
И подскажи пожалуйста куда здесь можно перенести проверку на 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;
            }
        }
 
target.sendTitle("§eИгрок§c " + p.getName(), " §eзабрал у Вас привилегию Причина:§c " + reason);
Стоп а это разве не типо этого
2017122015_5516342_28727234.png

?
 
if (target == null) { p.sendMessage("§eИгрока§c " + name + " §eнет на сервере!"); return true; }
Убрать это.
Эти скобки вообще не нужны, они ничего не делают.
&& (p.hasPermission("donateplus.remove"))
Это лучше как отдельную проверку сделать, чтобы было удобнее и красивее с сообщениями.
if (args.length < 3) { p.sendMessage("§eИспользуйте - §c/don remove [ник] [причина]");
Заменить на
if (args.length < 3) {
p.sendMessage("§eИспользуйте - §c/don set [ник] [привилегия]");
return true;
}
else убрать и тут уже сделать выдачу
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);
Эти все сообщения сделать через конфиг, чтобы можно было свои вставить сообщения.
 
Сделал так:
Код:
        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;
    }
}
Всё работает. Но может есть что-то лишнее?
И почему привилегия снимается только после перезахода игрока?
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх