9
0
mirror of https://github.com/Auxilor/EcoSkills.git synced 2026-01-02 22:02:19 +00:00

Added alchemy, armory, and fishing

This commit is contained in:
Auxilor
2021-08-20 18:44:51 +01:00
parent 0581d9c8c1
commit 59f8e0f2b6
5 changed files with 140 additions and 5 deletions

View File

@@ -2,11 +2,13 @@ package com.willfp.ecoskills.skills;
import com.google.common.collect.ImmutableSet;
import com.willfp.eco.core.config.updating.ConfigUpdater;
import com.willfp.ecoskills.skills.skills.SkillAlchemy;
import com.willfp.ecoskills.skills.skills.SkillArmory;
import com.willfp.ecoskills.skills.skills.SkillCombat;
import com.willfp.ecoskills.skills.skills.SkillEnchanting;
import com.willfp.ecoskills.skills.skills.SkillExploration;
import com.willfp.ecoskills.skills.skills.SkillFarming;
import com.willfp.ecoskills.skills.skills.SkillFishing;
import com.willfp.ecoskills.skills.skills.SkillMining;
import com.willfp.ecoskills.skills.skills.SkillWoodcutting;
import org.bukkit.NamespacedKey;
@@ -31,10 +33,8 @@ public class Skills {
public static final Skill WOODCUTTING = new SkillWoodcutting();
public static final Skill EXPLORATION = new SkillExploration();
public static final Skill ARMORY = new SkillArmory();
/*
public static final Skill FISHING = new Skill(PLUGIN, "fishing");
public static final Skill ALCHEMY = new Skill(PLUGIN, "alchemy");
*/
public static final Skill FISHING = new SkillFishing();
public static final Skill ALCHEMY = new SkillAlchemy();
@ApiStatus.Internal
public static void registerNewSkill(@NotNull final Skill skill) {

View File

@@ -0,0 +1,60 @@
package com.willfp.ecoskills.skills.skills
import com.willfp.eco.core.events.EntityDeathByEntityEvent
import com.willfp.ecoskills.api.PlayerSkillExpGainEvent
import com.willfp.ecoskills.getStatLevel
import com.willfp.ecoskills.skills.Skill
import org.bukkit.Bukkit
import org.bukkit.Material
import org.bukkit.attribute.Attribute
import org.bukkit.enchantments.Enchantment
import org.bukkit.entity.Player
import org.bukkit.entity.Projectile
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.block.BlockBreakEvent
import org.bukkit.event.enchantment.EnchantItemEvent
import org.bukkit.event.entity.EntityDamageByEntityEvent
import org.bukkit.event.inventory.BrewEvent
import java.util.*
class SkillAlchemy : Skill(
"alchemy"
) {
private val rewards: MutableMap<Material, Double>
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(priority = EventPriority.HIGH, ignoreCancelled = true)
fun handleLevelling(event: BrewEvent) {
var player: Player? = null
for (viewer in event.contents.viewers) {
if (viewer is Player) {
player = viewer
break
}
}
if (player == null) {
return
}
val type = event.contents.ingredient?.type ?: return
val toGive = rewards[type] ?: return
val gainEvent = PlayerSkillExpGainEvent(player, this, toGive)
Bukkit.getPluginManager().callEvent(gainEvent)
}
}

View File

@@ -13,7 +13,7 @@ import java.util.*
class SkillArmory : Skill(
"armory"
) {
@EventHandler(priority = EventPriority.HIGH)
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
fun handleLevelling(event: EntityDamageByEntityEvent) {
val player = event.entity
if (player !is Player) {

View File

@@ -0,0 +1,30 @@
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.attribute.Attribute
import org.bukkit.entity.Player
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.entity.EntityDamageByEntityEvent
import org.bukkit.event.player.PlayerFishEvent
import java.util.*
class SkillFishing : Skill(
"fishing"
) {
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
fun handleLevelling(event: PlayerFishEvent) {
val player = event.player
val expToDrop = event.expToDrop
if (player !is Player) {
return
}
val xp = expToDrop * this.config.getDouble("xp-per-experience-dropped")
val gainEvent = PlayerSkillExpGainEvent(player, this, xp)
Bukkit.getPluginManager().callEvent(gainEvent)
}
}

View File

@@ -291,6 +291,20 @@ skills:
gui-item: fishing_rod
# The maximum obtainable level
max-level: 50
# The experience to give for each in-game experience dropped
xp-per-experience-dropped: 3.5
# The level/skill increases to give on levelup
level-up-rewards:
- "defense:1"
- "wisdom:1"
- "eye_of_the_depths:1"
rewards-messages:
- " &f+1 %ecoskills_defense_name%"
- " &f+1 %ecoskills_wisdom_name%"
- " &6Eye Of The Depths %ecoskills_eye_of_the_depths_numeral%"
alchemy:
gui-position:
row: 4
@@ -299,6 +313,37 @@ skills:
gui-item: brewing_stand
# The maximum obtainable level
max-level: 50
# The level/skill increases to give on levelup
level-up-rewards:
- "wisdom:1"
- "speed:1"
- "potionmaster:1"
rewards-messages:
- " &f+1 %ecoskills_wisdom_name%"
- " &f+1 %ecoskills_speed_name%"
- " &6Potionmaster %ecoskills_potionmaster_numeral%"
# The experience to give for each brewing ingredient
xp-rewards:
- "nether_wart:6"
- "redstone:6"
- "glowstone_dust:6"
- "fermented_spider_eye:6"
- "gunpowder:6"
- "dragon_breath:42"
- "sugar:14"
- "rabbit_foot:22"
- "glistering_melon_slice:22"
- "spider_eye:8"
- "pufferfish:14"
- "magma_cream:12"
- "golden_carrot:22"
- "blaze_powder:12"
- "ghast_tear:12"
- "turtle_shell:80"
- "phantom_membrane:34"
armory:
gui-position:
row: 4