Support nullable return values from the DiamondBank-OG API
This commit is contained in:
9 files changed
+105
-28
No files matched your search
+1
-1
@@ -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?
|
||||
}
|
||||
Reference in new issue
Block a user