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

Merge remote-tracking branch 'origin/master'

This commit is contained in:
Auxilor
2021-11-16 20:23:58 +00:00
21 changed files with 146 additions and 43 deletions

View File

@@ -13,6 +13,11 @@ public class PlayerSkillExpGainEvent extends PlayerEvent implements Cancellable
*/
private static final HandlerList HANDLERS = new HandlerList();
/**
* If multiplier is used in this event
*/
private final boolean multiply;
/**
* The skill.
*/
@@ -37,10 +42,12 @@ public class PlayerSkillExpGainEvent extends PlayerEvent implements Cancellable
*/
public PlayerSkillExpGainEvent(@NotNull final Player who,
@NotNull final Skill skill,
final double amount) {
final double amount,
final boolean multiply) {
super(who);
this.skill = skill;
this.amount = amount;
this.multiply = multiply;
}
/**
@@ -61,6 +68,15 @@ public class PlayerSkillExpGainEvent extends PlayerEvent implements Cancellable
return amount;
}
/**
* Get if EcoSkills multipliers are used in this event.
*
* @return The experience.
*/
public boolean isMultiply() {
return multiply;
}
/**
* Set the amount of experience.
*

View File

@@ -2,7 +2,32 @@ package com.willfp.ecoskills.effects;
import com.google.common.collect.ImmutableSet;
import com.willfp.eco.core.config.updating.ConfigUpdater;
import com.willfp.ecoskills.effects.effects.*;
import com.willfp.ecoskills.effects.effects.EffectAcceleratedEscape;
import com.willfp.ecoskills.effects.effects.EffectBountifulHarvest;
import com.willfp.ecoskills.effects.effects.EffectBravery;
import com.willfp.ecoskills.effects.effects.EffectCraftsmanship;
import com.willfp.ecoskills.effects.effects.EffectDazzle;
import com.willfp.ecoskills.effects.effects.EffectDodging;
import com.willfp.ecoskills.effects.effects.EffectDynamicMining;
import com.willfp.ecoskills.effects.effects.EffectEfficientBrewing;
import com.willfp.ecoskills.effects.effects.EffectEndangering;
import com.willfp.ecoskills.effects.effects.EffectEyeOfTheDepths;
import com.willfp.ecoskills.effects.effects.EffectGoldenYield;
import com.willfp.ecoskills.effects.effects.EffectInfernalResistance;
import com.willfp.ecoskills.effects.effects.EffectMagneticRod;
import com.willfp.ecoskills.effects.effects.EffectMasterLumberjack;
import com.willfp.ecoskills.effects.effects.EffectMysticResilience;
import com.willfp.ecoskills.effects.effects.EffectOvercompensation;
import com.willfp.ecoskills.effects.effects.EffectPotionmaster;
import com.willfp.ecoskills.effects.effects.EffectReimbursement;
import com.willfp.ecoskills.effects.effects.EffectSatiation;
import com.willfp.ecoskills.effects.effects.EffectSeamlessMovement;
import com.willfp.ecoskills.effects.effects.EffectSecondChance;
import com.willfp.ecoskills.effects.effects.EffectSerratedStrikes;
import com.willfp.ecoskills.effects.effects.EffectShamanism;
import com.willfp.ecoskills.effects.effects.EffectSpelunking;
import com.willfp.ecoskills.effects.effects.EffectStrongImpact;
import com.willfp.ecoskills.effects.effects.EffectVersatileTools;
import org.bukkit.NamespacedKey;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;

View File

@@ -1,7 +1,7 @@
package com.willfp.ecoskills
import org.bukkit.event.entity.EntityDamageByEntityEvent
import java.util.*
import java.util.WeakHashMap
private val critMap = WeakHashMap<EntityDamageByEntityEvent, Boolean>()

View File

@@ -12,7 +12,7 @@ import org.bukkit.OfflinePlayer
import org.bukkit.entity.Entity
import org.bukkit.entity.Player
import org.bukkit.entity.Projectile
import java.util.*
import java.util.UUID
import kotlin.math.abs
val expMultiplierCache = mutableMapOf<UUID, Double>()
@@ -71,15 +71,17 @@ fun OfflinePlayer.getAverageSkillLevel(): Double {
}
fun Player.giveSkillExperience(skill: Skill, experience: Double, noMultiply: Boolean = false) {
val exp = abs(if (noMultiply) experience else experience * this.getSkillExperienceMultiplier())
var exp = abs(if (noMultiply) experience else experience * this.getSkillExperienceMultiplier())
val gainEvent = PlayerSkillExpGainEvent(this, skill, exp)
val gainEvent = PlayerSkillExpGainEvent(this, skill, exp, !noMultiply)
Bukkit.getPluginManager().callEvent(gainEvent)
if (gainEvent.isCancelled) {
return
}
exp = gainEvent.amount
val level = this.getSkillLevel(skill)
this.setSkillProgress(skill, this.getSkillProgress(skill) + exp)

View File

@@ -1,9 +1,24 @@
package com.willfp.ecoskills.api
import com.willfp.ecoskills.*
import com.willfp.ecoskills.addStatModifier
import com.willfp.ecoskills.api.modifier.ItemStatModifier
import com.willfp.ecoskills.api.modifier.PlayerStatModifier
import com.willfp.ecoskills.effects.Effect
import com.willfp.ecoskills.getAverageSkillLevel
import com.willfp.ecoskills.getBaseStatLevel
import com.willfp.ecoskills.getBonusStatLevel
import com.willfp.ecoskills.getEffectLevel
import com.willfp.ecoskills.getSkillLevel
import com.willfp.ecoskills.getSkillProgress
import com.willfp.ecoskills.getSkillProgressRequired
import com.willfp.ecoskills.getSkillProgressToNextLevel
import com.willfp.ecoskills.getStatLevel
import com.willfp.ecoskills.getStatModifier
import com.willfp.ecoskills.getStatModifierKeys
import com.willfp.ecoskills.getStatModifiers
import com.willfp.ecoskills.getTotalSkillLevel
import com.willfp.ecoskills.giveSkillExperience
import com.willfp.ecoskills.removeStatModifier
import com.willfp.ecoskills.skills.Skill
import com.willfp.ecoskills.stats.Stat
import org.bukkit.NamespacedKey

View File

@@ -4,9 +4,6 @@ import com.willfp.eco.core.EcoPlugin
import com.willfp.eco.core.command.CommandHandler
import com.willfp.eco.core.command.TabCompleteHandler
import com.willfp.eco.core.command.impl.Subcommand
import com.willfp.eco.util.PlayerUtils
import com.willfp.eco.util.StringUtils
import com.willfp.ecoskills.data.LeaderboardHandler
import com.willfp.ecoskills.effects.Effect
import com.willfp.ecoskills.effects.Effects
import com.willfp.ecoskills.getSkillLevel

View File

@@ -1,6 +1,6 @@
package com.willfp.ecoskills.data.legacy
import java.util.*
import java.util.UUID
interface DataHandler {
fun <T> read(uuid: UUID, key: String): T?

View File

@@ -10,7 +10,7 @@ import com.willfp.ecoskills.skills.Skills
import com.willfp.ecoskills.stats.Stats
import org.bukkit.Bukkit
import org.bukkit.OfflinePlayer
import java.util.*
import java.util.UUID
@Suppress("UNCHECKED_CAST", "DEPRECATED")
class LegacyPlayerProfile private constructor(

View File

@@ -6,9 +6,14 @@ import com.willfp.ecoskills.skills.Skills
import com.willfp.ecoskills.stats.Stats
import org.jetbrains.exposed.dao.id.EntityID
import org.jetbrains.exposed.dao.id.UUIDTable
import org.jetbrains.exposed.sql.*
import org.jetbrains.exposed.sql.Column
import org.jetbrains.exposed.sql.Database
import org.jetbrains.exposed.sql.DoubleColumnType
import org.jetbrains.exposed.sql.IntegerColumnType
import org.jetbrains.exposed.sql.SchemaUtils
import org.jetbrains.exposed.sql.select
import org.jetbrains.exposed.sql.transactions.transaction
import java.util.*
import java.util.UUID
@Suppress("UNCHECKED_CAST")
class MySQLDataHandler(

View File

@@ -2,7 +2,7 @@ package com.willfp.ecoskills.data.legacy
import com.willfp.eco.core.config.yaml.YamlBaseConfig
import com.willfp.ecoskills.EcoSkillsPlugin
import java.util.*
import java.util.UUID
@Suppress("UNCHECKED_CAST")
class YamlDataHandler(

View File

@@ -11,7 +11,7 @@ import com.willfp.ecoskills.SkillObject
import com.willfp.ecoskills.getEffectLevel
import org.bukkit.NamespacedKey
import org.bukkit.event.Listener
import java.util.*
import java.util.UUID
abstract class Effect(
id: String

View File

@@ -7,10 +7,14 @@ import com.willfp.eco.core.data.keys.PersistentDataKeyType
import com.willfp.eco.core.integrations.placeholder.PlaceholderEntry
import com.willfp.eco.util.NumberUtils
import com.willfp.eco.util.StringUtils
import com.willfp.ecoskills.*
import com.willfp.ecoskills.EcoSkillsPlugin
import com.willfp.ecoskills.SkillObject
import com.willfp.ecoskills.config.SkillConfig
import com.willfp.ecoskills.effects.Effect
import com.willfp.ecoskills.effects.Effects
import com.willfp.ecoskills.getAverageSkillLevel
import com.willfp.ecoskills.getSkillLevel
import com.willfp.ecoskills.getTotalSkillLevel
import com.willfp.ecoskills.stats.Stats
import org.bukkit.Bukkit
import org.bukkit.NamespacedKey

View File

@@ -20,7 +20,7 @@ import org.bukkit.entity.Player
import org.bukkit.inventory.ItemFlag
import org.bukkit.inventory.ItemStack
import org.bukkit.persistence.PersistentDataType
import java.util.*
import java.util.Objects
import kotlin.math.ceil
class SkillGUI(

View File

@@ -10,7 +10,7 @@ import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.inventory.BrewEvent
import org.bukkit.inventory.meta.PotionMeta
import java.util.*
import java.util.EnumMap
class SkillAlchemy : Skill(
"alchemy"

View File

@@ -10,7 +10,7 @@ import org.bukkit.block.data.Ageable
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.block.BlockBreakEvent
import java.util.*
import java.util.EnumMap
class SkillFarming : Skill(
"farming"

View File

@@ -9,7 +9,7 @@ import org.bukkit.Material
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.block.BlockBreakEvent
import java.util.*
import java.util.EnumMap
class SkillMining : Skill(
"mining"

View File

@@ -9,7 +9,7 @@ import org.bukkit.Material
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.block.BlockBreakEvent
import java.util.*
import java.util.EnumMap
class SkillWoodcutting : Skill(
"woodcutting"

View File

@@ -5,13 +5,13 @@ import com.willfp.eco.core.integrations.hologram.HologramManager
import com.willfp.eco.util.NumberUtils
import com.willfp.eco.util.StringUtils
import com.willfp.ecoskills.isCrit
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.Listener
import org.bukkit.event.entity.EntityDamageByEntityEvent
import org.bukkit.event.entity.EntityRegainHealthEvent
class DamageIndicatorListener(
private val plugin: EcoPlugin
@@ -67,4 +67,37 @@ class DamageIndicatorListener(
holo.remove()
}, 30)
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
fun onHeal(event: EntityRegainHealthEvent) {
if (!plugin.configYml.getBool("damage-indicators.healing.enabled")) {
return
}
val location = event.entity.location
location.add(0.0, event.entity.height, 0.0)
val x = plugin.configYml.getDouble("damage-indicators.max-x-offset")
val y = plugin.configYml.getDouble("damage-indicators.max-y-offset")
val z = plugin.configYml.getDouble("damage-indicators.max-z-offset")
location.add(
NumberUtils.randFloat(-x, x),
NumberUtils.randFloat(-y, y),
NumberUtils.randFloat(-z, z)
)
var text = plugin.configYml.getString("damage-indicators.healing.format", false)
text = text.replace("%damage%", NumberUtils.format(event.amount))
text = StringUtils.format(text)
val holo = HologramManager.createHologram(location, listOf(text))
plugin.scheduler.runLater({
holo.remove()
}, 30)
}
}

View File

@@ -6,11 +6,15 @@ import com.willfp.eco.core.data.keys.PersistentDataKey
import com.willfp.eco.core.data.keys.PersistentDataKeyType
import com.willfp.eco.core.integrations.placeholder.PlaceholderEntry
import com.willfp.eco.util.NumberUtils
import com.willfp.ecoskills.*
import com.willfp.ecoskills.EcoSkillsPlugin
import com.willfp.ecoskills.SkillObject
import com.willfp.ecoskills.getBaseStatLevel
import com.willfp.ecoskills.getBonusStatLevel
import com.willfp.ecoskills.getStatLevel
import org.bukkit.NamespacedKey
import org.bukkit.entity.Player
import org.bukkit.event.Listener
import java.util.*
import java.util.UUID
abstract class Stat(
id: String

View File

@@ -3,19 +3,6 @@
# by Auxilor
#
# EcoSkills now uses eco's data storage system, this section will be removed in the future
# This exists purely to be able to migrate player data
# Go to /plugins/eco/config.yml to change MySQL settings
mysql:
migrated: false # Internal value - DO NOT CHANGE, YOU RISK LOSING PLAYER DATA
enabled: false # Set to false, data.yml will be used instead.
host: localhost
port: 3306
database: database
user: username
password: passy
gui:
rows: 6
@@ -319,6 +306,9 @@ damage-indicators:
format:
normal: "&7%damage%"
crit: "&f✧ <gradient:#f953c6>%damage%</gradient:#b91d73> &f✧"
healing:
enabled: true
format: "&a+%damage%"
max-x-offset: 0.6
max-y-offset: 0.6
max-z-offset: 0.6
@@ -328,7 +318,19 @@ commands:
# If displayname (including rank) should be used
use-display-name: true
autosave:
ticks: 20000 # The amount of ticks between autosaves
log: true # If auto-save messages should be sent to console
async: false # If saves should be performed asynchronously. May cause bugs without MySQL
# Everything below this line is legacy configuration
# Don't touch it - it will be removed soon.
# EcoSkills now uses eco's data storage system, this section will be removed in the future
# This exists purely to be able to migrate player data
# Go to /plugins/eco/config.yml to change MySQL settings
# If you didn't use EcoSkills before version 1.10.0 then ignore this.
mysql:
migrated: false # Internal value - DO NOT CHANGE, YOU RISK LOSING PLAYER DATA
enabled: false # Set to false, data.yml will be used instead.
host: localhost
port: 3306
database: database
user: username
password: passy

View File

@@ -1,2 +1,2 @@
version = 1.11.3
version = 1.11.6
plugin-name = EcoSkills