跳到正文

Shield System

作者:chen_1335

a minecraft mod that provide a simple shield system

收藏

介绍

中文介绍正在准备中,下面暂时显示原文。

This is an independent shield system from SimpleRPG Core.

It provides a shield system similar to that of League of Legends and it has complete kubejs support.

 

Currently adapted to Overflow Bars

 

for kubejs:

StartupEvents.registry("shield_system:shield_type", event => {
    //Create a simple unit shield that exists permanently
    event.create("kubejs_test_unit")
        .createSimpleUnitShield()

    //Create a simple shield group, where the unit shields of the shield group permanently exist
    event.create("kubejs_test_group")
        .createSimpleGroupShield()

    //Create a shield that lasts for 5 seconds and belongs to the shield group
    event.create("kubejs_test_time")
        .createTimeLimitedShield(20 * 5)

    //Create a shield that continuously decays within 5 seconds and belongs to the shield group
    event.create("kubejs_test_decay")
        .createDecayShield(20 * 5)


    //Next is the advanced section
    event.create("kubejs_custom_1")
        //Add shield provider
        .shieldFactory(
            //Use the unit shield constructor to provide kjs objects for the builder, making it easier to manage
            () => 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)
                })
                //Since it is a unit shield, a unit shield constructor should not be provided, but rather a unit shield should be provided directly. Therefore,. create (0)
                .build().create(0)
        )

    event.create("kubejs_cunstom_2")
        .shieldFactory(
            //Use shield group
            () => new GroupShield(
                   //Use the unit shield constructor to provide kjs objects for the builder, making it easier to manage
                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)
                    })
                    //Since it is a shield group, there is no initial shield, so a unit shield constructor is provided here without the need for. 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 => {
    //Register shield priority, shields without registered priority will not take effect
    event.addShieldType("kubejs:kubejs_test_group")
    event.addShieldType("kubejs:kubejs_test_time")
    event.addShieldType("kubejs:kubejs_test_decay")
})

for API use

EntityEvents.afterHurt(event => {
//There are two situations to add shield values to a shield:
//If the target shield is a shield group, a unit shield will be created based on the provided shield value, and then the unit shield will be added to the shield group
//If the target shield is a unit shield, the shield value will be directly increased on the basis of the original shield value     ShieldAPI.addShieldAmount(event.entity, "kubejs:kubejs_test_decay", 80) //reduce shield ShieldAPI.reduceShieldAmount(event.entity, "kubejs:kubejs_test_decay", 40) //get shield instance var shieldInstance = ShieldAPI.getShieldInstance(event.entity, "kubejs:kubejs_test_decay") })

常见问题

Shield System 支持哪些 Minecraft 版本?

Shield System 支持 Minecraft Java 版 1.21.1,可用的加载器:NeoForge。下载时注意选择和你游戏版本一致的文件。

Shield System 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。

评论

登录后评论和评分

chen_1335 的其他作品

查看全部 →