Improve quest claim failure reporting

This commit is contained in:
NotAlexNoyle committed 2026-05-12 11:55:35 -04:00
1 parent a78efc64f2
commit 978b34d509
7 files changed
+28 -40

No files matched your search

@@ -2,6 +2,7 @@ package net.trueog.questsOG
import kotlinx.coroutines.launch
import net.trueog.questsOG.progression.HomesProgression
import net.trueog.utilitiesog.UtilitiesOG
import org.bukkit.command.Command
import org.bukkit.command.CommandExecutor
import org.bukkit.command.CommandSender
@@ -10,50 +11,45 @@ import org.bukkit.entity.Player
class ClaimQuest : CommandExecutor {
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>?): Boolean {
if (sender !is Player) {
sender.sendMessage("You can only execute this command as a player.")
sender.sendMessage("ERROR: You can only execute this command as a player.")
return true
}
val nextQuest = HomesProgression.getNextQuest(sender)
if (nextQuest == null) {
sender.sendMessage("You cannot progress any further")
UtilitiesOG.trueogMessage(sender, "<green>You have completed all available quests.<reset>")
return true
}
QuestsOG.scope.launch {
val isEligible = nextQuest.isEligible(sender)
if (isEligible == null) {
sender.sendMessage("Something wrong while trying to check if you are eligible")
UtilitiesOG.trueogMessage(
sender,
"<red>Something went wrong while checking your quest eligibility. Contact an administrator.<reset>",
)
return@launch
}
if (isEligible) {
val successful = nextQuest.consumeQuestItems(sender)
if (!successful) {
sender.sendMessage("Something wrong while trying to consume the quest items")
if (successful) {
nextQuest.reward(sender)
val homeCount = HomesProgression.getHomeCount(nextQuest)
val questName = nextQuest::class.simpleName
UtilitiesOG.logToConsole("[Quests-OG]", "${sender.name} claimed quest $questName")
UtilitiesOG.trueogMessage(
sender,
"<green>Claimed quest! You now have <yellow>$homeCount<green> homes.<reset>",
)
return@launch
}
nextQuest.reward(sender)
sender.sendMessage("Claimed quest!")
UtilitiesOG.trueogMessage(
sender,
"<red>You don't have enough <light_aqua>Diamonds</light_aqua> <red>to claim that quest.<reset>",
)
} else {
sender.sendMessage("You are not eligible to claim the quest")
val requirements = nextQuest.getRequirements(sender)
if (requirements == null) {
sender.sendMessage("Something wrong while trying to get the unmet requirements")
return@launch
}
var requirementsMessage = ""
for (requirement in requirements) {
if (requirement is BooleanRequirement) {
requirementsMessage +=
"${if (requirement.met) "<green>" else "<red>"}${requirement.name}: ${requirement.met}<reset> |"
}
if (requirement is ProgressRequirement) {
requirementsMessage +=
"${if (requirement.current >= requirement.target) "<green>" else "<red>"}${requirement.name}: ${requirement.current}/${requirement.target}<reset> | "
}
}
sender.sendMessage(QuestsOG.mm.deserialize(requirementsMessage))
UtilitiesOG.trueogMessage(sender, "<red>You must claim all the lower quests first.<reset>")
}
}
return true
@@ -19,4 +19,6 @@ object HomesProgression : Progression {
return quests[nextQuestIndex]
}
fun getHomeCount(quest: Quest): Int = quests.indexOf(quest) + 2
}
@@ -145,9 +145,7 @@ class HomesFive : Quest {
"Home five quest claimed by ${player.name} (${player.uniqueId})",
"Quests-OG /claimquest",
)
if (withdrawResult.isFailure) {
return false
}
if (withdrawResult.isFailure) return false
runOnMainThread { player.level -= 200 }
@@ -114,9 +114,7 @@ class HomesFour : Quest {
"Home four quest claimed by ${player.name} (${player.uniqueId})",
"Quests-OG /claimquest",
)
if (withdrawResult.isFailure) {
return false
}
if (withdrawResult.isFailure) return false
runOnMainThread { player.level -= 150 }
@@ -123,9 +123,7 @@ class HomesSix : Quest {
"Home six quest claimed by ${player.name} (${player.uniqueId})",
"Quests-OG /claimquest",
)
if (withdrawResult.isFailure) {
return false
}
if (withdrawResult.isFailure) return false
return runOnMainThread {
player.level -= 250
@@ -92,9 +92,7 @@ class HomesThree : Quest {
"Home three quest claimed by ${player.name} (${player.uniqueId})",
"Quests-OG /claimquest",
)
if (withdrawResult.isFailure) {
return false
}
if (withdrawResult.isFailure) return false
runOnMainThread { player.level -= 100 }
@@ -81,9 +81,7 @@ class HomesTwo : Quest {
"Home two quest claimed by ${player.name} (${player.uniqueId})",
"Quests-OG /claimquest",
)
if (withdrawResult.isFailure) {
return false
}
if (withdrawResult.isFailure) return false
runOnMainThread { player.level -= 100 }