
Mana Attributes
A small API that adds a mana system controlled by entity attributes.
Mana Attributes
This API adds a mana system controlled by entity attributes.
Default implementation
LivingEntities can have up to manaattributes:max_mana amounts of mana. Mana is regenerated by manaattributes:mana_regeneration every manaattributes:mana_tick_threshold ticks.
When mana is reduced, regeneration is stopped for manaattributes:mana_regeneration_delay_threshold ticks.
When mana is <= 0, regeneration is stopped for manaattributes:depleted_mana_regeneration_delay_threshold ticks.
manaattributes:reserved_mana describes the percentage amount of maximum mana that is currently not available.
Default attribute values
- manaattributes:max_mana: 0
- manaattributes:mana_regeneration: 0
- manaattributes:mana_tick_threshold: 20
- manaattributes:mana_regeneration_delay_threshold: 20
- manaattributes:depleted_mana_regeneration_delay_threshold: 60
- manaattributes:reserved_mana: 0
All default values for players can be set in the server config.
Customization
The client config allows customizing the HUD element.
Using the mana system
Java
Casting a "LivingEntity" to the "ManaUsingEntity" interface gives access to all relevant methods.
Data packs
Mana Attributes implements several data driven methods to interact with the current mana value of an entity.
- the "manaattributes:add_mana" enchantment effect allows adding a defined amount to the current mana
- the "manaattributes:mana_using_entity" entity sub predicate passes when the current mana of an entity matches the defined range
Example
This enchantment reduces mana of the attacker by 2, as long as the attacker has at least 5 mana:
{
"anvil_cost": 1,
"description": {
"translate": "enchantment.manaattributes.test"
},
"effects": {
"minecraft:post_attack": [
{
"affected": "attacker",
"effect": {
"type": "manaattributes:add_mana",
"amount": {
"type": "minecraft:linear",
"base": -2.0,
"per_level_above_first": -2.0
}
},
"enchanted": "attacker",
"requirements": {
"condition": "minecraft:entity_properties",
"entity": "direct_attacker",
"predicate": {
"type_specific": {
"type": "manaattributes:mana_using_entity",
"mana_amount": {
"min": 5.0
}
}
}
}
}
]
},
"max_cost": {
"base": 25,
"per_level_above_first": 8
},
"max_level": 1,
"min_cost": {
"base": 5,
"per_level_above_first": 8
},
"slots": [
"hand"
],
"supported_items": "#minecraft:swords",
"weight": 5
}