9
0
mirror of https://github.com/Auxilor/EcoSkills.git synced 2026-01-03 14:22:17 +00:00

API changes

This commit is contained in:
Auxilor
2021-08-21 09:16:53 +01:00
parent 42c8c1fd96
commit faa6b5af67
8 changed files with 125 additions and 21 deletions

View File

@@ -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 {

View File

@@ -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'
}

View File

@@ -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.
*

View File

@@ -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)
}

View File

@@ -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)
}
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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%"