Помогите Не действует ограничение только на одного игрока

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

KaroBallga

Ньюби
Пользователь
Баллы
1
У меня есть эвент

Код:
@EventHandler
public void onChat(AsyncPlayerChatEvent e) {
    FileConfiguration Config = Main.getInstance().getConfig();
    Player p = e.getPlayer();
        if (Config.getBoolean("ServerSettings.chatenable")) {
            for (String s : Config.getStringList("PlayerSettings.admins")) {
                if (s.contains(p.getName())) {
                    return;
                }
                p.sendMessage(Main.getInstance().getConfig().getString("ServerSettings.chat").replace("&", "§"));
                e.setCancelled(true);
            }
        }

}

Я беру getStringList("PlayerSettings.admins) и по идеи кто есть в этом списке, смогут писать в чат, но писать может только тот, кто первым стоит, а тот кто во второй строке записан, не может писать.
upload_2021-6-6_1-35-8.png
 
Ну так return это выход из метода и соответственно у тебя цикл прерывается. Да и логика у тебя нарушена
 
1. Вместо return сделай continue;
2. Вместо проверки ника s.contains(p.getName()) лучше изменить на s.equalsIgnoreCase(p.getName())


3. А вообще вместо цикла можно сделать так:
Код:
if (Config.getStringList("PlayerSettings.admins").contains(p.getName())) {
    return;
}
 
Последнее редактирование:
1. Вместо return сделай continue;
2. Вместо проверки ника s.contains(p.getName()) лучше изменить на s.equalsIgnoreCase(p.getName())


3. А вообще вместо цикла можно сделать так:
Код:
if (Config.getStringList("PlayerSettings.admins").contains(p.getName())) {
    return;
}
Да можно еще проще сделать
Код:
e.setCancelled(!Config.getStringList("PlayerSettings.admins").contains(p.getName()));
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх