
EventsLib
EventsLib - библиотека событий для Minecraft, добавляющая недостающие слушатели, такие как MobEffectTickEvent. Необходима для работы некоторых модов, требующих более точного контроля над эффектами.
EventsLib - это библиотека для Minecraft, которая добавляет в игру недостающие события (event listeners). Сама по себе она не вносит никаких предметов и не меняет геймплей. Её единственная задача - предоставить разработчикам модов более тонкий контроль над эффектами зелий и другими механиками.
Зачем это нужно
В ванильном Майнкрафте многие процессы скрыты от моддеров. Например, нельзя просто так отловить момент, когда эффект заканчивается, или узнать, сколько процентов времени действия осталось. EventsLib решает эту проблему, добавляя два ключевых инструмента:
- MobEffectTickEvent - событие, которое срабатывает каждый тик действия эффекта. Через него можно получить процент оставшегося времени, сам эффект и сущность, на которую он действует.
- onEffectRemoved - метод, который вызывается ровно один раз, когда эффект заканчивается. Идеально подходит для очистки временных атрибутов или других "хвостов".
Как это работает
Вот пример использования MobEffectTickEvent. Допустим, вы хотите выводить в консоль информацию о том, какой эффект действует на моба и сколько осталось:
@SubscribeEvent
public static void onMobEffectTick(MobEffectTickEvent event) {
float percentageLeft = event.getPercentageLeft();
String entityName = event.getEntity().getName().getString();
String effectName = event.getEffectInstance().getEffect().value().toString();
System.out.println("Entity: " + entityName
+ " is affected by: " + effectName
+ " with " + percentageLeft + "% duration remaining.");
if (percentageLeft == 50.0f) {
System.out.println("Effect on " + entityName + " is at 50% duration for effect: " + effectName);
}
if (percentageLeft == 20.0f) {
System.out.println("Effect on " + entityName + " is at 20% duration for effect: " + effectName);
}
}
А вот пример onEffectRemoved. В моде Fargo's Talismans этот метод используется, чтобы убрать атрибуты, добавленные постаментом, когда эффект спадает:
@Override
public void onEffectRemoved(LivingEntity entity, int amplifier) {
super.onEffectRemoved(entity, amplifier);
if (entity instanceof Player) {
System.out.println("Effect has worn off.");
}
}
Для кого этот мод
EventsLib - чисто техническая библиотека. Обычным игрокам она не нужна, если только какой-то другой мод не требует её для работы. А вот моддерам она даёт гибкость, которой так не хватает в ванильном API. Если вы пишете мод, который завязан на эффектах (талисманы, новые зелья, проклятия и т.п.) - EventsLib может серьёзно упростить вам жизнь.
Совместимость
Мод написан для Forge и не меняет игру сам по себе. Просто положите его в папку mods и забудьте - он будет работать в фоне, пока какой-нибудь другой мод не воспользуется его событиями.
