diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/skills/Skills.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/skills/Skills.java index 18a3275..799dfc8 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/skills/Skills.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/skills/Skills.java @@ -4,6 +4,7 @@ import com.google.common.collect.ImmutableSet; import com.willfp.eco.core.config.updating.ConfigUpdater; import com.willfp.ecoskills.skills.skills.SkillCombat; import com.willfp.ecoskills.skills.skills.SkillEnchanting; +import com.willfp.ecoskills.skills.skills.SkillFarming; import com.willfp.ecoskills.skills.skills.SkillMining; import org.bukkit.NamespacedKey; import org.jetbrains.annotations.ApiStatus; @@ -23,8 +24,8 @@ public class Skills { public static final Skill MINING = new SkillMining(); public static final Skill COMBAT = new SkillCombat(); public static final Skill ENCHANTING = new SkillEnchanting(); + public static final Skill FARMING = new SkillFarming(); /* - public static final Skill FARMING = new Skill(PLUGIN, "farming"); public static final Skill WOODCUTTING = new Skill(PLUGIN, "woodcutting"); public static final Skill FISHING = new Skill(PLUGIN, "fishing"); public static final Skill ALCHEMY = new Skill(PLUGIN, "alchemy"); diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/skills/skills/SkillFarming.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/skills/skills/SkillFarming.kt new file mode 100644 index 0000000..f921455 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/skills/skills/SkillFarming.kt @@ -0,0 +1,51 @@ +package com.willfp.ecoskills.skills.skills + +import com.willfp.ecoskills.api.PlayerSkillExpGainEvent +import com.willfp.ecoskills.skills.Skill +import org.bukkit.Bukkit +import org.bukkit.Material +import org.bukkit.block.data.Ageable +import org.bukkit.enchantments.Enchantment +import org.bukkit.event.EventHandler +import org.bukkit.event.EventPriority +import org.bukkit.event.block.BlockBreakEvent +import java.util.* + +class SkillFarming : Skill( + "farming" +) { + private val rewards: MutableMap + + init { + rewards = EnumMap(org.bukkit.Material::class.java) + } + + override fun postUpdate() { + rewards.clear() + for (string in this.config.getStrings("xp-rewards", false)) { + val split = string.split(":") + val material = Material.getMaterial(split[0].uppercase()) ?: continue + rewards[material] = split[1].toDouble() + } + } + + @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH) + fun handleLevelling(event: BlockBreakEvent) { + val type = event.block.type + val player = event.player + + if (event.block.blockData !is Ageable) { + return + } + + val data = event.block.blockData as Ageable + if (data.age < data.maximumAge) { + return + } + + val toGive = rewards[type] ?: return + + val gainEvent = PlayerSkillExpGainEvent(player, this, toGive) + Bukkit.getPluginManager().callEvent(gainEvent) + } +} \ 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 80b851f..7255b57 100644 --- a/eco-core/core-plugin/src/main/resources/config.yml +++ b/eco-core/core-plugin/src/main/resources/config.yml @@ -229,6 +229,31 @@ skills: gui-item: golden_hoe # The maximum obtainable level max-level: 50 + + # The level/skill increases to give on levelup + level-up-rewards: + - "speed:1" + - "wisdom:1" + - "bountiful_harvest:1" + + rewards-messages: + - " &f+1 %ecoskills_speed_name%" + - " &f+1 %ecoskills_wisdom_name%" + - " &6Bountiful Harvest %ecoskills_harvest_numeral%" + + # The xp rewards for each crop type + # Specify with type:xp + xp-rewards: + - "wheat:4" + - "potato:4" + - "carrots:4" + - "melon:4" + - "pumpkin:4.5" + - "cactus:2" + - "sugar_cane:2" + - "brown_mushroom:6" + - "red_mushroom:6" + - "cocoa_beans:3" woodcutting: gui-position: row: 3