From 072d33b237ac324569f1556298ab9fd9e0cabdec Mon Sep 17 00:00:00 2001 From: Auxilor Date: Wed, 5 Jan 2022 19:28:44 +0000 Subject: [PATCH] Added health stat (unused by default) --- .../com/willfp/ecoskills/stats/Stats.java | 2 + .../ecoskills/stats/stats/StatHealth.kt | 44 +++++++++++++++++++ .../core-plugin/src/main/resources/config.yml | 6 +++ 3 files changed, 52 insertions(+) create mode 100644 eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatHealth.kt diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/stats/Stats.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/stats/Stats.java index 8d74446..c21c8e4 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/stats/Stats.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/stats/Stats.java @@ -6,6 +6,7 @@ import com.willfp.ecoskills.stats.stats.StatCritChance; import com.willfp.ecoskills.stats.stats.StatCritDamage; import com.willfp.ecoskills.stats.stats.StatDefense; import com.willfp.ecoskills.stats.stats.StatFerocity; +import com.willfp.ecoskills.stats.stats.StatHealth; import com.willfp.ecoskills.stats.stats.StatSpeed; import com.willfp.ecoskills.stats.stats.StatStrength; import com.willfp.ecoskills.stats.stats.StatWisdom; @@ -31,6 +32,7 @@ public class Stats { public static final Stat SPEED = new StatSpeed(); public static final Stat WISDOM = new StatWisdom(); public static final Stat FEROCITY = new StatFerocity(); + public static final Stat HEALTH = new StatHealth(); @ApiStatus.Internal public static void registerNewStat(@NotNull final Stat skill) { diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatHealth.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatHealth.kt new file mode 100644 index 0000000..bdc5911 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatHealth.kt @@ -0,0 +1,44 @@ +package com.willfp.ecoskills.stats.stats + +import com.willfp.ecoskills.getStatLevel +import com.willfp.ecoskills.stats.Stat +import org.bukkit.attribute.Attribute +import org.bukkit.attribute.AttributeModifier +import org.bukkit.entity.Player +import org.bukkit.event.EventHandler +import org.bukkit.event.EventPriority +import org.bukkit.event.player.PlayerChangedWorldEvent + +class StatHealth : Stat( + "health" +) { + override fun updateStatLevel(player: Player) { + val modifier = AttributeModifier( + this.uuid, + this.name, + this.config.getDouble("health-per-level") * player.getStatLevel(this), + AttributeModifier.Operation.MULTIPLY_SCALAR_1 + ) + val instance = player.getAttribute(Attribute.GENERIC_MAX_HEALTH) ?: return + + instance.removeModifier(modifier) + + if (this.config.getStrings("disabled-in-worlds").contains(player.world.name)) { + return + } + + plugin.scheduler.run { + instance.removeModifier(modifier) + instance.addModifier(modifier) + } + } + + @EventHandler(priority = EventPriority.LOW) + fun handle(event: PlayerChangedWorldEvent) { + val player = event.player + + plugin.scheduler.run { + updateStatLevel(player) + } + } +} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/resources/config.yml b/eco-core/core-plugin/src/main/resources/config.yml index daad98f..a43167a 100644 --- a/eco-core/core-plugin/src/main/resources/config.yml +++ b/eco-core/core-plugin/src/main/resources/config.yml @@ -324,6 +324,12 @@ stats: disabled-in-worlds: [] # The percent chance to deal damage twice chance-per-level: 0.5 + health: + name: "&c❤ Health" + # Disabled worlds + disabled-in-worlds: [] + # The extra hp per level + health-per-level: 1 damage-indicators: # Requires HolographicDisplays/GHolo/CMI to be installed