mirror of
https://github.com/Auxilor/EcoQuests.git
synced 2025-12-23 08:59:16 +00:00
Improved APi
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user