From 56400749e674e267d70c3bd0faf67ce1ae2969de Mon Sep 17 00:00:00 2001 From: NotAlexNoyle Date: Mon, 14 Sep 2026 00:52:26 -0400 Subject: [PATCH] Fix Essentials-OG integration --- .../questsOG/progression/HomesProgression.kt | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/kotlin/net/trueog/questsOG/progression/HomesProgression.kt b/src/main/kotlin/net/trueog/questsOG/progression/HomesProgression.kt index a3c0b99..8602962 100644 --- a/src/main/kotlin/net/trueog/questsOG/progression/HomesProgression.kt +++ b/src/main/kotlin/net/trueog/questsOG/progression/HomesProgression.kt @@ -4,20 +4,26 @@ import net.trueog.questsOG.quests.* import org.bukkit.entity.Player object HomesProgression : Progression { + private const val HOMES_PERMISSION_PREFIX = "essentials.sethome.multiple.homes-" + override val quests = arrayOf(HomesTwo(), HomesThree(), HomesFour(), HomesFive(), HomesSix()) + /** + * Highest home tier the player currently holds via essentials.sethome.multiple.homes-N, or 1 if none. Takes the max + * rather than assuming a single node so a leftover lower node (failed removal, group inheritance) never resets the + * ladder. + */ + fun getCurrentHomeCount(player: Player): Int = + player.effectivePermissions + .filter { it.value && it.permission.startsWith(HOMES_PERMISSION_PREFIX) } + .mapNotNull { it.permission.removePrefix(HOMES_PERMISSION_PREFIX).toIntOrNull() } + .maxOrNull() ?: 1 + override fun getNextQuest(player: Player): Quest? { - val homePermission = - player.effectivePermissions.singleOrNull { permission -> - permission.permission.startsWith("essentials.sethome.multiple.homes-") - } - val nextQuestIndex = homePermission?.permission?.takeLast(1)?.toInt()?.minus(1) ?: 0 + // Quest at index i grants i + 2 homes, so the next quest lives at index current - 1. + val nextQuestIndex = getCurrentHomeCount(player) - 1 - if (nextQuestIndex + 1 > quests.size) { - return null - } - - return quests[nextQuestIndex] + return quests.getOrNull(nextQuestIndex) } fun getHomeCount(quest: Quest): Int = quests.indexOf(quest) + 2