Помогите Как отменить эвент OnJoin если у тебя звезда?

TheKrealisYT

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
_TheKrealisYT_
Мне нужно, чтобы если у игрока есть пермишен, то отправляется сообщение всем о его заходе. Если у игрока звезда, то мне нужно убрать это сообщение. Как мне это сделать? Просто e.setCanceled(true) не работает!
}
@EventHandler
public void onJoin(final PlayerJoinEvent e) {
final String format = Config.getConfig().getString("join.messages");
final Player p = e.getPlayer();
if (p.hasPermission("kjoiner.donatejoin")) {
Bukkit.getOnlinePlayers().forEach(x -> x.sendMessage(this.papi(e.getPlayer(), format.replace("<player>", e.getPlayer().getName()).replace("&", "§"))));
}
}

@EventHandler
public void onJoin13(PlayerJoinEvent e) {
final Player p = e.getPlayer();
if (p.hasPermission("*") || p.isOp()) {
e.setJoinMessage(null);

}
 
Ты не можешь отменять PlayerJoinEvent так как он не реализует интерфейс Cancellable.
Но можно сделать под другому:
ловишь AsyncPlayerPreLoginEvent и запрещаешь присоединение (метод disallow())
Примерно так:
Код:
@EventHandler
public void onPlayerPreLogin(AsyncPlayerPreLoginEvent e) {
    e.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER,
            "You don't have permission to join. If you think this is a mistake, please contact the server administration");
}

фильтры потом сам добавишь
 
e.setJoinMessage(null);
должно работать, ты зарегал слушатель?
 
Назад
Верх