From 62644eba7792cfae457f7022658d61b85f533aae Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sat, 21 Aug 2021 16:08:11 +0100 Subject: [PATCH] Added average and total skill level placeholders and api methods --- .../willfp/ecoskills/api/EcoSkillsAPI.java | 16 +++++++++ .../com/willfp/ecoskills/EcoSkillsPlayer.kt | 34 +++++++++++++++++++ .../willfp/ecoskills/api/EcoSkillsAPIImpl.kt | 8 +++++ 3 files changed, 58 insertions(+) diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/api/EcoSkillsAPI.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/api/EcoSkillsAPI.java index c2b060c..61bb041 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/api/EcoSkillsAPI.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/api/EcoSkillsAPI.java @@ -65,6 +65,22 @@ public interface EcoSkillsAPI { double getSkillProgress(@NotNull Player player, @NotNull Skill skill); + /** + * Get the average skill level. + * + * @param player The player. + * @return The average skill level. + */ + double getAverageSkillLevel(@NotNull Player player); + + /** + * Get the total skill level. + * + * @param player The player. + * @return The total skill level. + */ + int getTotalSkillLevel(@NotNull Player player); + /** * Get the effect level for player. * diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/EcoSkillsPlayer.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/EcoSkillsPlayer.kt index 25e4bba..d77b3bf 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/EcoSkillsPlayer.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/EcoSkillsPlayer.kt @@ -1,14 +1,48 @@ package com.willfp.ecoskills +import com.willfp.eco.core.integrations.placeholder.PlaceholderEntry +import com.willfp.eco.util.NumberUtils import com.willfp.ecoskills.api.PlayerSkillExpGainEvent import com.willfp.ecoskills.api.PlayerSkillLevelUpEvent import com.willfp.ecoskills.effects.Effect import com.willfp.ecoskills.skills.Skill +import com.willfp.ecoskills.skills.Skills import com.willfp.ecoskills.stats.Stat import org.bukkit.Bukkit import org.bukkit.entity.Player import org.bukkit.persistence.PersistentDataType +object PlayerPlaceholders { + init { + PlaceholderEntry( + "average_skill_level", + { player -> NumberUtils.format(player.getAverageSkillLevel()) }, + true + ).register() + PlaceholderEntry( + "total_skill_level", + { player -> player.getTotalSkillLevel().toString() }, + true + ).register() + } +} + +fun Player.getTotalSkillLevel(): Int { + var total = 0 + for (skill in Skills.values()) { + total += this.getSkillLevel(skill) + } + return total +} + +fun Player.getAverageSkillLevel(): Double { + var total = 0 + for (skill in Skills.values()) { + total += this.getSkillLevel(skill) + } + return total / Skills.values().size.toDouble() +} + fun Player.giveSkillExperience(skill: Skill, experience: Double) { val gainEvent = PlayerSkillExpGainEvent(this, skill, experience) Bukkit.getPluginManager().callEvent(gainEvent) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/api/EcoSkillsAPIImpl.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/api/EcoSkillsAPIImpl.kt index cf4597d..360fcfc 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/api/EcoSkillsAPIImpl.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/api/EcoSkillsAPIImpl.kt @@ -74,4 +74,12 @@ object EcoSkillsAPIImpl: EcoSkillsAPI { override fun getStatModifier(player: Player, key: NamespacedKey): StatModifier? { return player.getStatModifier(key) } + + override fun getAverageSkillLevel(player: Player): Double { + return player.getAverageSkillLevel() + } + + override fun getTotalSkillLevel(player: Player): Int { + return player.getTotalSkillLevel() + } } \ No newline at end of file