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:
@@ -117,7 +117,7 @@ public class EcoSkillsPlugin extends EcoPlugin {
|
||||
new StatModifierListener(this),
|
||||
new DataListener(this),
|
||||
new PlayerBlockListener(this),
|
||||
EcoSkillsEventModifierHandler.INSTANCE
|
||||
new EcoSkillsEventModifierHandler(this)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -9,5 +9,4 @@ class DataYml(
|
||||
"data",
|
||||
false,
|
||||
plugin
|
||||
) {
|
||||
}
|
||||
)
|
||||
@@ -9,5 +9,4 @@ class EffectsYml(
|
||||
"effects",
|
||||
true,
|
||||
plugin
|
||||
) {
|
||||
}
|
||||
)
|
||||
@@ -15,5 +15,4 @@ class SkillConfig(
|
||||
"skills/",
|
||||
"rewards.chat-messages",
|
||||
"rewards.progression-lore"
|
||||
) {
|
||||
}
|
||||
)
|
||||
@@ -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()
|
||||
|
||||
@@ -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>()
|
||||
}
|
||||
|
||||
@@ -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!")
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
) {
|
||||
}
|
||||
)
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -4,5 +4,4 @@ import com.willfp.ecoskills.stats.Stat
|
||||
|
||||
class StatCritDamage : Stat(
|
||||
"crit_damage"
|
||||
) {
|
||||
}
|
||||
)
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user