diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/effects/Effects.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/effects/Effects.java index 70562a5..68806ca 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/effects/Effects.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/effects/Effects.java @@ -2,29 +2,7 @@ package com.willfp.ecoskills.effects; import com.google.common.collect.ImmutableSet; import com.willfp.eco.core.config.updating.ConfigUpdater; -import com.willfp.ecoskills.effects.effects.EffectAcceleratedEscape; -import com.willfp.ecoskills.effects.effects.EffectBountifulHarvest; -import com.willfp.ecoskills.effects.effects.EffectBravery; -import com.willfp.ecoskills.effects.effects.EffectDynamicMining; -import com.willfp.ecoskills.effects.effects.EffectEndangering; -import com.willfp.ecoskills.effects.effects.EffectInfernalResistance; -import com.willfp.ecoskills.effects.effects.EffectCraftsmanship; -import com.willfp.ecoskills.effects.effects.EffectDazzle; -import com.willfp.ecoskills.effects.effects.EffectDodging; -import com.willfp.ecoskills.effects.effects.EffectEfficientBrewing; -import com.willfp.ecoskills.effects.effects.EffectEyeOfTheDepths; -import com.willfp.ecoskills.effects.effects.EffectGoldenYield; -import com.willfp.ecoskills.effects.effects.EffectMysticResilience; -import com.willfp.ecoskills.effects.effects.EffectPotionmaster; -import com.willfp.ecoskills.effects.effects.EffectReimbursement; -import com.willfp.ecoskills.effects.effects.EffectSatiation; -import com.willfp.ecoskills.effects.effects.EffectSeamlessMovement; -import com.willfp.ecoskills.effects.effects.EffectSecondChance; -import com.willfp.ecoskills.effects.effects.EffectSerratedStrikes; -import com.willfp.ecoskills.effects.effects.EffectShamanism; -import com.willfp.ecoskills.effects.effects.EffectSpelunking; -import com.willfp.ecoskills.effects.effects.EffectStrongImpact; -import com.willfp.ecoskills.effects.effects.EffectVersatileTools; +import com.willfp.ecoskills.effects.effects.*; import org.bukkit.NamespacedKey; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @@ -63,6 +41,7 @@ public class Effects { public static final Effect SPELUNKING = new EffectSpelunking(); public static final Effect DYNAMIC_MINING = new EffectDynamicMining(); public static final Effect REIMBURSEMENT = new EffectReimbursement(); + public static final Effect OVER_COMPENSATION = new EffectOverCompensation(); @ApiStatus.Internal public static void registerNewEffect(@NotNull final Effect effect) { diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/effects/effects/EffectOverCompensation.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/effects/effects/EffectOverCompensation.kt new file mode 100644 index 0000000..42a7247 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/effects/effects/EffectOverCompensation.kt @@ -0,0 +1,41 @@ +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.Bukkit +import org.bukkit.Material +import org.bukkit.event.EventHandler +import org.bukkit.event.EventPriority +import org.bukkit.event.enchantment.EnchantItemEvent +import org.bukkit.inventory.EnchantingInventory +import org.bukkit.inventory.ItemStack + + +class EffectOverCompensation : Effect( + "over_compensation" +) { + override fun formatDescription(string: String, level: Int): String { + return string.replace("%chance%", NumberUtils.format(config.getDouble("chance-per-level") * level)) + } + + @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + fun handleLevelling(event: EnchantItemEvent) { + val player = event.enchanter + val cost = event.whichButton()+1 + + val chance = config.getDouble("chance-per-level") * player.getEffectLevel(this) + + if (NumberUtils.randFloat(0.0, 100.0) < chance) { + Bukkit.getLogger().info("?") + Bukkit.getLogger().info(NumberUtils.randFloat(0.0, 100.0).toString()) + Bukkit.getLogger().info(chance.toString()) + + +// event.isCancelled = true + this.plugin.scheduler.runLater({ + event.inventory.addItem(ItemStack(Material.LAPIS_LAZULI, cost)) + }, 2) + } + } +} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/resources/effects.yml b/eco-core/core-plugin/src/main/resources/effects.yml index b81ed05..75c3aac 100644 --- a/eco-core/core-plugin/src/main/resources/effects.yml +++ b/eco-core/core-plugin/src/main/resources/effects.yml @@ -187,3 +187,8 @@ reimbursement: # The chance to get experience back, as a percentage chance-per-level: 0.5 +over_compensation: + description: "&a%chance%%&8 chance to get Lapis Lazuli back after enchanting" + + # The chance to get experience back, as a percentage + chance-per-level: 0.75 \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/resources/skills/enchanting.yml b/eco-core/core-plugin/src/main/resources/skills/enchanting.yml index f47a380..e9c6f97 100644 --- a/eco-core/core-plugin/src/main/resources/skills/enchanting.yml +++ b/eco-core/core-plugin/src/main/resources/skills/enchanting.yml @@ -17,6 +17,8 @@ gui: - " %ecoskills_second_chance_description%" - "&8» &r&6Reimbursement %ecoskills_reimbursement_numeral%" - " %ecoskills_reimbursement_description%" + - "&8» &r&6Over Compensation %ecoskills_over_compensation_numeral%" + - " %ecoskills_over_compensation_description%" rewards: # The actual rewards to be given @@ -25,26 +27,30 @@ rewards: - "crit_chance::1" - "second_chance::1" - "reimbursement::1" + - "over_compensation::1" # The chat messages to send on level up chat-messages: 1: - - " &8» &r&f+2 %ecoskills_wisdom_name%" - - " &8» &r&f+1 %ecoskills_crit_chance_name%" - - " &8» &r&6Second Chance %ecoskills_second_chance_numeral%" - - " %ecoskills_second_chance_description%" - - " &8» &r&6Reimbursement %ecoskills_reimbursement_numeral%" - - " %ecoskills_reimbursement_description%" + - "&8» &r&f+2 %ecoskills_wisdom_name%" + - "&8» &r&f+1 %ecoskills_crit_chance_name%" + - "&8» &r&6Second Chance %ecoskills_second_chance_numeral%" + - " %ecoskills_second_chance_description%" + - "&8» &r&6Reimbursement %ecoskills_reimbursement_numeral%" + - " %ecoskills_reimbursement_description%" + - "&8» &r&6Over Compensation %ecoskills_over_compensation_numeral%" + - " %ecoskills_over_compensation_description%" # The lore to show in the levels gui progression-lore: 1: - - " &8» &r&f+2 %ecoskills_wisdom_name%" - - " &8» &r&f+1 %ecoskills_crit_chance_name%" - - " &8» &r&6Second Chance %ecoskills_second_chance_numeral%" - - " %ecoskills_second_chance_description%" - - " &8» &r&6Reimbursement %ecoskills_reimbursement_numeral%" - - " %ecoskills_reimbursement_description%" - + - "&8» &r&f+2 %ecoskills_wisdom_name%" + - "&8» &r&f+1 %ecoskills_crit_chance_name%" + - "&8» &r&6Second Chance %ecoskills_second_chance_numeral%" + - " %ecoskills_second_chance_description%" + - "&8» &r&6Reimbursement %ecoskills_reimbursement_numeral%" + - " %ecoskills_reimbursement_description%" + - "&8» &r&6Over Compensation %ecoskills_over_compensation_numeral%" + - " %ecoskills_over_compensation_description%" # The experience to give for each level cost of enchanting xp-per-level: 4 \ No newline at end of file