mirror of
https://github.com/Auxilor/EcoSkills.git
synced 2026-01-03 14:22:17 +00:00
API changes
This commit is contained in:
@@ -32,6 +32,7 @@ allprojects {
|
||||
maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' }
|
||||
maven { url 'https://repo.codemc.org/repository/nms/' }
|
||||
maven { url 'https://repo.codemc.io/repository/maven-public/' }
|
||||
maven { url 'https://repo.dmulloy2.net/repository/public/' }
|
||||
}
|
||||
|
||||
jar {
|
||||
|
||||
@@ -4,4 +4,5 @@ version rootProject.version
|
||||
dependencies {
|
||||
compileOnly 'org.spigotmc:spigot-api:1.16.4-R0.1-SNAPSHOT'
|
||||
compileOnly 'com.gmail.filoghost.holographicdisplays:holographicdisplays-api:2.4.0'
|
||||
compileOnly 'com.comphenix.protocol:ProtocolLib:4.7.0'
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.willfp.ecoskills.api;
|
||||
|
||||
import com.willfp.ecoskills.effects.Effect;
|
||||
import com.willfp.ecoskills.skills.Skill;
|
||||
import com.willfp.ecoskills.stats.Stat;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -15,6 +17,67 @@ public interface EcoSkillsAPI {
|
||||
int getSkillLevel(@NotNull Player player,
|
||||
@NotNull Skill skill);
|
||||
|
||||
/**
|
||||
* Give skill experience to a player.
|
||||
*
|
||||
* @param player The player.
|
||||
* @param skill The skill.
|
||||
* @param amount The amount of experience to give.
|
||||
*/
|
||||
void giveSkillExperience(@NotNull Player player,
|
||||
@NotNull Skill skill,
|
||||
double amount);
|
||||
|
||||
/**
|
||||
* Get progress to next level between 0 and 1, where 0 is none and 1 is complete.
|
||||
*
|
||||
* @param player The player.
|
||||
* @param skill The skill.
|
||||
* @return The progress.
|
||||
*/
|
||||
double getSkillProgressToNextLevel(@NotNull Player player,
|
||||
@NotNull Skill skill);
|
||||
|
||||
/**
|
||||
* Get the experience required to advance to the next level.
|
||||
*
|
||||
* @param player The player.
|
||||
* @param skill The skill.
|
||||
* @return The experience required.
|
||||
*/
|
||||
int getSkillProgressRequired(@NotNull Player player,
|
||||
@NotNull Skill skill);
|
||||
|
||||
/**
|
||||
* Get experience to the next level.
|
||||
*
|
||||
* @param player The player.
|
||||
* @param skill The skill.
|
||||
* @return The experience.
|
||||
*/
|
||||
double getSkillProgress(@NotNull Player player,
|
||||
@NotNull Skill skill);
|
||||
|
||||
/**
|
||||
* Get the effect level for player.
|
||||
*
|
||||
* @param player The player.
|
||||
* @param effect The effect.
|
||||
* @return The level.
|
||||
*/
|
||||
int getEffectLevel(@NotNull Player player,
|
||||
@NotNull Effect effect);
|
||||
|
||||
/**
|
||||
* Get the stat level for a player.
|
||||
*
|
||||
* @param player The player.
|
||||
* @param stat The stat.
|
||||
* @return The stat level.
|
||||
*/
|
||||
int getStatLevel(@NotNull Player player,
|
||||
@NotNull Stat stat);
|
||||
|
||||
/**
|
||||
* Get the instance of the API.
|
||||
*
|
||||
|
||||
@@ -37,6 +37,14 @@ fun Player.setSkillLevel(skill: Skill, level: Int) {
|
||||
this.persistentDataContainer.set(skill.key, PersistentDataType.INTEGER, level)
|
||||
}
|
||||
|
||||
fun Player.getSkillProgressToNextLevel(skill: Skill): Double {
|
||||
return this.getSkillProgress(skill) / this.getSkillProgressRequired(skill)
|
||||
}
|
||||
|
||||
fun Player.getSkillProgressRequired(skill: Skill): Int {
|
||||
return skill.getExpForLevel(this.getSkillLevel(skill) + 1)
|
||||
}
|
||||
|
||||
fun Player.getSkillProgress(skill: Skill): Double {
|
||||
return this.persistentDataContainer.getOrDefault(skill.xpKey, PersistentDataType.DOUBLE, 0.0)
|
||||
}
|
||||
|
||||
@@ -1,11 +1,37 @@
|
||||
package com.willfp.ecoskills.api
|
||||
|
||||
import com.willfp.ecoskills.getSkillLevel
|
||||
import com.willfp.ecoskills.*
|
||||
import com.willfp.ecoskills.effects.Effect
|
||||
import com.willfp.ecoskills.skills.Skill
|
||||
import com.willfp.ecoskills.stats.Stat
|
||||
import org.bukkit.entity.Player
|
||||
|
||||
object EcoSkillsAPIImpl: EcoSkillsAPI {
|
||||
override fun getSkillLevel(player: Player, skill: Skill): Int {
|
||||
return player.getSkillLevel(skill)
|
||||
}
|
||||
|
||||
override fun giveSkillExperience(player: Player, skill: Skill, amount: Double) {
|
||||
player.giveSkillExperience(skill, amount)
|
||||
}
|
||||
|
||||
override fun getSkillProgressToNextLevel(player: Player, skill: Skill): Double {
|
||||
return player.getSkillProgressToNextLevel(skill)
|
||||
}
|
||||
|
||||
override fun getSkillProgressRequired(player: Player, skill: Skill): Int {
|
||||
return player.getSkillProgressRequired(skill)
|
||||
}
|
||||
|
||||
override fun getSkillProgress(player: Player, skill: Skill): Double {
|
||||
return player.getSkillProgress(skill)
|
||||
}
|
||||
|
||||
override fun getEffectLevel(player: Player, effect: Effect): Int {
|
||||
return player.getEffectLevel(effect)
|
||||
}
|
||||
|
||||
override fun getStatLevel(player: Player, stat: Stat): Int {
|
||||
return player.getStatLevel(stat)
|
||||
}
|
||||
}
|
||||
@@ -86,10 +86,18 @@ abstract class Skill(
|
||||
return messages
|
||||
}
|
||||
|
||||
fun getGUIRewardsMessages(player: Player): MutableList<String> {
|
||||
fun getGUIRewardsMessages(player: Player, level: Int): MutableList<String> {
|
||||
val lore = ArrayList<String>()
|
||||
for (string in this.config.getStrings("rewards-gui-lore", false)) {
|
||||
lore.add(StringUtils.format(string, player))
|
||||
var s = string;
|
||||
|
||||
for (skillObject in Effects.values() union Stats.values()) {
|
||||
val objLevel = level * this.getLevelUpReward(skillObject)
|
||||
|
||||
s = s.replace("%ecoskills_${skillObject.id}%", objLevel.toString())
|
||||
s = s.replace("%ecoskills_${skillObject.id}_numeral%", NumberUtils.toNumeral(objLevel))
|
||||
}
|
||||
lore.add(StringUtils.format(s, player))
|
||||
}
|
||||
return lore
|
||||
}
|
||||
|
||||
@@ -10,6 +10,8 @@ import com.willfp.eco.util.NumberUtils
|
||||
import com.willfp.eco.util.StringUtils
|
||||
import com.willfp.ecoskills.getSkillLevel
|
||||
import com.willfp.ecoskills.getSkillProgress
|
||||
import com.willfp.ecoskills.getSkillProgressRequired
|
||||
import com.willfp.ecoskills.getSkillProgressToNextLevel
|
||||
import com.willfp.ecoskills.gui.SkillGUI
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.Material
|
||||
@@ -155,16 +157,15 @@ class SkillGUI(
|
||||
|
||||
val slotLevel = ((page - 1) * levelsPerPage) + level
|
||||
|
||||
val meta: ItemMeta
|
||||
val lore: MutableList<String>
|
||||
val meta = item.itemMeta!!
|
||||
meta.lore = ArrayList()
|
||||
val lore: MutableList<String> = ArrayList()
|
||||
|
||||
item.amount = 1
|
||||
|
||||
if (slotLevel > skill.maxLevel) {
|
||||
item.type = maskMaterials[0]
|
||||
meta = item.itemMeta!!
|
||||
meta.setDisplayName("")
|
||||
meta.lore = listOf()
|
||||
item.itemMeta = meta
|
||||
} else {
|
||||
if (plugin.configYml.getBool("level-gui.progression-slots.level-as-amount")) {
|
||||
@@ -177,7 +178,6 @@ class SkillGUI(
|
||||
plugin.configYml.getString("level-gui.progression-slots.unlocked.material")
|
||||
.uppercase()
|
||||
)!!
|
||||
meta = item.itemMeta!!
|
||||
meta.setDisplayName(
|
||||
plugin.configYml.getString("level-gui.progression-slots.unlocked.name")
|
||||
.replace("%skill%", skill.name)
|
||||
@@ -185,15 +185,13 @@ class SkillGUI(
|
||||
.replace("%level_numeral%", NumberUtils.toNumeral(slotLevel))
|
||||
)
|
||||
|
||||
lore =
|
||||
plugin.configYml.getStrings("level-gui.progression-slots.unlocked.lore")
|
||||
lore.addAll(plugin.configYml.getStrings("level-gui.progression-slots.unlocked.lore"))
|
||||
}
|
||||
slotLevel == player.getSkillLevel(skill) + 1 -> {
|
||||
item.type = Material.getMaterial(
|
||||
plugin.configYml.getString("level-gui.progression-slots.in-progress.material")
|
||||
.uppercase()
|
||||
)!!
|
||||
meta = item.itemMeta!!
|
||||
meta.setDisplayName(
|
||||
plugin.configYml.getString("level-gui.progression-slots.in-progress.name")
|
||||
.replace("%skill%", skill.name)
|
||||
@@ -201,15 +199,13 @@ class SkillGUI(
|
||||
.replace("%level_numeral%", NumberUtils.toNumeral(slotLevel))
|
||||
)
|
||||
|
||||
lore =
|
||||
plugin.configYml.getStrings("level-gui.progression-slots.in-progress.lore")
|
||||
lore.addAll(plugin.configYml.getStrings("level-gui.progression-slots.in-progress.lore"))
|
||||
}
|
||||
else -> {
|
||||
item.type = Material.getMaterial(
|
||||
plugin.configYml.getString("level-gui.progression-slots.locked.material")
|
||||
.uppercase()
|
||||
)!!
|
||||
meta = item.itemMeta!!
|
||||
meta.setDisplayName(
|
||||
plugin.configYml.getString("level-gui.progression-slots.locked.name")
|
||||
.replace("%skill%", skill.name)
|
||||
@@ -217,13 +213,12 @@ class SkillGUI(
|
||||
.replace("%level_numeral%", NumberUtils.toNumeral(slotLevel))
|
||||
)
|
||||
|
||||
lore =
|
||||
plugin.configYml.getStrings("level-gui.progression-slots.locked.lore")
|
||||
lore.addAll(plugin.configYml.getStrings("level-gui.progression-slots.locked.lore"))
|
||||
}
|
||||
}
|
||||
|
||||
val currentXP = player.getSkillProgress(skill)
|
||||
val requiredXP = skill.getExpForLevel(player.getSkillLevel(skill) + 1)
|
||||
val requiredXP = player.getSkillProgressRequired(skill)
|
||||
lore.replaceAll { string ->
|
||||
string.replace("%current_xp%", NumberUtils.format(currentXP))
|
||||
.replace(
|
||||
@@ -232,17 +227,16 @@ class SkillGUI(
|
||||
)
|
||||
.replace(
|
||||
"%percentage_progress%",
|
||||
NumberUtils.format((currentXP / requiredXP) * 100) + "%"
|
||||
NumberUtils.format(player.getSkillProgressToNextLevel(skill) * 100) + "%"
|
||||
)
|
||||
}
|
||||
|
||||
val skillSpecificIndex = lore.indexOf("%rewards%")
|
||||
if (skillSpecificIndex != -1) {
|
||||
lore.removeAt(skillSpecificIndex)
|
||||
lore.addAll(skillSpecificIndex, skill.getGUIRewardsMessages(player))
|
||||
skill.getGUIRewardsMessages(player, slotLevel) // scary
|
||||
lore.addAll(skillSpecificIndex, skill.getGUIRewardsMessages(player, slotLevel))
|
||||
}
|
||||
|
||||
Bukkit.getLogger().info(lore.toString())
|
||||
meta.lore = lore
|
||||
item.itemMeta = meta
|
||||
}
|
||||
|
||||
@@ -125,6 +125,7 @@ level-gui:
|
||||
name: "&a%skill% Level %level_numeral%"
|
||||
lore:
|
||||
- "&f"
|
||||
- "&fRewards:"
|
||||
- "%rewards%"
|
||||
- "&f"
|
||||
- "&aUNLOCKED"
|
||||
@@ -133,6 +134,7 @@ level-gui:
|
||||
name: "&e%skill% Level %level_numeral%"
|
||||
lore:
|
||||
- "&f"
|
||||
- "&fRewards:"
|
||||
- "%rewards%"
|
||||
- "&f"
|
||||
- "&fProgress:"
|
||||
@@ -143,6 +145,7 @@ level-gui:
|
||||
name: "&c%skill% Level %level_numeral%"
|
||||
lore:
|
||||
- "&f"
|
||||
- "&fRewards:"
|
||||
- "%rewards%"
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user