EventsLib
Активный0.0
Установок
Последнее обновление
Версии
EventsLib
Это библиотечный мод, который создавался для расширения возможностей других модификаций, требующих более детальных событий при работе с эффектами статусов. Данный контент не добавляет в игру никаких предметов и сам по себе не изменяет игровой процесс. Для обычных игроков он будет бесполезным до тех пор, пока не будет установлена модификация, которая использует его функционал.
Основное предназначение - предоставить разработчикам модов дополнительные инструменты для точного отслеживания применения эффектов на существах. В частности, добавляется событие MobEffectTickEvent, с помощью которого можно получать информацию о том, какая часть продолжительности эффекта осталась (в процентах), а также обращаться непосредственно к экземпляру самого эффекта и существу, на которое он действует.
// Пример использования MobEffectTickEvent
@SubscribeEvent
public static void onMobEffectTick(MobEffectTickEvent event) {
float remainingPercentage = event.getPercentageLeft();
String entityName = event.getEntity().getName().getString();
String effectName = event.getEffectInstance().getEffect().value().toString();
System.out.println("Существо: " + entityName
+ " находится под действием: " + effectName
+ " с остатком " + remainingPercentage + "% продолжительности.");
if (remainingPercentage == 50.0f) {
System.out.println("Эффект на " + entityName + " достиг половины продолжительности: " + effectName);
}
if (remainingPercentage == 20.0f) {
System.out.println("Эффект на " + entityName + " снизился до 20% продолжительности: " + effectName);
}
}
Также библиотека включает метод, который активируется однократно в момент полного завершения действия эффекта. Например, в модификации Fargo's Talismans данный функционал используется для удаления атрибутов, добавленных к игроку через пьедестал, что является более эффективным решением по сравнению с постоянным отслеживанием через PlayerTick метод.
// Пример использования onEffectRemoved (в классе, расширяющем MobEffectEndEffect)
@Override
public void onEffectRemoved(LivingEntity entity, int amplifier) {
super.onEffectRemoved(entity, amplifier);
if (entity instanceof Player) {
System.out.println("Действие эффекта завершилось.");
}
}