From a60d4bce7787ea138975a24f4c5c01a4e0b7290e Mon Sep 17 00:00:00 2001 From: Auxilor Date: Mon, 3 Jan 2022 19:20:22 +0000 Subject: [PATCH] Added disabled-in-worlds to stats --- .../ecoskills/stats/stats/StatCritChance.kt | 5 +++++ .../willfp/ecoskills/stats/stats/StatDefense.kt | 4 ++++ .../ecoskills/stats/stats/StatFerocity.kt | 5 +++++ .../willfp/ecoskills/stats/stats/StatSpeed.kt | 17 +++++++++++++++++ .../ecoskills/stats/stats/StatStrength.kt | 4 ++++ .../willfp/ecoskills/stats/stats/StatWisdom.kt | 4 ++++ .../core-plugin/src/main/resources/config.yml | 12 ++++++++++++ 7 files changed, 51 insertions(+) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatCritChance.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatCritChance.kt index 0a409a1..62ab089 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatCritChance.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatCritChance.kt @@ -17,6 +17,11 @@ class StatCritChance : Stat( fun handle(event: EntityDamageByEntityEvent) { val player = event.damager.tryAsPlayer() ?: return + if (this.config.getStrings("disabled-in-worlds").contains(player.world.name) + || Stats.CRIT_DAMAGE.config.getStrings("disabled-in-worlds").contains(player.world.name)) { + return + } + if (NumberUtils.randFloat(0.0, 100.0) >= (this.config.getDouble("chance-per-level") * player.getStatLevel(this))) { return } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatDefense.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatDefense.kt index bf227fc..d001a37 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatDefense.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatDefense.kt @@ -18,6 +18,10 @@ class StatDefense : Stat( val player = event.entity as Player + if (this.config.getStrings("disabled-in-worlds").contains(player.world.name)) { + return + } + var multiplier = this.config.getDouble("percent-less-damage-per-level") * player.getStatLevel(this) multiplier /= 100 multiplier += 1 diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatFerocity.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatFerocity.kt index 587da39..c03aff1 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatFerocity.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatFerocity.kt @@ -15,6 +15,11 @@ class StatFerocity : Stat( @EventHandler(priority = EventPriority.LOW) fun handle(event: EntityDamageByEntityEvent) { val player = event.damager.tryAsPlayer() ?: return + + if (this.config.getStrings("disabled-in-worlds").contains(player.world.name)) { + return + } + val victim = if (event.entity is LivingEntity) event.entity as LivingEntity else return if (victim.hasMetadata("ferocity")) { diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatSpeed.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatSpeed.kt index eeea466..abb6929 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatSpeed.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatSpeed.kt @@ -5,6 +5,9 @@ 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 StatSpeed : Stat( "speed" @@ -17,11 +20,25 @@ class StatSpeed : Stat( AttributeModifier.Operation.MULTIPLY_SCALAR_1 ) val instance = player.getAttribute(Attribute.GENERIC_MOVEMENT_SPEED) ?: 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/kotlin/com/willfp/ecoskills/stats/stats/StatStrength.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatStrength.kt index eb92a76..5fb096a 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatStrength.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatStrength.kt @@ -14,6 +14,10 @@ class StatStrength : Stat( fun handle(event: EntityDamageByEntityEvent) { val player = event.damager.tryAsPlayer() ?: return + if (this.config.getStrings("disabled-in-worlds").contains(player.world.name)) { + return + } + var multiplier = this.config.getDouble("percent-more-damage-per-level") * player.getStatLevel(this) multiplier /= 100 multiplier += 1 diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatWisdom.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatWisdom.kt index 3ec9bec..01c345d 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatWisdom.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/stats/stats/StatWisdom.kt @@ -14,6 +14,10 @@ class StatWisdom : Stat( fun handle(event: NaturalExpGainEvent) { val player = event.expChangeEvent.player + if (this.config.getStrings("disabled-in-worlds").contains(player.world.name)) { + return + } + var multiplier = this.config.getDouble("percent-more-xp-gain") * player.getStatLevel(this) multiplier /= 100 multiplier += 1 diff --git a/eco-core/core-plugin/src/main/resources/config.yml b/eco-core/core-plugin/src/main/resources/config.yml index de804d5..f1998e4 100644 --- a/eco-core/core-plugin/src/main/resources/config.yml +++ b/eco-core/core-plugin/src/main/resources/config.yml @@ -272,10 +272,14 @@ skills: stats: defense: name: "&#e884b0🛡 Defense" + # Disabled worlds + disabled-in-worlds: [] # 100% halves the incoming damage percent-less-damage-per-level: 0.25 strength: name: "&#db0000🗡 Strength" + # Disabled worlds + disabled-in-worlds: [] # 100% is double damage percent-more-damage-per-level: 0.25 crit_chance: @@ -284,21 +288,29 @@ stats: chance-per-level: 1 crit_damage: name: "&9☠ Crit Damage" + # Disabled worlds + disabled-in-worlds: [] # The percent more damage to deal on crits for each level. percent-more-damage-per-level: 0.5 # The amount more damage to deal on crits by default. base-percent-more: 50 speed: name: "(ffe6✦ Speed" + # Disabled worlds + disabled-in-worlds: [] # The percent more speed to give for the speed attribute (internal in the game) # for each level percent-faster-per-level: 1 wisdom: name: "*f566✎ Wisdom" + # Disabled worlds + disabled-in-worlds: [] # The percent more xp to gain from orbs for each level of the stat. percent-more-xp-gain: 1 ferocity: name: "b0000⫽ Ferocity" + # Disabled worlds + disabled-in-worlds: [] # The percent chance to deal damage twice chance-per-level: 0.5