Это очень сложно определить.Поскольку registerEvents
ведет к функции createRegisteredListeners
из https://github.com/Bukkit/Bukkit/blob/master/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
Там они используют HashSet
для хранения методов вашего класса слушателя.Таким образом, псевдослучайный хэш, который они дают каждому методу для его хранения, определяет, какое событие регистрируется первым.
Я не уверен, но я предполагаю, что каждый раз, когда вы регистрируете события, это своего рода случайность, котораярегистрируется первым.Вот почему вы должны использовать разные eventPriorities
, чтобы определить, какой из них вызывается первым.
Если вы действительно хотите углубиться, вы должны разорвать функцию createRegisteredListeners
ссылки GitHub, которую я разместил ранее.в этом ответе.Но я думаю, что это никогда не будет полностью определенным из-за HashSet
, используемого в строке 235
JavaPluginLoader.java
:
methods = new HashSet<Method>(publicMethods.length, Float.MAX_VALUE);
Поскольку методы добавляются в набор, никогда не определено, в какой позициив оперативной памяти они заканчиваются.
Я надеюсь, что смогу помочь вам с этим постом, хотя он не отвечает на ваш первоначальный вопрос.