9
0
mirror of https://github.com/Auxilor/EcoQuests.git synced 2025-12-21 16:09:16 +00:00

Compare commits

..

79 Commits

Author SHA1 Message Date
Auxilor
a59bce65ab libreforge-updater 2024-07-25 10:04:39 +01:00
Auxilor
0212076fad libreforge-updater 2024-07-21 12:19:23 +01:00
Auxilor
c4b0429ad5 libreforge-updater 2024-07-19 20:28:44 +01:00
Auxilor
c5e0611a20 libreforge-updater 2024-07-18 13:24:18 +01:00
Auxilor
cb2e8a181f libreforge-updater 2024-07-16 17:13:48 +01:00
Auxilor
c40a304c8a libreforge-updater 2024-07-13 20:45:24 +01:00
Auxilor
9e7a8a7581 libreforge-updater 2024-07-08 15:58:33 +01:00
Auxilor
2e5fbda6c2 libreforge-updater 2024-07-05 13:02:51 +01:00
Auxilor
908a4c5a14 libreforge-updater 2024-07-03 17:44:03 +01:00
Auxilor
ee38c05518 libreforge-updater 2024-06-29 16:44:07 +01:00
Auxilor
98d5431ba7 libreforge-updater 2024-06-28 15:56:30 +01:00
Auxilor
ff13678d33 libreforge-updater 2024-06-27 18:54:34 +01:00
Auxilor
8b955f3481 libreforge-updater 2024-06-26 16:52:26 +01:00
Auxilor
b6d8b4154b libreforge-updater 2024-06-25 15:14:05 +01:00
Auxilor
f71078f956 libreforge-updater 2024-06-24 15:06:40 +01:00
Auxilor
4e4f9c637b Updated to Java 21 2024-06-24 14:04:43 +01:00
Auxilor
2433c34a1c libreforge-updater 2024-06-23 17:26:37 +01:00
Auxilor
607da38533 libreforge-updater 2024-06-23 13:19:10 +01:00
Will FP
17d0af8ab9 libreforge-updater 2024-05-31 20:37:52 +01:00
Will FP
8332c5aa2a libreforge-updater 2024-05-11 18:21:18 +01:00
Will FP
863e741ac6 libreforge-updater 2024-04-17 20:35:00 +01:00
Auxilor
aab1a5bf44 libreforge-updater 2024-04-15 18:19:50 +01:00
Auxilor
93f243871f libreforge-updater 2024-04-11 13:17:45 +01:00
Auxilor
78e2b6bfff libreforge-updater 2024-03-29 16:08:51 +00:00
Will FP
4bf97077b7 libreforge-updater 2024-03-11 17:38:06 +00:00
Will FP
6eead2f420 libreforge-updater 2024-03-10 20:09:37 +00:00
Will FP
c574d78992 libreforge-updater 2024-03-02 15:20:52 +00:00
Will FP
399101a487 libreforge-updater 2024-02-22 13:18:23 +00:00
Will FP
95a013fbf1 Merge pull request #1 from MCCasper/master
t
2024-02-17 19:57:48 +00:00
Nikolai Connolly
b0fa4bad8b t 2024-02-16 20:52:30 -06:00
Will FP
d55635c590 libreforge-updater 2024-02-15 13:02:37 +00:00
Will FP
bd6b919f86 libreforge-updater 2024-02-08 19:49:56 +00:00
Will FP
d390a2102a libreforge-updater 2024-01-30 11:27:42 +00:00
Will FP
89e2232618 libreforge-updater 2024-01-18 17:03:23 +00:00
Will FP
db34794aa0 libreforge-updater 2024-01-16 13:29:19 +00:00
Will FP
b8a8076b23 libreforge-updater 2024-01-13 14:24:05 +00:00
Will FP
b999e381a1 libreforge-updater 2024-01-07 13:52:00 +00:00
Will FP
e726af326f libreforge-updater 2024-01-06 09:20:18 +00:00
Auxilor
9654b2c78b libreforge-updater 2024-01-04 17:25:37 +00:00
Auxilor
2645d679f5 libreforge-updater 2024-01-01 20:02:39 +00:00
Will FP
3851943ee4 libreforge-updater 2023-12-27 14:17:46 +01:00
Will FP
ee39a180e1 libreforge-updater 2023-12-24 14:54:57 +01:00
Auxilor
da5cb60399 libreforge-updater 2023-12-20 15:57:20 +00:00
Will FP
d25ba604c3 libreforge-updater 2023-12-14 16:13:50 +00:00
Will FP
5810b4a7a9 libreforge-updater 2023-12-11 12:13:05 +00:00
Will FP
2ab6a42b37 libreforge-updater 2023-12-07 17:26:01 +00:00
Will FP
b496848143 libreforge-updater 2023-12-03 15:59:50 +00:00
Will FP
274102ac06 libreforge-updater 2023-11-30 14:27:46 +00:00
Will FP
08ef85f6d0 libreforge-updater 2023-11-26 23:24:49 +00:00
Will FP
29d0f8200e libreforge-updater 2023-11-23 13:21:45 +00:00
Auxilor
6496d5c7d1 libreforge-updater 2023-11-21 22:41:42 +00:00
Auxilor
35c89d7aa5 libreforge-updater 2023-11-19 14:14:25 +00:00
Auxilor
ab99f74626 libreforge-updater 2023-11-17 19:02:33 +00:00
Auxilor
ecfa40920f libreforge-updater 2023-11-11 17:58:59 +00:00
Auxilor
202528681a libreforge-updater 2023-11-10 13:59:29 +00:00
Auxilor
7aa02b3a91 libreforge-updater 2023-11-05 13:42:08 +00:00
Auxilor
070d25de67 libreforge-updater 2023-10-30 13:31:07 +00:00
Auxilor
3ab99c9237 libreforge-updater 2023-10-28 14:15:35 +01:00
Auxilor
3ee10633fb libreforge-updater 2023-10-24 15:39:35 +01:00
Auxilor
49c77396ea libreforge-updater 2023-10-19 12:52:36 +01:00
Auxilor
09fb8d2109 libreforge-updater 2023-10-14 14:20:33 +01:00
Auxilor
9623f1c427 libreforge-updater 2023-10-14 14:19:14 +01:00
Auxilor
39eaef3856 libreforge-updater 2023-10-02 11:54:25 +01:00
Auxilor
bf085b4ea5 libreforge-updater 2023-09-26 14:46:03 +01:00
Auxilor
1a1433f84f libreforge-updater 2023-09-20 15:33:56 +01:00
Auxilor
571b4c05e2 Fixed a small amount of stupidity 2023-09-17 11:29:16 +01:00
Auxilor
58aa2fd81d graddel 2023-09-17 11:28:35 +01:00
Auxilor
335524a2da libreforge-updater 2023-09-17 11:20:21 +01:00
Auxilor
73d748d445 libreforge-updater 2023-09-13 15:08:56 +01:00
Auxilor
e0e0804cce libreforge-updater 2023-09-07 16:01:57 +01:00
Auxilor
c00d5eb7d2 libreforge-updater 2023-09-02 17:34:44 +01:00
Will FP
f7fab37555 Fixed page changers 2023-09-01 12:32:17 +01:00
Auxilor
a93aac6b6f libreforge-updater 2023-08-31 16:59:46 +01:00
Auxilor
025a74048a Added on-complete 2023-08-31 16:57:13 +01:00
Auxilor
9db9f542c9 libreforge-updater 2023-08-30 11:31:41 +01:00
Auxilor
75a091624c Dynamic experience requirements now lock in when a task starts 2023-08-30 11:09:09 +01:00
Auxilor
17c81ea5b8 Added use-local-storage 2023-08-30 09:50:00 +01:00
Auxilor
81d4faaf0c libreforge-updater 2023-08-26 18:11:44 +01:00
Auxilor
03110e36b1 libreforge-updater 2023-08-23 15:31:59 +01:00
25 changed files with 138 additions and 88 deletions

View File

@@ -15,11 +15,11 @@ jobs:
- name: Checkout latest code - name: Checkout latest code
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Set up JDK 17 - name: Set up JDK 21
uses: actions/setup-java@v2 uses: actions/setup-java@v2
with: with:
distribution: 'temurin' distribution: 'temurin'
java-version: 17 java-version: 21
- name: Change wrapper permissions - name: Change wrapper permissions
run: chmod +x ./gradlew run: chmod +x ./gradlew

View File

@@ -2,8 +2,8 @@ plugins {
java java
`java-library` `java-library`
`maven-publish` `maven-publish`
kotlin("jvm") version "1.7.10" kotlin("jvm") version "1.9.20"
id("com.github.johnrengelman.shadow") version "8.0.0" id("io.github.goooler.shadow") version "8.1.7"
id("com.willfp.libreforge-gradle-plugin") version "1.0.0" id("com.willfp.libreforge-gradle-plugin") version "1.0.0"
} }
@@ -25,7 +25,7 @@ allprojects {
apply(plugin = "java") apply(plugin = "java")
apply(plugin = "kotlin") apply(plugin = "kotlin")
apply(plugin = "maven-publish") apply(plugin = "maven-publish")
apply(plugin = "com.github.johnrengelman.shadow") apply(plugin = "io.github.goooler.shadow")
repositories { repositories {
mavenLocal() mavenLocal()
@@ -39,7 +39,7 @@ allprojects {
dependencies { dependencies {
compileOnly("com.willfp:eco:6.65.0") compileOnly("com.willfp:eco:6.65.0")
compileOnly("org.jetbrains:annotations:23.0.0") compileOnly("org.jetbrains:annotations:23.0.0")
compileOnly("org.jetbrains.kotlin:kotlin-stdlib:1.7.10") compileOnly("org.jetbrains.kotlin:kotlin-stdlib:1.9.20")
} }
java { java {

View File

@@ -3,8 +3,6 @@ package com.willfp.ecoquests.commands
import com.willfp.eco.core.EcoPlugin import com.willfp.eco.core.EcoPlugin
import com.willfp.eco.core.command.impl.PluginCommand import com.willfp.eco.core.command.impl.PluginCommand
import com.willfp.ecoquests.gui.QuestsGUI import com.willfp.ecoquests.gui.QuestsGUI
import com.willfp.libreforge.commands.CommandReload
import org.bukkit.command.CommandSender
import org.bukkit.entity.Player import org.bukkit.entity.Player
class CommandQuests(plugin: EcoPlugin) : PluginCommand( class CommandQuests(plugin: EcoPlugin) : PluginCommand(

View File

@@ -3,11 +3,8 @@ package com.willfp.ecoquests.commands
import com.willfp.eco.core.EcoPlugin import com.willfp.eco.core.EcoPlugin
import com.willfp.eco.core.command.impl.PluginCommand import com.willfp.eco.core.command.impl.PluginCommand
import com.willfp.eco.util.StringUtils import com.willfp.eco.util.StringUtils
import com.willfp.ecoquests.gui.QuestsGUI
import com.willfp.ecoquests.quests.Quests import com.willfp.ecoquests.quests.Quests
import com.willfp.libreforge.commands.CommandReload
import org.bukkit.command.CommandSender import org.bukkit.command.CommandSender
import org.bukkit.entity.Player
import org.bukkit.util.StringUtil import org.bukkit.util.StringUtil
class CommandStart(plugin: EcoPlugin) : PluginCommand( class CommandStart(plugin: EcoPlugin) : PluginCommand(

View File

@@ -12,7 +12,7 @@ class PositionedPageChanger(
direction: PageChanger.Direction direction: PageChanger.Direction
): PositionedComponent { ): PositionedComponent {
private val pageChanger = PageChanger( private val pageChanger = PageChanger(
Items.lookup("item").item, Items.lookup(config.getString("item")).item,
direction direction
) )

View File

@@ -2,9 +2,12 @@ package com.willfp.ecoquests.libreforge
import com.willfp.eco.core.config.interfaces.Config import com.willfp.eco.core.config.interfaces.Config
import com.willfp.ecoquests.quests.Quests import com.willfp.ecoquests.quests.Quests
import com.willfp.libreforge.Dispatcher
import com.willfp.libreforge.NoCompileData import com.willfp.libreforge.NoCompileData
import com.willfp.libreforge.ProvidedHolder
import com.willfp.libreforge.arguments import com.willfp.libreforge.arguments
import com.willfp.libreforge.conditions.Condition import com.willfp.libreforge.conditions.Condition
import com.willfp.libreforge.get
import org.bukkit.entity.Player import org.bukkit.entity.Player
object ConditionHasCompletedQuest : Condition<NoCompileData>("has_completed_quest") { object ConditionHasCompletedQuest : Condition<NoCompileData>("has_completed_quest") {
@@ -12,7 +15,14 @@ object ConditionHasCompletedQuest : Condition<NoCompileData>("has_completed_ques
require("quest", "You must specify the quest ID!") require("quest", "You must specify the quest ID!")
} }
override fun isMet(player: Player, config: Config, compileData: NoCompileData): Boolean { override fun isMet(
dispatcher: Dispatcher<*>,
config: Config,
holder: ProvidedHolder,
compileData: NoCompileData
): Boolean {
val player = dispatcher.get<Player>() ?: return false
val quest = Quests[config.getString("quest")] ?: return false val quest = Quests[config.getString("quest")] ?: return false
return quest.hasCompleted(player) return quest.hasCompleted(player)

View File

@@ -3,9 +3,12 @@ package com.willfp.ecoquests.libreforge
import com.willfp.eco.core.config.interfaces.Config import com.willfp.eco.core.config.interfaces.Config
import com.willfp.ecoquests.quests.Quests import com.willfp.ecoquests.quests.Quests
import com.willfp.ecoquests.tasks.Tasks import com.willfp.ecoquests.tasks.Tasks
import com.willfp.libreforge.Dispatcher
import com.willfp.libreforge.NoCompileData import com.willfp.libreforge.NoCompileData
import com.willfp.libreforge.ProvidedHolder
import com.willfp.libreforge.arguments import com.willfp.libreforge.arguments
import com.willfp.libreforge.conditions.Condition import com.willfp.libreforge.conditions.Condition
import com.willfp.libreforge.get
import org.bukkit.entity.Player import org.bukkit.entity.Player
object ConditionHasCompletedTask : Condition<NoCompileData>("has_completed_task") { object ConditionHasCompletedTask : Condition<NoCompileData>("has_completed_task") {
@@ -14,7 +17,14 @@ object ConditionHasCompletedTask : Condition<NoCompileData>("has_completed_task"
require("task", "You must specify the task ID!") require("task", "You must specify the task ID!")
} }
override fun isMet(player: Player, config: Config, compileData: NoCompileData): Boolean { override fun isMet(
dispatcher: Dispatcher<*>,
config: Config,
holder: ProvidedHolder,
compileData: NoCompileData
): Boolean {
val player = dispatcher.get<Player>() ?: return false
val quest = Quests[config.getString("quest")] ?: return false val quest = Quests[config.getString("quest")] ?: return false
val template = Tasks[config.getString("task")] ?: return false val template = Tasks[config.getString("task")] ?: return false
val task = quest.getTask(template) ?: return false val task = quest.getTask(template) ?: return false

View File

@@ -2,9 +2,12 @@ package com.willfp.ecoquests.libreforge
import com.willfp.eco.core.config.interfaces.Config import com.willfp.eco.core.config.interfaces.Config
import com.willfp.ecoquests.quests.Quests import com.willfp.ecoquests.quests.Quests
import com.willfp.libreforge.Dispatcher
import com.willfp.libreforge.NoCompileData import com.willfp.libreforge.NoCompileData
import com.willfp.libreforge.ProvidedHolder
import com.willfp.libreforge.arguments import com.willfp.libreforge.arguments
import com.willfp.libreforge.conditions.Condition import com.willfp.libreforge.conditions.Condition
import com.willfp.libreforge.get
import org.bukkit.entity.Player import org.bukkit.entity.Player
object ConditionHasQuestActive : Condition<NoCompileData>("has_quest_active") { object ConditionHasQuestActive : Condition<NoCompileData>("has_quest_active") {
@@ -12,7 +15,14 @@ object ConditionHasQuestActive : Condition<NoCompileData>("has_quest_active") {
require("quest", "You must specify the quest ID!") require("quest", "You must specify the quest ID!")
} }
override fun isMet(player: Player, config: Config, compileData: NoCompileData): Boolean { override fun isMet(
dispatcher: Dispatcher<*>,
config: Config,
holder: ProvidedHolder,
compileData: NoCompileData
): Boolean {
val player = dispatcher.get<Player>() ?: return false
val quest = Quests[config.getString("quest")] ?: return false val quest = Quests[config.getString("quest")] ?: return false
return quest.hasActive(player) return quest.hasActive(player)

View File

@@ -4,6 +4,7 @@ import com.willfp.ecoquests.api.event.PlayerTaskExpGainEvent
import com.willfp.ecoquests.quests.Quest import com.willfp.ecoquests.quests.Quest
import com.willfp.ecoquests.quests.Quests import com.willfp.ecoquests.quests.Quests
import com.willfp.libreforge.effects.templates.MultiMultiplierEffect import com.willfp.libreforge.effects.templates.MultiMultiplierEffect
import com.willfp.libreforge.toDispatcher
import org.bukkit.event.EventHandler import org.bukkit.event.EventHandler
object EffectQuestXpMultiplier : MultiMultiplierEffect<Quest>("quest_xp_multiplier") { object EffectQuestXpMultiplier : MultiMultiplierEffect<Quest>("quest_xp_multiplier") {
@@ -19,6 +20,6 @@ object EffectQuestXpMultiplier : MultiMultiplierEffect<Quest>("quest_xp_multipli
@EventHandler(ignoreCancelled = true) @EventHandler(ignoreCancelled = true)
fun handle(event: PlayerTaskExpGainEvent) { fun handle(event: PlayerTaskExpGainEvent) {
event.amount *= getMultiplier(event.player, event.quest) event.amount *= getMultiplier(event.player.toDispatcher(), event.quest)
} }
} }

View File

@@ -2,6 +2,7 @@ package com.willfp.ecoquests.libreforge
import com.willfp.ecoquests.api.event.PlayerQuestCompleteEvent import com.willfp.ecoquests.api.event.PlayerQuestCompleteEvent
import com.willfp.ecoquests.api.event.PlayerQuestStartEvent import com.willfp.ecoquests.api.event.PlayerQuestStartEvent
import com.willfp.libreforge.toDispatcher
import com.willfp.libreforge.triggers.Trigger import com.willfp.libreforge.triggers.Trigger
import com.willfp.libreforge.triggers.TriggerData import com.willfp.libreforge.triggers.TriggerData
import com.willfp.libreforge.triggers.TriggerParameter import com.willfp.libreforge.triggers.TriggerParameter
@@ -18,7 +19,7 @@ object TriggerCompleteQuest : Trigger("complete_quest") {
val player = event.player val player = event.player
this.dispatch( this.dispatch(
player, player.toDispatcher(),
TriggerData( TriggerData(
player = player, player = player,
event = event event = event

View File

@@ -1,6 +1,7 @@
package com.willfp.ecoquests.libreforge package com.willfp.ecoquests.libreforge
import com.willfp.ecoquests.api.event.PlayerTaskCompleteEvent import com.willfp.ecoquests.api.event.PlayerTaskCompleteEvent
import com.willfp.libreforge.toDispatcher
import com.willfp.libreforge.triggers.Trigger import com.willfp.libreforge.triggers.Trigger
import com.willfp.libreforge.triggers.TriggerData import com.willfp.libreforge.triggers.TriggerData
import com.willfp.libreforge.triggers.TriggerParameter import com.willfp.libreforge.triggers.TriggerParameter
@@ -17,7 +18,7 @@ object TriggerCompleteTask : Trigger("complete_task") {
val player = event.player val player = event.player
this.dispatch( this.dispatch(
player, player.toDispatcher(),
TriggerData( TriggerData(
player = player, player = player,
event = event event = event

View File

@@ -1,6 +1,7 @@
package com.willfp.ecoquests.libreforge package com.willfp.ecoquests.libreforge
import com.willfp.ecoquests.api.event.PlayerTaskExpGainEvent import com.willfp.ecoquests.api.event.PlayerTaskExpGainEvent
import com.willfp.libreforge.toDispatcher
import com.willfp.libreforge.triggers.Trigger import com.willfp.libreforge.triggers.Trigger
import com.willfp.libreforge.triggers.TriggerData import com.willfp.libreforge.triggers.TriggerData
import com.willfp.libreforge.triggers.TriggerParameter import com.willfp.libreforge.triggers.TriggerParameter
@@ -19,7 +20,7 @@ object TriggerGainTaskXp : Trigger("gain_task_xp") {
val player = event.player val player = event.player
this.dispatch( this.dispatch(
player, player.toDispatcher(),
TriggerData( TriggerData(
player = player, player = player,
event = event, event = event,

View File

@@ -1,6 +1,7 @@
package com.willfp.ecoquests.libreforge package com.willfp.ecoquests.libreforge
import com.willfp.ecoquests.api.event.PlayerQuestStartEvent import com.willfp.ecoquests.api.event.PlayerQuestStartEvent
import com.willfp.libreforge.toDispatcher
import com.willfp.libreforge.triggers.Trigger import com.willfp.libreforge.triggers.Trigger
import com.willfp.libreforge.triggers.TriggerData import com.willfp.libreforge.triggers.TriggerData
import com.willfp.libreforge.triggers.TriggerParameter import com.willfp.libreforge.triggers.TriggerParameter
@@ -17,7 +18,7 @@ object TriggerStartQuest : Trigger("start_quest") {
val player = event.player val player = event.player
this.dispatch( this.dispatch(
player, player.toDispatcher(),
TriggerData( TriggerData(
player = player, player = player,
event = event event = event

View File

@@ -28,6 +28,7 @@ import com.willfp.libreforge.ViolationContext
import com.willfp.libreforge.conditions.Conditions import com.willfp.libreforge.conditions.Conditions
import com.willfp.libreforge.effects.Effects import com.willfp.libreforge.effects.Effects
import com.willfp.libreforge.effects.executors.impl.NormalExecutorFactory import com.willfp.libreforge.effects.executors.impl.NormalExecutorFactory
import com.willfp.libreforge.toDispatcher
import org.bukkit.Bukkit import org.bukkit.Bukkit
import org.bukkit.OfflinePlayer import org.bukkit.OfflinePlayer
import org.bukkit.entity.Player import org.bukkit.entity.Player
@@ -58,7 +59,7 @@ class Quest(
) )
addLoreLines( addLoreLines(
startConditions.getNotMetLines(player, EmptyProvidedHolder) startConditions.getNotMetLines(player.toDispatcher(), EmptyProvidedHolder)
) )
setDisplayName( setDisplayName(
@@ -222,6 +223,28 @@ class Quest(
.formatEco(it) .formatEco(it)
} }
}.register() }.register()
for (i in 1..this.tasks.size+1) {
PlayerPlaceholder(plugin, "quest_${id}_task_${i}_required_xp") {
this.tasks[i-1].getExperienceRequired(it).toNiceString()
}.register()
PlayerPlaceholder(plugin, "quest_${id}_task_${i}_xp") {
this.tasks[i-1].getExperience(it).toNiceString()
}.register()
PlayerPlaceholder(plugin, "quest_${id}_task_${i}_description") {
this.tasks[i-1].getDescription(it)
}.register()
PlayerPlaceholder(plugin, "quest_${id}_task_${i}_completed") {
this.tasks[i-1].hasCompleted(it).toNiceString()
}.register()
PlayerPlaceholder(plugin, "quest_${id}_task_${i}_completed_description") {
this.tasks[i-1].getCompletedDescription(it)
}.register()
}
} }
override fun onRegister() { override fun onRegister() {
@@ -257,7 +280,7 @@ class Quest(
} }
fun meetsStartConditions(player: Player): Boolean { fun meetsStartConditions(player: Player): Boolean {
return startConditions.areMet(player, EmptyProvidedHolder) return startConditions.areMet(player.toDispatcher(), EmptyProvidedHolder)
} }
fun shouldStart(player: Player): Boolean { fun shouldStart(player: Player): Boolean {
@@ -282,10 +305,15 @@ class Quest(
return return
} }
startEffects?.trigger(player) startEffects?.trigger(player.toDispatcher())
player.profile.write(hasStartedKey, true) player.profile.write(hasStartedKey, true)
player.profile.write(startedTimeKey, currentTimeMinutes) 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)) Bukkit.getPluginManager().callEvent(PlayerQuestStartEvent(player, this))
} }
@@ -403,7 +431,7 @@ class Quest(
private fun complete(player: Player) { private fun complete(player: Player) {
player.profile.write(hasCompletedKey, true) player.profile.write(hasCompletedKey, true)
player.profile.write(completedTimeKey, currentTimeMinutes) player.profile.write(completedTimeKey, currentTimeMinutes)
rewards?.trigger(player) rewards?.trigger(player.toDispatcher())
Bukkit.getPluginManager().callEvent(PlayerQuestCompleteEvent(player, this)) Bukkit.getPluginManager().callEvent(PlayerQuestCompleteEvent(player, this))
} }

View File

@@ -15,6 +15,7 @@ import com.willfp.ecoquests.api.event.PlayerTaskExpGainEvent
import com.willfp.ecoquests.quests.Quest import com.willfp.ecoquests.quests.Quest
import com.willfp.ecoquests.quests.Quests import com.willfp.ecoquests.quests.Quests
import com.willfp.libreforge.counters.Accumulator import com.willfp.libreforge.counters.Accumulator
import com.willfp.libreforge.toDispatcher
import org.bukkit.Bukkit import org.bukkit.Bukkit
import org.bukkit.OfflinePlayer import org.bukkit.OfflinePlayer
import org.bukkit.entity.Player import org.bukkit.entity.Player
@@ -32,6 +33,12 @@ class Task(
0.0 0.0
) )
private val xpRequiredKey = PersistentDataKey(
plugin.createNamespacedKey("${quest.id}_task_${template.id}_xp_required"),
PersistentDataKeyType.DOUBLE,
0.0
)
private val hasCompletedKey = PersistentDataKey( private val hasCompletedKey = PersistentDataKey(
plugin.createNamespacedKey("${quest.id}_task_${template.id}_has_completed"), plugin.createNamespacedKey("${quest.id}_task_${template.id}_has_completed"),
PersistentDataKeyType.BOOLEAN, PersistentDataKeyType.BOOLEAN,
@@ -89,7 +96,7 @@ class Task(
return player.profile.read(hasCompletedKey) return player.profile.read(hasCompletedKey)
} }
fun getExperienceRequired(player: Player): Double { private fun generateExperienceRequired(player: Player): Double {
return evaluateExpression( return evaluateExpression(
xpExpr, xpExpr,
placeholderContext( placeholderContext(
@@ -98,6 +105,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 { fun getExperience(player: OfflinePlayer): Double {
return player.profile.read(xpKey) return player.profile.read(xpKey)
} }
@@ -128,6 +153,7 @@ class Task(
if (newXp >= requiredXp) { if (newXp >= requiredXp) {
player.profile.write(hasCompletedKey, true) player.profile.write(hasCompletedKey, true)
template.onComplete?.trigger(player.toDispatcher())
Bukkit.getPluginManager().callEvent(PlayerTaskCompleteEvent(player, template, quest)) Bukkit.getPluginManager().callEvent(PlayerTaskCompleteEvent(player, template, quest))

View File

@@ -6,6 +6,7 @@ import com.willfp.eco.core.registry.KRegistrable
import com.willfp.ecoquests.quests.Quest import com.willfp.ecoquests.quests.Quest
import com.willfp.libreforge.ViolationContext import com.willfp.libreforge.ViolationContext
import com.willfp.libreforge.counters.Counters import com.willfp.libreforge.counters.Counters
import com.willfp.libreforge.effects.Effects
class TaskTemplate( class TaskTemplate(
private val plugin: EcoPlugin, private val plugin: EcoPlugin,
@@ -16,6 +17,11 @@ class TaskTemplate(
Counters.compile(it, ViolationContext(plugin, "task $id tasks")) Counters.compile(it, ViolationContext(plugin, "task $id tasks"))
} }
val onComplete = Effects.compileChain(
config.getSubsections("on-complete"),
ViolationContext(plugin, "task $id on-complete")
)
fun create(quest: Quest, xpExpr: String) = fun create(quest: Quest, xpExpr: String) =
Task(plugin, this, quest, xpExpr) Task(plugin, this, quest, xpExpr)
} }

View File

@@ -3,6 +3,11 @@
# by Auxilor # 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) scan-interval: 20 # How often to scan for quests auto-starting (in ticks)
gui: gui:

View File

@@ -1,52 +0,0 @@
name: ${pluginName}
version: ${version}
main: com.willfp.ecoquests.EcoQuestsPlugin
api-version: 1.19
dependencies:
- name: eco
required: true
bootstrap: false
- name: libreforge
required: false
bootstrap: false
load-after:
- name: eco
bootstrap: false
permissions:
ecoquests.*:
description: All ecoquests permissions
default: op
children:
ecoquests.command.*: true
ecoquests.command.*:
description: All commands
default: op
children:
ecoquests.command.reload: true
ecoquests.command.quests: true
ecoquests.command.start: true
ecoquests.command.reset: true
ecoquests.command.resetplayer: true
ecoquests.command.reload:
description: Allows reloading the config
default: op
ecoquests.command.ecoquests:
description: Allows the use of /ecoquests.
default: true
ecoquests.command.quests:
description: Allows the use of /quests.
default: true
ecoquests.command.start:
description: Allows using /ecoquests start.
default: op
ecoquests.command.reset:
description: Allows using /ecoquests reset.
default: op
ecoquests.command.resetplayer:
description: Allows using /ecoquests resetplayer.
default: op

View File

@@ -21,3 +21,10 @@ xp-gain-methods:
filters: filters:
blocks: blocks:
- stone - stone
# An optional list of effects to run when a player completes the task
# Read here: https://plugins.auxilor.io/effects/configuring-an-effect
on-complete:
- id: send_message
args:
message: "Task Completed!"

View File

@@ -1,5 +1,5 @@
#libreforge-updater #libreforge-updater
#Sat Aug 19 15:32:52 BST 2023 #Thu Jul 25 10:04:39 BST 2024
kotlin.code.style=official kotlin.code.style=official
libreforge-version=4.29.1 libreforge-version=4.70.0
version=1.2.1 version=1.41.0

Binary file not shown.

View File

@@ -1,5 +1,7 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

0
gradlew vendored Normal file → Executable file
View File

View File

@@ -1,6 +0,0 @@
jdk: openjdk17
before_install:
- source "$HOME/.sdkman/bin/sdkman-init.sh"
- sdk update
- sdk install java 17.0.1-tem
- sdk use java 17.0.1-tem

View File

@@ -2,11 +2,15 @@ pluginManagement {
repositories { repositories {
gradlePluginPortal() gradlePluginPortal()
mavenLocal() mavenLocal()
maven("https://repo.jpenilla.xyz/snapshots/")
maven("https://repo.auxilor.io/repository/maven-public/") maven("https://repo.auxilor.io/repository/maven-public/")
maven("https://repo.papermc.io/repository/maven-public/")
} }
} }
plugins {
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
}
rootProject.name = "EcoQuests" rootProject.name = "EcoQuests"
// Core // Core