9
0
mirror of https://github.com/Auxilor/EcoSkills.git synced 2026-01-01 21:36:34 +00:00

Lots more codestyle

This commit is contained in:
Auxilor
2021-08-26 15:45:28 +01:00
parent dd2456843f
commit ab4c0fb3fb
28 changed files with 98 additions and 275 deletions

View File

@@ -117,7 +117,7 @@ public class EcoSkillsPlugin extends EcoPlugin {
new StatModifierListener(this),
new DataListener(this),
new PlayerBlockListener(this),
EcoSkillsEventModifierHandler.INSTANCE
new EcoSkillsEventModifierHandler(this)
);
}

View File

@@ -5,12 +5,14 @@ import org.bukkit.event.EventPriority
import org.bukkit.event.Listener
import org.bukkit.event.entity.EntityDamageByEntityEvent
object EcoSkillsEventModifierHandler: Listener {
val critMap: MutableMap<EntityDamageByEntityEvent, Boolean> = HashMap()
private val critMap = mutableMapOf<EntityDamageByEntityEvent, Boolean>()
class EcoSkillsEventModifierHandler(
private val plugin: EcoSkillsPlugin
) : Listener {
@EventHandler(priority = EventPriority.MONITOR)
fun preventLeak(event: EntityDamageByEntityEvent) {
EcoSkillsPlugin.getInstance().scheduler.runLater({
plugin.scheduler.runLater({
critMap.remove(event)
}, 1)
}
@@ -18,8 +20,8 @@ object EcoSkillsEventModifierHandler: Listener {
var EntityDamageByEntityEvent.isCrit: Boolean
get() {
return EcoSkillsEventModifierHandler.critMap[this] ?: false
return critMap[this] ?: false
}
set(isCrit) {
EcoSkillsEventModifierHandler.critMap[this] = isCrit
critMap[this] = isCrit
}

View File

@@ -1,7 +1,5 @@
package com.willfp.ecoskills
import com.willfp.eco.core.integrations.placeholder.PlaceholderEntry
import com.willfp.eco.util.NumberUtils
import com.willfp.ecoskills.api.PlayerSkillExpGainEvent
import com.willfp.ecoskills.api.PlayerSkillLevelUpEvent
import com.willfp.ecoskills.effects.Effect
@@ -12,35 +10,20 @@ import com.willfp.ecoskills.stats.Stat
import com.willfp.ecoskills.stats.Stats
import org.bukkit.Bukkit
import org.bukkit.OfflinePlayer
import org.bukkit.entity.Entity
import org.bukkit.entity.Player
import org.bukkit.entity.Projectile
import org.bukkit.persistence.PersistentDataType
import java.util.*
object PlayerHelper {
init {
PlaceholderEntry(
"average_skill_level",
{ player -> NumberUtils.format(player.getAverageSkillLevel()) },
true
).register()
PlaceholderEntry(
"total_skill_level",
{ player -> player.getTotalSkillLevel().toString() },
true
).register()
}
val expMultiplierCache = HashMap<UUID, Double>()
val plugin: EcoSkillsPlugin = EcoSkillsPlugin.getInstance()
}
val expMultiplierCache = HashMap<UUID, Double>()
val plugin: EcoSkillsPlugin = EcoSkillsPlugin.getInstance()
fun Player.getSkillExperienceMultiplier(): Double {
if (PlayerHelper.expMultiplierCache.containsKey(this.uniqueId)) {
return PlayerHelper.expMultiplierCache[this.uniqueId]!!
if (expMultiplierCache.containsKey(this.uniqueId)) {
return expMultiplierCache[this.uniqueId]!!
}
PlayerHelper.expMultiplierCache[this.uniqueId] = cacheSkillExperienceMultiplier()
expMultiplierCache[this.uniqueId] = cacheSkillExperienceMultiplier()
return this.getSkillExperienceMultiplier()
}
@@ -103,7 +86,7 @@ fun Player.giveSkillExperience(skill: Skill, experience: Double, isOvershoot: Bo
this.setSkillProgress(skill, this.getSkillProgress(skill) + exp)
if (this.getSkillProgress(skill) >= skill.getExpForLevel(level + 1) && level + 1 <= skill.maxLevel) {
val overshoot = this.getSkillProgress(skill) - skill.getExpForLevel(level + 1);
val overshoot = this.getSkillProgress(skill) - skill.getExpForLevel(level + 1)
this.setSkillProgress(skill, 0.0)
this.setSkillLevel(skill, level + 1)
val levelUpEvent = PlayerSkillLevelUpEvent(this, skill, level + 1)
@@ -113,11 +96,11 @@ fun Player.giveSkillExperience(skill: Skill, experience: Double, isOvershoot: Bo
}
fun OfflinePlayer.getSkillLevel(skill: Skill): Int {
return PlayerHelper.plugin.dataYml.getInt("player.${this.uniqueId}.${skill.id}", 0)
return plugin.dataYml.getInt("player.${this.uniqueId}.${skill.id}", 0)
}
fun Player.setSkillLevel(skill: Skill, level: Int) {
PlayerHelper.plugin.dataYml.set("player.${this.uniqueId}.${skill.id}", level)
plugin.dataYml.set("player.${this.uniqueId}.${skill.id}", level)
}
fun Player.getSkillProgressToNextLevel(skill: Skill): Double {
@@ -137,30 +120,41 @@ fun Player.setSkillProgress(skill: Skill, level: Double) {
}
fun OfflinePlayer.getEffectLevel(effect: Effect): Int {
return PlayerHelper.plugin.dataYml.getInt("player.${this.uniqueId}.${effect.id}", 0)
return plugin.dataYml.getInt("player.${this.uniqueId}.${effect.id}", 0)
}
fun Player.setEffectLevel(effect: Effect, level: Int) {
PlayerHelper.plugin.dataYml.set("player.${this.uniqueId}.${effect.id}", level)
plugin.dataYml.set("player.${this.uniqueId}.${effect.id}", level)
}
fun OfflinePlayer.getStatLevel(stat: Stat): Int {
return PlayerHelper.plugin.dataYml.getInt("player.${this.uniqueId}.${stat.id}", 0)
return plugin.dataYml.getInt("player.${this.uniqueId}.${stat.id}", 0)
}
fun Player.setStatLevel(stat: Stat, level: Int) {
PlayerHelper.plugin.dataYml.set("player.${this.uniqueId}.${stat.id}", level)
plugin.dataYml.set("player.${this.uniqueId}.${stat.id}", level)
stat.updateStatLevel(this)
}
fun Player.convertPersistentToYml() {
for (effect in Effects.values()) {
PlayerHelper.plugin.dataYml.set("player.${this.uniqueId}.${effect.id}", this.getEffectLevel(effect))
plugin.dataYml.set("player.${this.uniqueId}.${effect.id}", this.getEffectLevel(effect))
}
for (stat in Stats.values()) {
PlayerHelper.plugin.dataYml.set("player.${this.uniqueId}.${stat.id}", this.getStatLevel(stat))
plugin.dataYml.set("player.${this.uniqueId}.${stat.id}", this.getStatLevel(stat))
}
for (skill in Skills.values()) {
PlayerHelper.plugin.dataYml.set("player.${this.uniqueId}.${skill.id}", this.getSkillLevel(skill))
plugin.dataYml.set("player.${this.uniqueId}.${skill.id}", this.getSkillLevel(skill))
}
}
fun Entity.tryAsPlayer(): Player? {
return when(this) {
is Projectile -> {
val shooter = this.shooter
if (shooter is Player) shooter else null
}
is Player -> this
else -> null
}
}

View File

@@ -50,7 +50,7 @@ class CommandTop(plugin: EcoPlugin) :
val messages = plugin.langYml.getStrings("top", false)
val lines = mutableListOf<String>()
val useDisplayName = plugin.configYml.getBool("commands.top.use-display-name");
val useDisplayName = plugin.configYml.getBool("commands.top.use-display-name")
var rank = start + 1

View File

@@ -9,5 +9,4 @@ class DataYml(
"data",
false,
plugin
) {
}
)

View File

@@ -9,5 +9,4 @@ class EffectsYml(
"effects",
true,
plugin
) {
}
)

View File

@@ -15,5 +15,4 @@ class SkillConfig(
"skills/",
"rewards.chat-messages",
"rewards.progression-lore"
) {
}
)

View File

@@ -1,21 +1,15 @@
package com.willfp.ecoskills.data
import com.willfp.ecoskills.EcoSkillsPlugin
import com.willfp.ecoskills.convertPersistentToYml
import com.willfp.ecoskills.effects.Effect
import com.willfp.ecoskills.effects.Effects
import com.willfp.ecoskills.getSkillLevel
import com.willfp.ecoskills.setEffectLevel
import com.willfp.ecoskills.skills.Skills
import org.bukkit.Bukkit
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.player.PlayerJoinEvent
import java.net.http.WebSocket
class DataListener(
private val plugin: EcoSkillsPlugin
): Listener {
class DataListener: Listener {
@EventHandler
fun onJoin(event: PlayerJoinEvent) {
event.player.convertPersistentToYml()

View File

@@ -1,13 +1,10 @@
package com.willfp.ecoskills.data
import com.willfp.ecoskills.EcoSkillsPlugin
import com.willfp.ecoskills.getTotalSkillLevel
import org.bukkit.Bukkit
import org.bukkit.OfflinePlayer
class LeaderboardHandler (
private val plugin: EcoSkillsPlugin
) {
class LeaderboardHandler {
companion object {
val sortedLeaderboard = mutableListOf<OfflinePlayer>()
}

View File

@@ -1,11 +1,8 @@
package com.willfp.ecoskills.data
import com.willfp.eco.core.EcoPlugin
import com.willfp.ecoskills.EcoSkillsPlugin
import com.willfp.ecoskills.PlayerHelper
import com.willfp.ecoskills.getTotalSkillLevel
import com.willfp.ecoskills.expMultiplierCache
import org.bukkit.Bukkit
import org.bukkit.OfflinePlayer
class SaveHandler {
companion object {
@@ -17,7 +14,7 @@ class SaveHandler {
plugin.logger.info("Auto-Saving player data!")
}
plugin.dataYml.save()
PlayerHelper.expMultiplierCache.clear()
expMultiplierCache.clear()
if (plugin.configYml.getBool("log-autosaves")) {
plugin.logger.info("Saved data!")
}

View File

@@ -1,6 +1,5 @@
package com.willfp.ecoskills.effects
import com.willfp.eco.core.EcoPlugin
import com.willfp.eco.core.config.interfaces.Config
import com.willfp.eco.core.integrations.placeholder.PlaceholderEntry
import com.willfp.eco.util.NumberUtils
@@ -10,7 +9,6 @@ import com.willfp.ecoskills.SkillObject
import com.willfp.ecoskills.getEffectLevel
import org.bukkit.NamespacedKey
import org.bukkit.event.Listener
import java.util.*
abstract class Effect(
id: String
@@ -18,13 +16,11 @@ abstract class Effect(
protected val plugin: EcoSkillsPlugin = EcoSkillsPlugin.getInstance()
val key: NamespacedKey
val uuid: UUID
val config: Config
init {
update()
key = plugin.namespacedKeyFactory.create(id)
uuid = UUID.nameUUIDFromBytes(id.toByteArray())
config = plugin.effectsYml.getSubsection(id)
Effects.registerNewEffect(this)

View File

@@ -1,19 +1,16 @@
package com.willfp.ecoskills.effects.effects
import com.willfp.eco.core.scheduling.RunnableTask
import com.willfp.eco.util.NumberUtils
import com.willfp.ecoskills.effects.Effect
import com.willfp.ecoskills.getEffectLevel
import com.willfp.ecoskills.tryAsPlayer
import org.bukkit.entity.LivingEntity
import org.bukkit.entity.Player
import org.bukkit.entity.Projectile
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.entity.EntityDamageByEntityEvent
import org.bukkit.potion.PotionEffect
import org.bukkit.potion.PotionEffectType
import org.bukkit.util.Vector
import java.util.concurrent.atomic.AtomicInteger
class EffectDazzle : Effect(
@@ -26,25 +23,8 @@ class EffectDazzle : Effect(
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
fun handle(event: EntityDamageByEntityEvent) {
var player = event.damager
if (player is Projectile) {
if (player.shooter !is Player) {
return
} else {
player = player.shooter as Player
}
}
if (player !is Player) {
return
}
val victim = event.entity
if (victim !is LivingEntity) {
return
}
val player = event.damager.tryAsPlayer() ?: return
val victim = if (event.entity is LivingEntity) event.entity as LivingEntity else return
val level = player.getEffectLevel(this)
@@ -54,7 +34,7 @@ class EffectDazzle : Effect(
val duration = (config.getInt("ticks-per-level") * level) + config.getInt("base-ticks")
victim.setVelocity(Vector(0, 0, 0))
victim.velocity = Vector(0, 0, 0)
victim.addPotionEffect(PotionEffect(PotionEffectType.CONFUSION, duration, level))
}
}

View File

@@ -3,9 +3,8 @@ package com.willfp.ecoskills.effects.effects
import com.willfp.eco.util.NumberUtils
import com.willfp.ecoskills.effects.Effect
import com.willfp.ecoskills.getEffectLevel
import com.willfp.ecoskills.tryAsPlayer
import org.bukkit.entity.LivingEntity
import org.bukkit.entity.Player
import org.bukkit.entity.Projectile
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.entity.EntityDamageByEntityEvent
@@ -20,24 +19,8 @@ class EffectEndangering : Effect(
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
fun handle(event: EntityDamageByEntityEvent) {
var player = event.damager
val victim = event.entity
if (victim !is LivingEntity) {
return
}
if (player is Projectile) {
if (player.shooter !is Player) {
return
} else {
player = player.shooter as Player
}
}
if (player !is Player) {
return
}
val player = event.damager.tryAsPlayer() ?: return
val victim = if (event.entity is LivingEntity) event.entity as LivingEntity else return
val level = player.getEffectLevel(this)

View File

@@ -3,12 +3,10 @@ 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

View File

@@ -27,18 +27,7 @@ class EffectPotionmaster : Effect(
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
fun handle(event: BrewEvent) {
var player: Player? = null
for (viewer in event.contents.viewers) {
if (viewer is Player) {
player = viewer
break
}
}
if (player == null) {
return
}
val player = event.contents.viewers.filterIsInstance<Player>().firstOrNull() ?: return
if (player.getEffectLevel(this) == 0) {
return
@@ -48,11 +37,7 @@ class EffectPotionmaster : Effect(
this.plugin.scheduler.runLater({
for (i in 0..2) {
val item = event.contents.getItem(i)
if (item == null) {
continue
}
val item = event.contents.getItem(i) ?: continue
val meta = item.itemMeta

View File

@@ -3,12 +3,9 @@ package com.willfp.ecoskills.effects.effects
import com.willfp.eco.util.NumberUtils
import com.willfp.ecoskills.effects.Effect
import com.willfp.ecoskills.getEffectLevel
import com.willfp.ecoskills.giveSkillExperience
import org.bukkit.entity.Player
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.enchantment.EnchantItemEvent
import org.bukkit.event.entity.EntityDamageEvent
class EffectReimbursement : Effect(
"reimbursement"

View File

@@ -4,13 +4,11 @@ import com.willfp.eco.core.scheduling.RunnableTask
import com.willfp.eco.util.NumberUtils
import com.willfp.ecoskills.effects.Effect
import com.willfp.ecoskills.getEffectLevel
import com.willfp.ecoskills.tryAsPlayer
import org.bukkit.entity.LivingEntity
import org.bukkit.entity.Player
import org.bukkit.entity.Projectile
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.entity.EntityDamageByEntityEvent
import java.util.concurrent.atomic.AtomicInteger
class EffectSerratedStrikes : Effect(
@@ -22,24 +20,8 @@ class EffectSerratedStrikes : Effect(
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
fun handle(event: EntityDamageByEntityEvent) {
var player = event.damager
if (player is Projectile) {
if (player.shooter !is Player) {
return
} else {
player = player.shooter as Player
}
}
if (player !is Player) {
return
}
val victim = event.entity
if (victim !is LivingEntity) {
return
}
val player = event.damager.tryAsPlayer() ?: return
val victim = if (event.entity is LivingEntity) event.entity as LivingEntity else return
val level = player.getEffectLevel(this)

View File

@@ -1,16 +1,12 @@
package com.willfp.ecoskills.effects.effects
import com.willfp.eco.core.scheduling.RunnableTask
import com.willfp.eco.util.NumberUtils
import com.willfp.ecoskills.effects.Effect
import com.willfp.ecoskills.getEffectLevel
import org.bukkit.entity.LivingEntity
import org.bukkit.entity.Player
import org.bukkit.entity.Projectile
import com.willfp.ecoskills.tryAsPlayer
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.entity.EntityDamageByEntityEvent
import java.util.concurrent.atomic.AtomicInteger
class EffectStrongImpact : Effect(
@@ -22,19 +18,7 @@ class EffectStrongImpact : Effect(
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
fun handle(event: EntityDamageByEntityEvent) {
var player = event.damager
if (player is Projectile) {
if (player.shooter !is Player) {
return
} else {
player = player.shooter as Player
}
}
if (player !is Player) {
return
}
val player = event.damager.tryAsPlayer() ?: return
val level = player.getEffectLevel(this)

View File

@@ -5,12 +5,10 @@ import com.willfp.eco.core.config.interfaces.Config
import com.willfp.eco.core.integrations.placeholder.PlaceholderEntry
import com.willfp.eco.util.NumberUtils
import com.willfp.eco.util.StringUtils
import com.willfp.ecoskills.EcoSkillsPlugin
import com.willfp.ecoskills.SkillObject
import com.willfp.ecoskills.*
import com.willfp.ecoskills.config.SkillConfig
import com.willfp.ecoskills.effects.Effect
import com.willfp.ecoskills.effects.Effects
import com.willfp.ecoskills.getSkillLevel
import com.willfp.ecoskills.stats.Stats
import org.bukkit.NamespacedKey
import org.bukkit.entity.Player
@@ -68,6 +66,18 @@ abstract class Skill(
true
).register()
PlaceholderEntry(
"average_skill_level",
{ player -> NumberUtils.format(player.getAverageSkillLevel()) },
true
).register()
PlaceholderEntry(
"total_skill_level",
{ player -> player.getTotalSkillLevel().toString() },
true
).register()
postUpdate()
guiLoreCache.clear()

View File

@@ -1,6 +1,5 @@
package com.willfp.ecoskills.skills
import com.willfp.eco.core.EcoPlugin
import com.willfp.ecoskills.api.PlayerSkillLevelUpEvent
import com.willfp.ecoskills.effects.Effect
import com.willfp.ecoskills.getEffectLevel
@@ -12,9 +11,7 @@ import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.Listener
class SkillLevellingListener(
private val plugin: EcoPlugin
) : Listener {
class SkillLevellingListener : Listener {
@EventHandler(priority = EventPriority.HIGHEST)
fun onLevelUp(event: PlayerSkillLevelUpEvent) {
val player = event.player
@@ -22,11 +19,16 @@ class SkillLevellingListener(
val to = event.level
for (reward in skill.getLevelUpRewards()) {
if (reward.obj is Effect) {
player.setEffectLevel(reward.obj, player.getEffectLevel(reward.obj) + skill.getLevelUpReward(reward.obj, to))
}
if (reward.obj is Stat) {
player.setStatLevel(reward.obj, player.getStatLevel(reward.obj) + skill.getLevelUpReward(reward.obj, to))
val obj = reward.obj
val toGive = skill.getLevelUpReward(obj, to)
when (obj) {
is Effect -> {
player.setEffectLevel(obj, player.getEffectLevel(obj) + toGive)
}
is Stat -> {
player.setStatLevel(obj, player.getStatLevel(obj) + toGive)
}
}
}
}

View File

@@ -2,8 +2,7 @@ package com.willfp.ecoskills.skills
import com.willfp.ecoskills.SkillObject
data class SkillObjectReward(
data class SkillObjectReward (
val obj: SkillObject,
val options: SkillObjectOptions
) {
}
)

View File

@@ -31,24 +31,13 @@ class SkillAlchemy : Skill(
@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 player = event.contents.viewers.filterIsInstance<Player>().firstOrNull() ?: return
if (player.gameMode == GameMode.CREATIVE || player.gameMode == GameMode.SPECTATOR) {
return
}
var mult = 0;
var mult = 0
for (i in 0..2) {
if (event.contents.getItem(i)?.itemMeta is PotionMeta) {

View File

@@ -3,10 +3,9 @@ package com.willfp.ecoskills.skills.skills
import com.willfp.eco.core.events.EntityDeathByEntityEvent
import com.willfp.ecoskills.giveSkillExperience
import com.willfp.ecoskills.skills.Skill
import com.willfp.ecoskills.tryAsPlayer
import org.bukkit.GameMode
import org.bukkit.attribute.Attribute
import org.bukkit.entity.Player
import org.bukkit.entity.Projectile
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
@@ -15,19 +14,7 @@ class SkillCombat : Skill(
) {
@EventHandler(priority = EventPriority.HIGH)
fun handleLevelling(event: EntityDeathByEntityEvent) {
var player = event.killer
if (player is Projectile) {
if (player.shooter !is Player) {
return
} else {
player = player.shooter as Player
}
}
if (player !is Player) {
return
}
val player = event.killer.tryAsPlayer() ?: return
if (player.gameMode == GameMode.CREATIVE || player.gameMode == GameMode.SPECTATOR) {
return

View File

@@ -1,6 +1,5 @@
package com.willfp.ecoskills.stats.modifier
import com.willfp.eco.core.EcoPlugin
import com.willfp.eco.core.events.ArmorChangeEvent
import com.willfp.ecoskills.addStatModifier
import com.willfp.ecoskills.getStatModifiers
@@ -12,9 +11,7 @@ import org.bukkit.event.player.PlayerItemHeldEvent
import org.bukkit.event.player.PlayerSwapHandItemsEvent
import org.bukkit.inventory.EquipmentSlot
class StatModifierListener(
private val plugin: EcoPlugin
): Listener {
class StatModifierListener : Listener {
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
fun onHold(event: PlayerItemHeldEvent) {
val player = event.player

View File

@@ -5,8 +5,7 @@ import com.willfp.ecoskills.getStatLevel
import com.willfp.ecoskills.isCrit
import com.willfp.ecoskills.stats.Stat
import com.willfp.ecoskills.stats.Stats
import org.bukkit.entity.Player
import org.bukkit.entity.Projectile
import com.willfp.ecoskills.tryAsPlayer
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.entity.EntityDamageByEntityEvent
@@ -16,19 +15,7 @@ class StatCritChance : Stat(
) {
@EventHandler(priority = EventPriority.LOW)
fun handle(event: EntityDamageByEntityEvent) {
var player = event.damager
if (player is Projectile) {
if (player.shooter !is Player) {
return
} else {
player = player.shooter as Player
}
}
if (player !is Player) {
return
}
val player = event.damager.tryAsPlayer() ?: return
if (NumberUtils.randFloat(0.0, 100.0) >= (this.config.getDouble("chance-per-level") * player.getStatLevel(this))) {
return

View File

@@ -4,5 +4,4 @@ import com.willfp.ecoskills.stats.Stat
class StatCritDamage : Stat(
"crit_damage"
) {
}
)

View File

@@ -2,12 +2,9 @@ package com.willfp.ecoskills.stats.stats
import com.willfp.eco.util.NumberUtils
import com.willfp.ecoskills.getStatLevel
import com.willfp.ecoskills.isCrit
import com.willfp.ecoskills.stats.Stat
import com.willfp.ecoskills.stats.Stats
import com.willfp.ecoskills.tryAsPlayer
import org.bukkit.entity.LivingEntity
import org.bukkit.entity.Player
import org.bukkit.entity.Projectile
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.entity.EntityDamageByEntityEvent
@@ -17,30 +14,13 @@ class StatFerocity : Stat(
) {
@EventHandler(priority = EventPriority.LOW)
fun handle(event: EntityDamageByEntityEvent) {
var player = event.damager
val victim = event.entity
val entity = event.damager
val player = event.damager.tryAsPlayer() ?: return
val victim = if (event.entity is LivingEntity) event.entity as LivingEntity else return
if (victim.hasMetadata("ferocity")) {
return
}
if (victim !is LivingEntity) {
return
}
if (player is Projectile) {
if (player.shooter !is Player) {
return
} else {
player = player.shooter as Player
}
}
if (player !is Player) {
return
}
val level = player.getStatLevel(this)
if (NumberUtils.randFloat(0.0, 100.0) >= this.config.getDouble("chance-per-level") * level) {
@@ -50,7 +30,7 @@ class StatFerocity : Stat(
this.plugin.run {
victim.setMetadata("ferocity", plugin.metadataValueFactory.create(true))
victim.noDamageTicks = 0
victim.damage(event.damage, entity)
victim.damage(event.damage, player)
}
}
}

View File

@@ -2,8 +2,7 @@ package com.willfp.ecoskills.stats.stats
import com.willfp.ecoskills.getStatLevel
import com.willfp.ecoskills.stats.Stat
import org.bukkit.entity.Player
import org.bukkit.entity.Projectile
import com.willfp.ecoskills.tryAsPlayer
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.entity.EntityDamageByEntityEvent
@@ -13,19 +12,7 @@ class StatStrength : Stat(
) {
@EventHandler(priority = EventPriority.LOW)
fun handle(event: EntityDamageByEntityEvent) {
var player = event.damager
if (player is Projectile) {
if (player.shooter !is Player) {
return
} else {
player = player.shooter as Player
}
}
if (player !is Player) {
return
}
val player = event.damager.tryAsPlayer() ?: return
var multiplier = this.config.getDouble("percent-more-damage-per-level") * player.getStatLevel(this)
multiplier /= 100