From 025a74048a67167bfdb7f1e4dbe2721cb48e66de Mon Sep 17 00:00:00 2001 From: Auxilor Date: Thu, 31 Aug 2023 16:57:13 +0100 Subject: [PATCH] Added on-complete --- .../src/main/kotlin/com/willfp/ecoquests/tasks/Task.kt | 1 + .../main/kotlin/com/willfp/ecoquests/tasks/TaskTemplate.kt | 6 ++++++ eco-core/core-plugin/src/main/resources/tasks/_example.yml | 7 +++++++ 3 files changed, 14 insertions(+) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoquests/tasks/Task.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoquests/tasks/Task.kt index fed7e07..6a8af9d 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoquests/tasks/Task.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoquests/tasks/Task.kt @@ -152,6 +152,7 @@ class Task( if (newXp >= requiredXp) { player.profile.write(hasCompletedKey, true) + template.onComplete?.trigger(player) Bukkit.getPluginManager().callEvent(PlayerTaskCompleteEvent(player, template, quest)) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoquests/tasks/TaskTemplate.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoquests/tasks/TaskTemplate.kt index 6e7e77f..c1d1736 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoquests/tasks/TaskTemplate.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoquests/tasks/TaskTemplate.kt @@ -6,6 +6,7 @@ import com.willfp.eco.core.registry.KRegistrable import com.willfp.ecoquests.quests.Quest import com.willfp.libreforge.ViolationContext import com.willfp.libreforge.counters.Counters +import com.willfp.libreforge.effects.Effects class TaskTemplate( private val plugin: EcoPlugin, @@ -16,6 +17,11 @@ class TaskTemplate( 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) = Task(plugin, this, quest, xpExpr) } diff --git a/eco-core/core-plugin/src/main/resources/tasks/_example.yml b/eco-core/core-plugin/src/main/resources/tasks/_example.yml index ca5c39d..fa86cc9 100644 --- a/eco-core/core-plugin/src/main/resources/tasks/_example.yml +++ b/eco-core/core-plugin/src/main/resources/tasks/_example.yml @@ -21,3 +21,10 @@ xp-gain-methods: filters: blocks: - 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!"