9
0
mirror of https://github.com/Auxilor/EcoQuests.git synced 2025-12-23 17:09:17 +00:00

Improved APi

This commit is contained in:
Auxilor
2023-08-10 15:11:39 +01:00
parent 0a333853d8
commit 5eeb00c083
2 changed files with 20 additions and 9 deletions

View File

@@ -31,6 +31,7 @@ import com.willfp.libreforge.conditions.Conditions
import com.willfp.libreforge.effects.Effects
import com.willfp.libreforge.effects.executors.impl.NormalExecutorFactory
import org.bukkit.Bukkit
import org.bukkit.OfflinePlayer
import org.bukkit.entity.Player
class Quest(
@@ -208,11 +209,11 @@ class Quest(
return addPlaceholdersInto(listOf(config.getString("description")), player)
}
fun hasActive(player: Player): Boolean {
fun hasActive(player: OfflinePlayer): Boolean {
return hasStarted(player) && !hasCompleted(player)
}
fun hasCompleted(player: Player): Boolean {
fun hasCompleted(player: OfflinePlayer): Boolean {
return player.profile.read(hasCompletedKey)
}
@@ -224,11 +225,11 @@ class Quest(
return meetsStartConditions(player) && !hasStarted(player)
}
fun hasStarted(player: Player): Boolean {
fun hasStarted(player: OfflinePlayer): Boolean {
return player.profile.read(hasStartedKey)
}
fun reset(player: Player) {
fun reset(player: OfflinePlayer) {
player.profile.write(hasStartedKey, false)
player.profile.write(hasCompletedKey, false)
@@ -267,6 +268,15 @@ class Quest(
reset(player)
}
// Offline players can be reset async
plugin.scheduler.runAsync {
for (player in Bukkit.getOfflinePlayers()) {
if (!player.isOnline) {
reset(player)
}
}
}
// Unbind old tasks
for (task in tasks) {
task.unbind()

View File

@@ -16,6 +16,7 @@ import com.willfp.ecoquests.quests.Quest
import com.willfp.ecoquests.quests.Quests
import com.willfp.libreforge.counters.Accumulator
import org.bukkit.Bukkit
import org.bukkit.OfflinePlayer
import org.bukkit.entity.Player
import kotlin.math.min
@@ -79,12 +80,12 @@ class Task(
}
}
fun reset(player: Player) {
fun reset(player: OfflinePlayer) {
player.profile.write(xpKey, 0.0)
player.profile.write(hasCompletedKey, false)
}
fun hasCompleted(player: Player): Boolean {
fun hasCompleted(player: OfflinePlayer): Boolean {
return player.profile.read(hasCompletedKey)
}
@@ -97,8 +98,8 @@ class Task(
)
}
fun getExperience(player: Player): Double {
return min(player.profile.read(xpKey), getExperienceRequired(player))
fun getExperience(player: OfflinePlayer): Double {
return player.profile.read(xpKey)
}
/**
@@ -123,7 +124,7 @@ class Task(
val requiredXp = getExperienceRequired(player)
val newXp = player.profile.read(xpKey) + amount
player.profile.write(xpKey, newXp)
player.profile.write(xpKey, min(newXp, requiredXp))
if (newXp >= requiredXp) {
player.profile.write(hasCompletedKey, true)