
EventsLib
一个事件库,用于补充缺失的事件监听器
本库旨在与我的部分模组配套使用,这些模组需要更具体的事件来处理效果。本模组不添加任何物品,也不会以任何方式改变游戏。除非有其他模组需要它并利用其额外事件,否则它对玩家没有实际用途。
它添加了一个名为 MobEffectTickEvent 的事件,该事件为模组开发者提供了一个接口,用于获取效果剩余时长的百分比,以及效果实例和实体(如果需要这些信息的话)。
// 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("实体: " + entityName
+ " 受到 " + effectName
+ " 影响,剩余时长: " + percentageLeft + "%。");
if (percentageLeft == 50.0f) {
System.out.println("实体 " + entityName + " 上的效果 " + effectName + " 时长剩余 50%。");
}
if (percentageLeft == 20.0f) {
System.out.println("实体 " + entityName + " 上的效果 " + effectName + " 时长剩余 20%。");
}
}
它还添加了一个在效果消失时仅运行一次的方法。在我的 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("效果已消失。");
}
}
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。