Shield System
Modby chen_1335
a minecraft mod that provide a simple shield system
Type
Mod
CurseForge Downloads
3,718
CurseForge ID
1263471
Last Updated
Jun 26, 2026
Description
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") })
Similar Mods
SauceLib
Library shared between Ars Nouveau addons, containing shared mechanics, attributes and the Liquid Source fluid
Zaynen's Ender Dragon Dragon Egg Item Drop
Enable The Ability To Have The Ender Dragon Drop The Dragon Egg When Slayed
Ceiling Carpets
Put any carpet on your ceiling
Volumetrics
A foundational library to provide volume lookups in Minecraft.
Hierophantics
Addon for Hex Casting that lets you work with extracted minds to create conditional hexes, merge villagers, and cast spe...
project-1131738
Adds compatibility between Artifacts and Alex's Caves. Vanilla style.