Sainthozier
Стрелочник
- 627
- 11
- 371
Всем привет.
Понадобилось совершить некие манипуляции с приоритетами слушателей событий, а именно:
а) сделать так, чтобы конкретно мой listener выполнялся первым из всего списка;
б) сделать так, чтобы конкретно мой listener выполнялся последним из всего списка.
Для чего? Объясняю. Мне требуется создать свой обработчик события, который в теории уже может быть реализован в других модах, но немного с другой логикой. И мне нужно сделать так, чтобы моя логика имела наивысший приоритет. Абстрактный пример: в моде "А" в ивенте
Возня с приоритетами и различные тесты не дали никаких результатов. Япо фасту сбилдил 10 джарников с одним ивентом, но с разными приоритетами и расплакался:
Естественно я полез и посмотрел на то, что там сделали чуваки из forge. И, честно говоря, не хочу даже пытаться это модифицировать. Во-первых, я некоторые моменты так и не уяснил(как определяется порядок обработчиков с одинаковым приоритетом), ибо слепой, а во-вторых, не хочу сломать что-то. Может будут идеи у кого-то какие-нибудь? Если кто-то захочет сам чекнуть, то вот список классов в 1.15.2, где упоминается приоритет:
P.S. Версию указал 1.15.2, т.к. работал и проверял именно на ней. Но по факту нужна будет и 1.12. Если после неё ничего не изменилось в плане ивентов(я не проверял), то для 1.12+ актуально.
P.S.S. И переименуйте кто-то тему плиз, у меня щас голова не может в название.
Понадобилось совершить некие манипуляции с приоритетами слушателей событий, а именно:
а) сделать так, чтобы конкретно мой listener выполнялся первым из всего списка;
б) сделать так, чтобы конкретно мой listener выполнялся последним из всего списка.
Для чего? Объясняю. Мне требуется создать свой обработчик события, который в теории уже может быть реализован в других модах, но немного с другой логикой. И мне нужно сделать так, чтобы моя логика имела наивысший приоритет. Абстрактный пример: в моде "А" в ивенте
ItemPickupEvent
игроку выдаётся гм при подборе палки; в моём же моде в ивенте ItemPickupEvent
при подборе палки меня банит на курсе. И вот мне нужно сделать так, чтобы именно мой обработчик срабатывал первым.Возня с приоритетами и различные тесты не дали никаких результатов. Я
Естественно я полез и посмотрел на то, что там сделали чуваки из forge. И, честно говоря, не хочу даже пытаться это модифицировать. Во-первых, я некоторые моменты так и не уяснил(как определяется порядок обработчиков с одинаковым приоритетом), ибо слепой, а во-вторых, не хочу сломать что-то. Может будут идеи у кого-то какие-нибудь? Если кто-то захочет сам чекнуть, то вот список классов в 1.15.2, где упоминается приоритет:
net.minecraftforge.eventbus.ASMEventHandler
, net.minecraftforge.eventbus.EventBus
, net.minecraftforge.eventbus.ListenerList
.P.S. Версию указал 1.15.2, т.к. работал и проверял именно на ней. Но по факту нужна будет и 1.12. Если после неё ничего не изменилось в плане ивентов(я не проверял), то для 1.12+ актуально.
P.S.S. И переименуйте кто-то тему плиз, у меня щас голова не может в название.