BBSMC Logo
模组
资源包
数据包
整合包
光影
插件
软件资源
论坛
登录
模组插件数据包光影资源包整合包资源
登录
设置
Shield System

Shield System

一个提供了护盾效果的前置api

0
0
前置
游戏机制

    API及使用方法

简介更新日志版本百科反馈讨论

注册部分

StartupEvents.registry("shield_system:shield_type", event => {
    //创建一个简单的单元护盾,永久存在
    event.create("kubejs_test_unit")
        .createSimpleUnitShield()

    //创建一个简单的护盾组,护盾组的单元护盾永久存在
    event.create("kubejs_test_group")
        .createSimpleGroupShield()

    //创建一个持续5秒的护盾,这个护盾属于护盾组
    event.create("kubejs_test_time")
        .createTimeLimitedShield(20 * 5)

    //创建一个在5秒内持续衰减的护盾,这个护盾属于护盾组
    event.create("kubejs_test_decay")
        .createDecayShield(20 * 5)


    //接下来是高级部分
    event.create("kubejs_custom_1")
        //添加护盾提供者
        .shieldFactory(
            //使用单元护盾构造器,为构建器提供kjs的对象,便于管理
            () => UnitShieldBuilder.of((initAmount) => new TestShield(initAmount))
                //tick
                .tick((kubeUnitShield, living) => {
                    kubeUnitShield.getKubeObject().tick(kubeUnitShield, living)
                })
                //save
                .save((kubeUnitShield, living) => {
                    kubeUnitShield.getKubeObject().save(kubeUnitShield, living)
                })
                //load
                .load((kubeUnitShield, living) => {
                    kubeUnitShield.getKubeObject().load(kubeUnitShield, living)
                })
                //由于是单元护盾,所以不应该提供单元护盾构造器,而是直接提供单元护盾,所以.create(0)
                .build().create(0)
        )

    event.create("kubejs_cunstom_2")
        //添加护盾提供者
        .shieldFactory(
            //使用护盾组
            () => new GroupShield(
                //护盾组单元护盾构造器,并且为构建器提供kjs的对象,便于管理
                UnitShieldBuilder.of((initAmount) => new TestShield(initAmount))
                    .tick((kubeUnitShield, living) => {
                        kubeUnitShield.getKubeObject().tick(kubeUnitShield, living)
                    })
                    .save((kubeUnitShield, living) => {
                        kubeUnitShield.getKubeObject().save(kubeUnitShield, living)
                    })
                    .load((kubeUnitShield, living) => {
                        kubeUnitShield.getKubeObject().load(kubeUnitShield, living)
                    })
                    //由于是护盾组,所以不存在初始护盾,所以这里提供单元护盾构造器,不需要.create(0)
                    .build()
            )
        )
})


function TestShield(initAmount) {
    this.initAmount = initAmount
}

/**
 * @param {$KubeUnitShield_<TestShield} kubeUnitShield
 * @param {$LivingEntity_} living
 */
TestShield.prototype.tick = function (kubeUnitShield, living) {
    kubeUnitShield.reduceShieldAmount(this.initAmount / 100)

}

/**
 * @param {$KubeUnitShield_<TestShield} kubeUnitShield
 * @param {$LivingEntity_} living
 */
TestShield.prototype.save = function (kubeUnitShield, living) {

}

/**
 * @param {$KubeUnitShield_<TestShield} kubeUnitShield
 * @param {$LivingEntity_} living
 */
TestShield.prototype.load = function (kubeUnitShield, living) {

}
/**
 * @param {$LivingEntity_} living
 */


TestShield.prototype.sendMessage = function (living) {
    living.sendSystemMessage(this.initAmount)
}
//注册护盾以及优先级(必须)
ShieldSystemEvents.RegisterShieldPriority(event => {
    event.addShieldType("kubejs:kubejs_test_group")
    event.addShieldType("kubejs:kubejs_test_time")
    event.addShieldType("kubejs:kubejs_test_decay")
    event.addShieldType("kubejs:kubejs_cunstom_2")

})

具体使用部分

EntityEvents.afterHurt(event => {
    //为护盾添加护盾值,有两种情况:
    //如果目标护盾是护盾组,则会以提供的护盾值创建一个单元护盾,然后将单元护盾添加进护盾组
    //如果目标护盾是单元护盾,则会直接在原有护盾值的基础上增加护盾值
    ShieldAPI.addShieldAmount(event.entity, "kubejs:kubejs_cunstom_2", 40)

    //获取护盾实例
    var shieldInstance = ShieldAPI.getShieldInstance(event.entity, "kubejs:kubejs_test_decay")

    //模组为你提供了两种默认护盾类型,不需要注册就可以直接使用。

    //为玩家添加一个5秒内持续衰减的10护盾
    ShieldAPI.addCommonDecayShield(event.entity,10,20*5)

    //为玩家添加一个持续5秒的护盾
    ShieldAPI.addCommonTimeLimitedShield(event.entity,10,20*5)
})
设置
"Minecraft"以及"我的世界"为美国微软公司的商标 本站与微软公司没有从属关系

本站与Modrinth无从属关系,网站遵循Modrinth网站程序的LGPL协议开源 开源地址

版权所有 © 2019-2024 青岛柒兮网络科技有限公司 | ICP经营许可证: 鲁B2-20210590 | ICP备案: 鲁ICP备2021009459号-12