mirror of
https://github.com/Auxilor/EcoQuests.git
synced 2025-12-21 07:59:14 +00:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9db9f542c9 | ||
|
|
75a091624c | ||
|
|
17c81ea5b8 | ||
|
|
81d4faaf0c | ||
|
|
03110e36b1 |
@@ -286,6 +286,11 @@ class Quest(
|
||||
player.profile.write(hasStartedKey, true)
|
||||
player.profile.write(startedTimeKey, currentTimeMinutes)
|
||||
|
||||
// Reset tasks to generate new xp requirements
|
||||
for (task in tasks) {
|
||||
task.reset(player)
|
||||
}
|
||||
|
||||
Bukkit.getPluginManager().callEvent(PlayerQuestStartEvent(player, this))
|
||||
}
|
||||
|
||||
|
||||
@@ -32,6 +32,12 @@ class Task(
|
||||
0.0
|
||||
)
|
||||
|
||||
private val xpRequiredKey = PersistentDataKey(
|
||||
plugin.createNamespacedKey("${quest.id}_task_${template.id}_xp_required"),
|
||||
PersistentDataKeyType.DOUBLE,
|
||||
0.0
|
||||
)
|
||||
|
||||
private val hasCompletedKey = PersistentDataKey(
|
||||
plugin.createNamespacedKey("${quest.id}_task_${template.id}_has_completed"),
|
||||
PersistentDataKeyType.BOOLEAN,
|
||||
@@ -89,7 +95,7 @@ class Task(
|
||||
return player.profile.read(hasCompletedKey)
|
||||
}
|
||||
|
||||
fun getExperienceRequired(player: Player): Double {
|
||||
private fun generateExperienceRequired(player: Player): Double {
|
||||
return evaluateExpression(
|
||||
xpExpr,
|
||||
placeholderContext(
|
||||
@@ -98,6 +104,24 @@ class Task(
|
||||
)
|
||||
}
|
||||
|
||||
fun getExperienceRequired(player: Player): Double {
|
||||
val required = player.profile.read(xpRequiredKey)
|
||||
|
||||
return if (required <= 0) {
|
||||
val newRequired = generateExperienceRequired(player)
|
||||
|
||||
if (newRequired <= 0) {
|
||||
throw IllegalStateException("Invalid XP Required for task ${template.id} in quest ${quest.id}" +
|
||||
"(Requirement was $newRequired, which is less than or equal to 0)")
|
||||
}
|
||||
|
||||
player.profile.write(xpRequiredKey, newRequired)
|
||||
newRequired
|
||||
} else {
|
||||
required
|
||||
}
|
||||
}
|
||||
|
||||
fun getExperience(player: OfflinePlayer): Double {
|
||||
return player.profile.read(xpKey)
|
||||
}
|
||||
|
||||
@@ -3,6 +3,11 @@
|
||||
# by Auxilor
|
||||
#
|
||||
|
||||
# Even if eco is set up to use a database, you can
|
||||
# force EcoQuests to save to local storage to disable
|
||||
# cross-server sync.
|
||||
use-local-storage: false
|
||||
|
||||
scan-interval: 20 # How often to scan for quests auto-starting (in ticks)
|
||||
|
||||
gui:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#libreforge-updater
|
||||
#Sat Aug 19 15:32:52 BST 2023
|
||||
#Wed Aug 30 11:31:41 BST 2023
|
||||
kotlin.code.style=official
|
||||
libreforge-version=4.29.1
|
||||
version=1.2.1
|
||||
libreforge-version=4.32.0
|
||||
version=1.4.0
|
||||
|
||||
Reference in New Issue
Block a user