Support nullable return values from the DiamondBank-OG API

This commit is contained in:
SKBotNL committed 2025-05-28 12:05:34 +02:00
1 parent bae9a3e8e6
commit d9def4e15b
9 files changed
+105 -28

No files matched your search

+1 -1
View File
@@ -1,2 +1,2 @@
# Fetch all submodule content.
git submodule update --force --recursive --init --remote
git submodule update --force --recursive --init
@@ -24,13 +24,28 @@ class ClaimQuest : CommandExecutor {
return true
}
if (nextQuest.isEligible(sender)) {
nextQuest.consumeQuestItems(sender)
val isEligible = nextQuest.isEligible(sender)
if (isEligible == null) {
sender.sendMessage("Something wrong while trying to check if you are eligible")
return true
}
if (isEligible) {
val successful = nextQuest.consumeQuestItems(sender)
if (!successful) {
sender.sendMessage("Something wrong while trying to consume the quest items")
return true
}
nextQuest.reward(sender)
sender.sendMessage("Claimed quest!")
} else {
sender.sendMessage("You are not eligible to claim the quest")
sender.sendMessage(nextQuest.unmetRequirements(sender))
val unmetRequirements = nextQuest.unmetRequirements(sender)
if (unmetRequirements == null) {
sender.sendMessage("Something wrong while trying to get the unmet requirements")
return true
}
sender.sendMessage(unmetRequirements)
}
return true
}
@@ -7,7 +7,7 @@ class Config {
lateinit var redisUrl: String
/**
* @return True if sucessful
* @return True if successful
*/
fun load(): Boolean {
val file = File(QuestsOG.plugin.dataFolder, "config.yml")
@@ -35,9 +35,12 @@ class HomesFive : Quest {
private val monstersHuntedAdvancement = Bukkit.getServer().advancementIterator().asSequence()
.single { advancement -> advancement.key.toString() == "minecraft:adventure/kill_all_mobs" }
private fun getRequirements(player: Player): Requirements {
private fun getRequirements(player: Player): Requirements? {
val playerTotalBalanceFuture = QuestsOG.diamondBankAPI.getPlayerTotalBalance(player.uniqueId)
val playerTotalBalance = playerTotalBalanceFuture.get()
if (playerTotalBalance == null) {
return null
}
val ticksPlayed = player.getStatistic(Statistic.PLAY_ONE_MINUTE)
@@ -85,9 +88,13 @@ class HomesFive : Quest {
)
}
override fun isEligible(player: Player): Boolean {
override fun isEligible(player: Player): Boolean? {
val requirements = getRequirements(player)
if (requirements == null) {
return null
}
return requirements.playerTotalBalance >= 2500 &&
requirements.ticksPlayed / 20.0 / 60.0 / 60.0 / 24.0 >= 15 &&
requirements.pigOneCm / 100000.0 >= 5 &&
@@ -108,7 +115,7 @@ class HomesFive : Quest {
override fun consumeQuestItems(player: Player): Boolean {
val withdrawFuture = QuestsOG.diamondBankAPI.withdrawFromPlayer(player.uniqueId, 2500)
val error = withdrawFuture.get()
if (error) {
if (error == null || error) {
return true
}
@@ -127,9 +134,13 @@ class HomesFive : Quest {
}
}
override fun unmetRequirements(player: Player): String {
override fun unmetRequirements(player: Player): String? {
val requirements = getRequirements(player)
if (requirements == null) {
return null
}
return "Total Balance: ${requirements.playerTotalBalance}/1000 | Ticks Played: ${requirements.ticksPlayed}/25920000 " +
"| Cm Travelled on Pig: ${requirements.pigOneCm}/500000 | Cm Travelled on Strider: ${requirements.striderOneCm}/ 100000" +
"| Dolphins killed: ${requirements.dolphinKills}/50 | Zoglins killed: ${requirements.zoglinKills}/50 | The Cutest Predator: ${requirements.hasCutestPredator} " +
@@ -23,9 +23,12 @@ class HomesFour : Quest {
private val seriousDedicationAdvancement = Bukkit.getServer().advancementIterator().asSequence()
.single { it.key.toString() == "minecraft:husbandry/obtain_netherite_hoe" }
private fun getRequirements(player: Player): Requirements {
private fun getRequirements(player: Player): Requirements? {
val playerTotalBalanceFuture = QuestsOG.diamondBankAPI.getPlayerTotalBalance(player.uniqueId)
val playerTotalBalance = playerTotalBalanceFuture.get()
if (playerTotalBalance == null) {
return null
}
val ticksPlayed = player.getStatistic(Statistic.PLAY_ONE_MINUTE)
@@ -69,9 +72,13 @@ class HomesFour : Quest {
)
}
override fun isEligible(player: Player): Boolean {
override fun isEligible(player: Player): Boolean? {
val requirements = getRequirements(player)
if (requirements == null) {
return null
}
return requirements.playerTotalBalance >= 1000 &&
requirements.ticksPlayed / 20.0 / 60.0 / 60.0 / 24.0 >= 10 &&
requirements.totalCm / 100.0 >= 200000 &&
@@ -85,7 +92,7 @@ class HomesFour : Quest {
override fun consumeQuestItems(player: Player): Boolean {
val withdrawFuture = QuestsOG.diamondBankAPI.withdrawFromPlayer(player.uniqueId, 1000)
val error = withdrawFuture.get()
if (error) {
if (error == null || error) {
return true
}
@@ -104,9 +111,13 @@ class HomesFour : Quest {
}
}
override fun unmetRequirements(player: Player): String {
override fun unmetRequirements(player: Player): String? {
val requirements = getRequirements(player)
if (requirements == null) {
return null
}
return "Total Balance: ${requirements.playerTotalBalance}/1000 | Ticks Played: ${requirements.ticksPlayed}/17280000 " +
"| Total Cm Travelled: ${requirements.totalCm}/20000000 | A Furious Cocktail: ${requirements.hasFuriousCocktail} " +
"| Serious Dedication: ${requirements.hasSeriousDedication} | Levels: ${requirements.levels}/150 " +
@@ -40,9 +40,12 @@ class HomesSix : Quest {
Material.MUSIC_DISC_5
)
private fun getRequirements(player: Player): Requirements {
private fun getRequirements(player: Player): Requirements? {
val playerTotalBalanceFuture = QuestsOG.diamondBankAPI.getPlayerTotalBalance(player.uniqueId)
val playerTotalBalance = playerTotalBalanceFuture.get()
if (playerTotalBalance == null) {
return null
}
val ticksPlayed = player.getStatistic(Statistic.PLAY_ONE_MINUTE)
@@ -86,9 +89,13 @@ class HomesSix : Quest {
)
}
override fun isEligible(player: Player): Boolean {
override fun isEligible(player: Player): Boolean? {
val requirements = getRequirements(player)
if (requirements == null) {
return null
}
return requirements.playerTotalBalance >= 5000 &&
requirements.ticksPlayed / 20.0 / 60.0 / 60.0 / 24.0 >= 30 &&
requirements.walkOnWaterOneCm / 100000.0 >= 10 &&
@@ -105,7 +112,7 @@ class HomesSix : Quest {
override fun consumeQuestItems(player: Player): Boolean {
val withdrawFuture = QuestsOG.diamondBankAPI.withdrawFromPlayer(player.uniqueId, 5000)
val error = withdrawFuture.get()
if (error) {
if (error == null || error) {
return true
}
@@ -135,9 +142,13 @@ class HomesSix : Quest {
}
}
override fun unmetRequirements(player: Player): String {
override fun unmetRequirements(player: Player): String? {
val requirements = getRequirements(player)
if (requirements == null) {
return null
}
return "Total Balance: ${requirements.playerTotalBalance}/1000 | Ticks Played: ${requirements.ticksPlayed}/51840000 " +
"| Cm Walked on Water: ${requirements.walkOnWaterOneCm}/1000000 | Cm Walked under Water: ${requirements.walkUnderWaterOneCm}/1000000 " +
"| Music Discs: ${requirements.discs}/13 " +
@@ -19,9 +19,12 @@ class HomesThree : Quest {
private val beaconatorAdvancement = Bukkit.getServer().advancementIterator().asSequence()
.single { it.key.toString() == "minecraft:nether/create_full_beacon" }
private fun getRequirements(player: Player): Requirements {
private fun getRequirements(player: Player): Requirements? {
val playerTotalBalanceFuture = QuestsOG.diamondBankAPI.getPlayerTotalBalance(player.uniqueId)
val playerTotalBalance = playerTotalBalanceFuture.get()
if (playerTotalBalance == null) {
return null
}
val ticksPlayed = player.getStatistic(Statistic.PLAY_ONE_MINUTE)
@@ -55,9 +58,13 @@ class HomesThree : Quest {
)
}
override fun isEligible(player: Player): Boolean {
override fun isEligible(player: Player): Boolean? {
val requirements = getRequirements(player)
if (requirements == null) {
return null
}
return requirements.playerTotalBalance >= 250 &&
requirements.ticksPlayed / 20.0 / 60.0 / 60.0 / 24.0 >= 5 &&
requirements.totalCm / 100.0 >= 50000 && // 100k?
@@ -69,7 +76,7 @@ class HomesThree : Quest {
override fun consumeQuestItems(player: Player): Boolean {
val withdrawFuture = QuestsOG.diamondBankAPI.withdrawFromPlayer(player.uniqueId, 250)
val error = withdrawFuture.get()
if (error) {
if (error == null || error) {
return true
}
@@ -88,9 +95,14 @@ class HomesThree : Quest {
}
}
override fun unmetRequirements(player: Player): String {
override fun unmetRequirements(player: Player): String? {
val requirements = getRequirements(player)
return "Total Balance: ${requirements.playerTotalBalance}/250 | Ticks Played: ${requirements.ticksPlayed}/8640000 | Total Cm Travelled: ${requirements.totalCm}/5000000 | Beaconator: ${requirements.hasBeaconator} | Levels: ${requirements.levels}/100"
if (requirements == null) {
return null
}
return "Total Balance: ${requirements.playerTotalBalance}/250 | Ticks Played: ${requirements.ticksPlayed}/8640000 " +
"| Total Cm Travelled: ${requirements.totalCm}/5000000 | Beaconator: ${requirements.hasBeaconator} | Levels: ${requirements.levels}/100"
}
}
@@ -14,9 +14,12 @@ class HomesTwo : Quest {
val duelsWins: Int
)
private fun getRequirements(player: Player): Requirements {
private fun getRequirements(player: Player): Requirements? {
val playerTotalBalanceFuture = QuestsOG.diamondBankAPI.getPlayerTotalBalance(player.uniqueId)
val playerTotalBalance = playerTotalBalanceFuture.get()
if (playerTotalBalance == null) {
return null
}
val ticksPlayed = player.getStatistic(Statistic.PLAY_ONE_MINUTE)
@@ -41,9 +44,13 @@ class HomesTwo : Quest {
return Requirements(playerTotalBalance, ticksPlayed, totalCm, player.level, duelsWins)
}
override fun isEligible(player: Player): Boolean {
override fun isEligible(player: Player): Boolean? {
val requirements = getRequirements(player)
if (requirements == null) {
return null
}
return requirements.playerTotalBalance >= 100 &&
requirements.ticksPlayed / 20.0 / 60.0 / 60.0 >= 24 &&
requirements.totalCm / 100.0 >= 10000 &&
@@ -54,10 +61,13 @@ class HomesTwo : Quest {
override fun consumeQuestItems(player: Player): Boolean {
val withdrawFuture = QuestsOG.diamondBankAPI.withdrawFromPlayer(player.uniqueId, 100)
val error = withdrawFuture.get()
if (error == null || error) {
return true
}
player.level -= 100
return error
return false
}
override fun reward(player: Player) {
@@ -68,9 +78,13 @@ class HomesTwo : Quest {
}
}
override fun unmetRequirements(player: Player): String {
override fun unmetRequirements(player: Player): String? {
val requirements = getRequirements(player)
if (requirements == null) {
return null
}
return "Total Balance: ${requirements.playerTotalBalance}/100 | Ticks Played: ${requirements.ticksPlayed}/1728000 | Total Cm Travelled: ${requirements.totalCm}/1000000"
}
}
@@ -3,11 +3,14 @@ package net.trueog.questsOG.quests
import org.bukkit.entity.Player
interface Quest {
fun isEligible(player: Player): Boolean
fun isEligible(player: Player): Boolean?
/**
* @return True if successful
*/
fun consumeQuestItems(player: Player): Boolean
fun reward(player: Player)
fun unmetRequirements(player: Player): String
fun unmetRequirements(player: Player): String?
}