mirror of
https://github.com/Auxilor/EcoSkills.git
synced 2026-01-03 14:22:17 +00:00
I need to recode this plugin
This commit is contained in:
@@ -6,6 +6,7 @@ import com.willfp.ecoskills.api.modifier.ItemStatModifier
|
||||
import com.willfp.ecoskills.api.modifier.ModifierOperation
|
||||
import com.willfp.ecoskills.api.modifier.PlayerStatModifier
|
||||
import com.willfp.ecoskills.api.modifier.StatModifier
|
||||
import com.willfp.ecoskills.stats.Stat
|
||||
import com.willfp.ecoskills.stats.Stats
|
||||
import org.bukkit.NamespacedKey
|
||||
import org.bukkit.entity.Player
|
||||
@@ -135,7 +136,8 @@ private fun getModifiersTag(player: Player): MutableMap<String, Any> {
|
||||
return modifierCache.get(player)
|
||||
}
|
||||
|
||||
fun Player.addStatModifier(modifier: StatModifier) {
|
||||
@JvmOverloads
|
||||
fun Player.addStatModifier(modifier: StatModifier, shouldUpdate: Boolean = true) {
|
||||
val modifiers = getModifiersTag(this)
|
||||
|
||||
modifiers[modifier.key.toString()] = mapOf(
|
||||
@@ -146,21 +148,31 @@ fun Player.addStatModifier(modifier: StatModifier) {
|
||||
|
||||
this.applyModifiers(modifiers)
|
||||
|
||||
for (stat in Stats.values()) {
|
||||
stat.updateStatLevel(this)
|
||||
if (shouldUpdate) {
|
||||
modifier.stat.updateStatLevel(this)
|
||||
}
|
||||
}
|
||||
|
||||
fun Player.removeStatModifier(key: NamespacedKey) {
|
||||
@JvmOverloads
|
||||
fun Player.removeStatModifier(key: NamespacedKey, shouldUpdate: Boolean = true): Stat? {
|
||||
val modifiers = getModifiersTag(this)
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
val stat = Stats.getByID(
|
||||
(modifiers[key.toString()]
|
||||
as? MutableMap<String, Any>)
|
||||
?.get(META_STAT_KEY) as? String ?: ""
|
||||
)
|
||||
|
||||
modifiers.remove(key.toString())
|
||||
|
||||
this.applyModifiers(modifiers)
|
||||
|
||||
for (stat in Stats.values()) {
|
||||
stat.updateStatLevel(this)
|
||||
if (shouldUpdate) {
|
||||
stat?.updateStatLevel(this)
|
||||
}
|
||||
|
||||
return stat
|
||||
}
|
||||
|
||||
fun Player.getStatModifierKeys(): MutableSet<NamespacedKey> {
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
package com.willfp.ecoskills.libreforge
|
||||
|
||||
import com.willfp.eco.core.config.interfaces.Config
|
||||
import com.willfp.ecoskills.EcoSkillsPlugin
|
||||
import com.willfp.ecoskills.addStatModifier
|
||||
import com.willfp.ecoskills.api.EcoSkillsAPI
|
||||
import com.willfp.ecoskills.api.modifier.PlayerStatModifier
|
||||
import com.willfp.ecoskills.removeStatModifier
|
||||
import com.willfp.ecoskills.stats.Stats
|
||||
import com.willfp.libreforge.NoCompileData
|
||||
import com.willfp.libreforge.ProvidedHolder
|
||||
@@ -17,21 +20,29 @@ object EffectAddStat : Effect<NoCompileData>("add_stat") {
|
||||
require("amount", "You must specify the amount to add/remove!")
|
||||
}
|
||||
|
||||
override fun onEnable(player: Player, config: Config, identifiers: Identifiers, holder: ProvidedHolder, compileData: NoCompileData) {
|
||||
EcoSkillsAPI.getInstance().addStatModifier(
|
||||
player,
|
||||
override fun onEnable(
|
||||
player: Player,
|
||||
config: Config,
|
||||
identifiers: Identifiers,
|
||||
holder: ProvidedHolder,
|
||||
compileData: NoCompileData
|
||||
) {
|
||||
val stat = Stats.getByID(config.getString("stat")) ?: return
|
||||
|
||||
player.addStatModifier(
|
||||
PlayerStatModifier(
|
||||
identifiers.key,
|
||||
Stats.getByID(config.getString("stat")) ?: return,
|
||||
stat,
|
||||
config.getIntFromExpression("amount", player)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun onDisable(player: Player, identifiers: Identifiers, holder: ProvidedHolder) {
|
||||
EcoSkillsAPI.getInstance().removeStatModifier(
|
||||
player,
|
||||
identifiers.key
|
||||
)
|
||||
val stat = player.removeStatModifier(identifiers.key, shouldUpdate = false)
|
||||
|
||||
EcoSkillsPlugin.getInstance().run {
|
||||
stat?.updateStatLevel(player)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,10 +35,7 @@ class StatAttackSpeed : Stat(
|
||||
return
|
||||
}
|
||||
|
||||
plugin.scheduler.run {
|
||||
instance.removeModifier(modifier)
|
||||
instance.addModifier(modifier)
|
||||
}
|
||||
instance.addModifier(modifier)
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOW)
|
||||
|
||||
@@ -27,6 +27,7 @@ class StatHealth : Stat(
|
||||
this.config.getDouble("health-per-level") * player.getStatLevel(this),
|
||||
AttributeModifier.Operation.ADD_NUMBER
|
||||
)
|
||||
|
||||
val instance = player.getAttribute(Attribute.GENERIC_MAX_HEALTH) ?: return
|
||||
|
||||
instance.removeModifier(modifier)
|
||||
@@ -35,9 +36,12 @@ class StatHealth : Stat(
|
||||
return
|
||||
}
|
||||
|
||||
instance.addModifier(modifier)
|
||||
|
||||
plugin.scheduler.run {
|
||||
instance.removeModifier(modifier)
|
||||
instance.addModifier(modifier)
|
||||
if (player.health > instance.value && player.health > instance.baseValue && instance.value > 0) {
|
||||
player.health = instance.value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -35,10 +35,7 @@ class StatSpeed : Stat(
|
||||
return
|
||||
}
|
||||
|
||||
plugin.scheduler.run {
|
||||
instance.removeModifier(modifier)
|
||||
instance.addModifier(modifier)
|
||||
}
|
||||
instance.addModifier(modifier)
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOW)
|
||||
|
||||
Reference in New Issue
Block a user