diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/effects/effects/EffectSecondChance.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/effects/effects/EffectSecondChance.kt index 96a0960..8baac0a 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/effects/effects/EffectSecondChance.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/effects/effects/EffectSecondChance.kt @@ -1,8 +1,37 @@ package com.willfp.ecoskills.effects.effects +import com.willfp.eco.util.NumberUtils import com.willfp.ecoskills.effects.Effect +import com.willfp.ecoskills.getEffectLevel +import org.bukkit.event.EventHandler +import org.bukkit.event.EventPriority +import org.bukkit.event.player.PlayerItemDamageEvent +import org.bukkit.inventory.meta.Damageable class EffectSecondChance: Effect( "second_chance" ) { + @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + fun handle(event: PlayerItemDamageEvent) { + val player = event.player + val item = event.item + val meta = item.itemMeta + + if (meta !is Damageable) { + return + } + + if (item.type.maxDurability - meta.damage > this.config.getInt("below-durability-check")) { + return + } + + val level = player.getEffectLevel(this) + + if (NumberUtils.randFloat(0.0, 100.0) < config.getDouble("chance-per-level") * level) { + meta.damage = 0 + event.isCancelled = true + } + + item.itemMeta = meta + } } \ No newline at end of file