FastEvent — модификация для Forge/NeoForge, ускоряющая систему событий, одну из ключевых частей платформы.
Текущий статус проекта
Проект больше не поддерживается, поскольку Forge/NeoForge не разрешают модам изменять EventBus. В отличие от классов Minecraft или Forge, EventBus загружается как библиотека, что делает его изменение через Mixin или Transformer нестабильным.
В версии 1.2.0 использовался нестандартный хак для модификации класса ASMEventHandler, но он перестал работать в версиях 1.18.2 и выше. Эти версии теперь архивированы и обновления не планируются.
Принцип работы FastEvent
Для ускорения EventBus создаёт во время выполнения отдельные классы-обработчики событий, чтобы избежать отражения (reflection) при вызове методов. Однако генерация классов сама по себе замедляет процесс.
FastEvent заменяет генерацию классов на создание лямбда-выражений, что ускоряет построение обработчиков и позволяет JVM лучше оптимизировать код.
Пример кода
class Listener { public void onEvent(Event event) { // обработка события }
}
Listener listener = new Listener(); // EventBus создаёт класс-обработчик
class EventHandler implements IEventListener { private Listener instance; public EventHandler(Listener instance) { this.instance = instance; } @Override public void invoke(Event event) { instance.onEvent(event); }
}
IEventListener handler = new EventHandler(listener); // FastEvent использует лямбду вместо отдельного класса
IEventListener handler = listener::onEvent;
Результаты производительности
Тесты показывают прирост скорости FastEvent на разных сценариях:
- Регистрация 10 000 слушателей без генерации событий — ускорение около 6,4%
- Регистрация 1 000 слушателей и генерация 10 000 событий — ускорение примерно 24%
Установка и использование
- FastEvent разработан для Forge/NeoForge и интегрируется в систему событий автоматически.
- Особых действий по установке или настройке не требуется.
- Совместимость ограничена версиями до 1.18.2, где использовались изменения класса
ASMEventHandler.





