Войти или зарегистрироваться

Помогите Помощь с PEX

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

slavik123123123

Старожил
Пользователь
Баллы
143
Имя в Minecraft
Leymooo
Здравствуйте! Нужна помощь с PEX. У меня на сервере есть кейсы из которых выпадают группы, и он добавляет игроков через команду "group add [GROUP]" и если например у игрока был вип, и он открыл кейс и выпал флай, то у игрока будет префикс флай, а не вип, но будет всё что есть у ВИП. Я решил исправить это плагином.
А именно получаю все группы игрока, удаляю его из всех групп, получаю самую высокую по приоритету(Из конфига) и ставлю её.
Вот сам код:
Java:
@EventHandler(priority = EventPriority.HIGHEST)
public void onJoin2(final PlayerJoinEvent v)
{
    final Player p = v.getPlayer();
    final PermissionGroup[] playerGroups = PermissionsEx.getUser(p).getGroups();
    for (PermissionGroup pg : playerGroups) {
        Integer targetPrior1 = 1;
        Integer targetPrior2 = 2;
        Integer targetPrior3 = 3;
        Integer targetPrior4 = 4;
        Integer targetPrior5 = 5;
        p.sendMessage("asd");
        PermissionsEx.getUser(p).removeGroup(pg);
        if (c.getInt(pg.getName()) == targetPrior5) {
            PermissionsEx.getUser(p).addGroup(pg);
            p.sendMessage("asd1");
            return;
        }
        else if (c.getInt(pg.getName()) == targetPrior4){
            PermissionsEx.getUser(p).addGroup(pg);
            p.sendMessage("asd2");
            return;
        }else if (c.getInt(pg.getName()) == targetPrior3){
            PermissionsEx.getUser(p).addGroup(pg);
            p.sendMessage("asd3");
            return;
        }else if (c.getInt(pg.getName()) == targetPrior2){
            PermissionsEx.getUser(p).addGroup(pg);
            p.sendMessage("asd4");
            return;
        }else if (c.getInt(pg.getName()) == targetPrior1){
            PermissionsEx.getUser(p).addGroup(pg);
            p.sendMessage("asd5");
            return;
        }
    }
}
И когда игрок заходит на сервер, то ничего не происходит(Сообщения отправляются), а группы остаются такие какие и были. И даже если менять pg ==> "GroupName", то всёравно ничего не происходит. Сообщение asd1 отправляется.

Config

YAML:
vip: 1
vipp: 2
mvp: 3
mvpp: 4
gl: 5
 
По-моему, ты можешь сделать не через if а через swich.
И я немного не понял код, что то странно все)
 
Не совсем понятен код. Но, вероятно, будет удобно сравнивать приоритеты групп: если выдаваемая группа "выше" старой, то удалять из этой старой. Примерно так можно получать приоритет:
Код:
private static String[] groups = {"vip", "vipp", "mvp", "mvpp", "gl"};

private static int getGroupPriority(PermissionGroup group) {
    String name = group.getName();
    for(int i = 0; i < groups.length; i++) {
        if(groups[i].equals(name))
            return i;
    }
    return -1;
}
 
Последнее редактирование:
Pex имееет встроеную систему "веса", зачем своё нужно?
 
Pex имееет встроеную систему "веса", зачем своё нужно?
Эххх. Найти бы её ещё.
И я немного не понял код, что то странно все)
Не совсем понятен код.
Ну типо у игрока есть 3 группы. Например gl, vip, mvp.
В конфиге есть приоритеты для этих групп, 5,1,3
И в коде я получаю приоритет(int), и сравниваю с тем что я указал в коде
Например этот Integer targetPrior1 =5; И если приоритет с конфига, совпал с этим, то выполняется код.
Но проблема в том что тупо ничего не происходит, asd1 отправляется, а всё что я делал с группами не изменяется.
 
Эххх. Найти бы её ещё.


Ну типо у игрока есть 3 группы. Например gl, vip, mvp.
В конфиге есть приоритеты для этих групп, 5,1,3
И в коде я получаю приоритет(int), и сравниваю с тем что я указал в коде
Например этот Integer targetPrior1 =5; И если приоритет с конфига, совпал с этим, то выполняется код.
Но проблема в том что тупо ничего не происходит, asd1 отправляется, а всё что я делал с группами не изменяется.
Это я понял, но все очень не понятно.
*1)Зачем удалять группу у игрока, но потом опять давать?* - понял, но и понял то что это большой костыль)
и все таки, сделал бы через swich)
Java:
swich(c.getInt(pg.getName())){
case 5:
//code
break;
case 4:
//code
break;
case 3:
//code
break;
default:
break;
}
Или что то такое:В
 
pex group <group> weight [weight]

или в permissions.yml:
Код:
    options:
      prefix: '&f[&9&lBuild&f] &6'
      suffix: ''
      weight: '50'
      default: false

Чем меньший вес у группы, тем больший приоритет у команд и префикса.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх