跳到正文

EventsLib

作者:STS15

一个补全缺失事件监听器的事件前置库

收藏

介绍

介绍由机器翻译自 Modrinth 原页面,仅供参考。

此库用于配合我的一些模组,这些模组需要更具体的事件来实现效果。此模组不会添加任何物品,也不会以任何方式改变游戏。除非另一个模组需要它并使用这些额外事件,否则它对玩家没有任何实际用途。

 

它添加了一个名为 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 模组中,我用它来移除由 pedestal 添加到玩家身上的属性,而不是通过 PlayerTick 方法来实现。

    // onEffectRemoved 示例(位于 MobEffectEndEffect 扩展类中)
    @Override
    public void onEffectRemoved(LivingEntity entity, int amplifier) {
        super.onEffectRemoved(entity, amplifier);
        if (entity instanceof Player) {
            System.out.println("效果已消失。");
        }
    }

常见问题

EventsLib 支持哪些 Minecraft 版本?

EventsLib 支持 Minecraft Java 版 1.21–26.1.2,共 7 个版本,可用的加载器:NeoForge。下载时注意选择和你游戏版本一致的文件。

EventsLib 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:客户端和服务端都要装。

评论

登录后评论和评分

STS15 的其他作品

查看全部 →