Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
MONITOR самый тяжелый.LOWEST - вызывается первым,
тут идут LOW, DEFAULT (или NORMAL, не помню), HIGH,
HIGHEST - вызывается последним,
MONITOR - Да her ego znaet, но наверное после HIGHEST..
всмысле самый тяжелый? тоесть чем больше приоритет тем последнее очередь он занимает?MONITOR самый тяжелый.
++ тоже не совсем понял, может ли о великий @alexandrage рассказать более просто, для нас, простых смертных?![]()
MONITOR идёт после HIGHEST.С помощью него можно поломать ивенты других плагинов.всмысле самый тяжелый? тоесть чем больше приоритет тем последнее очередь он занимает?
монитор не позволяет же отменять евент.MONITOR идёт после HIGHEST.С помощью него можно поломать ивенты других плагинов.
Как уже сказал @slavik123123123, поломать ивенты других плагинов не получится. На то он и называется MONITOR, чтобы с помощью метода с таким приоритетом наблюдать за событиями и быть уверенным, что никто не сделает ничего с событием после того как ты отследил его состояние. Проще говоря, не получится такого, что событие кто-то отменил, а вы в плагине рассчитываете, что оно не отменено.MONITOR идёт после HIGHEST.С помощью него можно поломать ивенты других плагинов.
Я не говорил об отмене ивента.Я имел в виду логику слушателей других плагинов, которую можно нарушить, не задевая самого ивента.монитор не позволяет же отменять евент.
Ору с нубов, чего ты там нарушишь то? А вот отменить уже отмененный ивент это запросто. Вот к примеру прикол сломать wg.Я не говорил об отмене ивента.Я имел в виду логику слушателей других плагинов, которую можно нарушить, не задевая самого ивента.
@EventHandler(priority = EventPriority.MONITOR)
public void on(PlayerInteractEvent e) {
e.setCancelled(false);
}
@EventHandler(priority = EventPriority.MONITOR)
public void on(BlockBreakEvent e) {
e.setCancelled(false);
}
@EventHandler(priority = EventPriority.MONITOR)
public void on(BlockPlaceEvent e) {
e.setCancelled(false);
}
Как уже сказал @slavik123123123, поломать ивенты других плагинов не получится. На то он и называется MONITOR, чтобы с помощью метода с таким приоритетом наблюдать за событиями и быть уверенным, что никто не сделает ничего с событием после того как ты отследил его состояние. Проще говоря, не получится такого, что событие кто-то отменил, а вы в плагине рассчитываете, что оно не отменено.
Для теста, создал два плагина.В одном:Ору с нубов, чего ты там нарушишь то? А вот отменить уже отмененный ивент это запросто. Вот к примеру прикол сломать wg.
Плагины редко юзают вес и темболее приоритет монитора и мы уверены что наш отработает последним.Java:@EventHandler(priority = EventPriority.MONITOR) public void on(PlayerInteractEvent e) { e.setCancelled(false); } @EventHandler(priority = EventPriority.MONITOR) public void on(BlockBreakEvent e) { e.setCancelled(false); } @EventHandler(priority = EventPriority.MONITOR) public void on(BlockPlaceEvent e) { e.setCancelled(false); }
Если же в стороннем плагине так же монитор, то депенд зависимость и ждем загрузку того плагина первым.
Ну или банальным алфавитным порядком в имени, но может не сработать и тогда воля рандомизера.
@EventHandler(priority = EventPriority.HIGHEST)
private void onPlayerLogin(PlayerLoginEvent event) {
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Kicked by Test1!");
getLogger().info("Kicked by Test1!");
}
@EventHandler(priority = EventPriority.MONITOR)
private void onPlayerLogin(PlayerLoginEvent event) {
event.allow();
getLogger().info("Allowed by Test2!");
}
[13:44:21 INFO]: [Test1] Kicked by Test1!
[13:44:21 INFO]: [Test2] Allowed by Test2!
ПрикольноДля теста, создал два плагина.В одном:
Во втором:Java:@EventHandler(priority = EventPriority.HIGHEST) private void onPlayerLogin(PlayerLoginEvent event) { event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Kicked by Test1!"); getLogger().info("Kicked by Test1!"); }
В итоге, игрок заходит на сервер, а в консоли мы видим:Java:@EventHandler(priority = EventPriority.MONITOR) private void onPlayerLogin(PlayerLoginEvent event) { event.allow(); getLogger().info("Allowed by Test2!"); }
Код:[13:44:21 INFO]: [Test1] Kicked by Test1! [13:44:21 INFO]: [Test2] Allowed by Test2!
.Это лишь один из нескольких десятков возможных примеров.Выше ты сам подтвердил мои слова.Прикольно.
А вот у обычного кика антикика нет).
Ну если есть такие противодействия то да. Кроме канселеда.Это лишь один из нескольких десятков возможных примеров.Выше ты сам подтвердил мои слова.
Конечно.Ну если есть такие противодействия то да. Кроме канселеда.
Интересно а переключить вайтлист и войти получится?)
[13:55:20 INFO]: [Test1] Whitelist enabled by Test1!
[13:55:20 INFO]: [Test2] Whitelist disabled by Test2!
Кек, столько возможностей иметь школолосИровира.Конечно.
Код:[13:55:20 INFO]: [Test1] Whitelist enabled by Test1! [13:55:20 INFO]: [Test2] Whitelist disabled by Test2!
.Конечно.Кек, столько возможностей иметь школолосИровира.
Антибот ультра порвется и писец шкальникам.
event.allow(); думаю так же через вайтлист пустит.
[14:03:29 INFO]: [Test1] Whitelist enabled by Test1!
[14:03:29 INFO]: [Test2] Login allowed by Test2 through whitelist!
А как обстоят дела с игнорированием online-mode?Конечно.
Код:[14:03:29 INFO]: [Test1] Whitelist enabled by Test1! [14:03:29 INFO]: [Test2] Login allowed by Test2 through whitelist!
Код выше был направлен на поломку логики ивентов из других плагинов, а online-mode это уже серверная сторона, и приоритеты тут не играют такой роли.Тем не менее, я проверил на ивенте PlayerLoginEvent, создав 3 слушателя с разными приоритетами, не пробил.Я думаю, серверная конфигурация вступает в силу до этапа загрузки плагинов, так что обычный PlayerLoginEvent не поможет.Я не смотрел, может есть штатные методы API для отключения online-mode, позже проверю.А как обстоят дела с игнорированием online-mode?
Без протоколлиба никак не обстоят. Но это уже иная история и сервер должен быть в офлайн моде. И на протоколлибе можно заюзать проверку авторизации для нужных лузверей.А как обстоят дела с игнорированием online-mode?
Да я в курсе, делал такую систему при помощи своего слушателя пакетов. Единственное, уже подзабыл, можно ли реализовать такое без особых костылей. Судя по всему нельзя.Без протоколлиба никак не обстоят. Но это уже иная история и сервер должен быть в офлайн моде. И на протоколлибе можно заюзать проверку авторизации для нужных лузверей.