diff options
| author | Krakenied <Krakenied1@gmail.com> | 2023-03-24 19:45:33 +0100 |
|---|---|---|
| committer | Leonardo Bishop <13875753+LMBishop@users.noreply.github.com> | 2023-04-02 12:20:10 +0100 |
| commit | 042368eb79cef65a7036d08d164cd9ca5e6b069d (patch) | |
| tree | ad1aad57f331252324e663d0e2bfedece4502dc5 | |
| parent | a37bb726e6e26b98f6a2326476d79d111279551b (diff) | |
Add PlayerPoints support
Partially closes https://github.com/LMBishop/Quests/issues/494
4 files changed, 74 insertions, 1 deletions
diff --git a/bukkit/build.gradle b/bukkit/build.gradle index 95af96c6..2a406e66 100644 --- a/bukkit/build.gradle +++ b/bukkit/build.gradle @@ -34,6 +34,8 @@ repositories { maven { url = 'https://repo.extendedclip.com/content/repositories/dev/' } // PlayerBlockTracker, SCore, ShopGUIPlus, Slimefun4 maven { url = 'https://jitpack.io/' } + // PlayerPoints + maven { url = 'https://repo.rosewooddev.io/repository/public/' } // SuperiorSkyblock2 maven { url = 'https://repo.bg-software.com/repository/api/' } // uSkyBlock @@ -83,6 +85,8 @@ dependencies { compileOnly 'me.clip:placeholderapi:2.11.3-DEV-160' // PlayerBlockTracker compileOnly('com.github.Flo0:PlayerBlockTracker:1.0.2') { transitive = false } + // PlayerPoints + compileOnly('org.black_ixx:playerpoints:3.2.5') // SCore compileOnly 'com.github.Ssomar-Developement:SCore:3.4.7' // ShopGUIPlus diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java index 8146d177..7dc96182 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java @@ -356,6 +356,9 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { taskTypeManager.registerTaskType(new EssentialsMoneyEarnTaskType(this)); taskTypeManager.registerTaskType(new EssentialsBalanceTaskType(this)); } + if (Bukkit.getPluginManager().isPluginEnabled("PlayerPoints")) { + taskTypeManager.registerTaskType(new PlayerPointsEarnTaskType(this)); + } if (Bukkit.getPluginManager().isPluginEnabled("ShopGUIPlus")) { // not tested String shopGUIPlusVersion = Bukkit.getPluginManager().getPlugin("ShopGUIPlus").getDescription().getVersion(); diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/PlayerPointsEarnTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/PlayerPointsEarnTaskType.java new file mode 100644 index 00000000..4d833c39 --- /dev/null +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/PlayerPointsEarnTaskType.java @@ -0,0 +1,66 @@ +package com.leonardobishop.quests.bukkit.tasktype.type.dependent; + +import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; +import com.leonardobishop.quests.bukkit.tasktype.BukkitTaskType; +import com.leonardobishop.quests.bukkit.util.TaskUtils; +import com.leonardobishop.quests.common.player.QPlayer; +import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress; +import com.leonardobishop.quests.common.quest.Quest; +import com.leonardobishop.quests.common.quest.Task; +import org.black_ixx.playerpoints.event.PlayerPointsChangeEvent; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; + +import java.util.UUID; + +public final class PlayerPointsEarnTaskType extends BukkitTaskType { + + private final BukkitQuestsPlugin plugin; + + public PlayerPointsEarnTaskType(BukkitQuestsPlugin plugin) { + super("playerpoints_earn", TaskUtils.TASK_ATTRIBUTION_STRING, "Earn a set amount of points."); + this.plugin = plugin; + + super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount")); + super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount")); + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onPlayerPointsChange(PlayerPointsChangeEvent event) { + UUID playerId = event.getPlayerId(); + int change = event.getChange(); + + Player player = Bukkit.getPlayer(playerId); + if (player == null || player.hasMetadata("NPC")) { + return; + } + + QPlayer qPlayer = plugin.getPlayerManager().getPlayer(playerId); + if (qPlayer == null) { + return; + } + + for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(player, qPlayer, this)) { + Quest quest = pendingTask.quest(); + Task task = pendingTask.task(); + TaskProgress taskProgress = pendingTask.taskProgress(); + + super.debug("Player points changed: " + change, quest.getId(), task.getId(), playerId); + + int amount = (int) task.getConfigValue("amount"); + + int progress = TaskUtils.getIntegerTaskProgress(taskProgress); + int newProgress = change != 0 ? progress + change : 0; + taskProgress.setProgress(newProgress); + super.debug("Updating task progress (now " + newProgress + ")", quest.getId(), task.getId(), playerId); + + if (newProgress >= amount) { + super.debug("Marking task as complete", quest.getId(), task.getId(), playerId); + taskProgress.setProgress(amount); + taskProgress.setCompleted(true); + } + } + } +} diff --git a/bukkit/src/main/resources/plugin.yml b/bukkit/src/main/resources/plugin.yml index 4f31e2ec..b36a207e 100644 --- a/bukkit/src/main/resources/plugin.yml +++ b/bukkit/src/main/resources/plugin.yml @@ -6,7 +6,7 @@ version: "${version}" main: com.leonardobishop.quests.bukkit.BukkitQuestsPlugin website: https://github.com/LMBishop/Quests author: "LMBishop & contributors" -softdepend: [ASkyBlock, BentoBox, Citizens, CoreProtect, Essentials, FabledSkyblock, IridiumSkyblock, MythicMobs, PlaceholderAPI, PlayerBlockTracker, ShopGUIPlus, SuperiorSkyblock2, uSkyBlock, Votifier, VotingPlugin] +softdepend: [ASkyBlock, BentoBox, Citizens, CoreProtect, Essentials, FabledSkyblock, IridiumSkyblock, MythicMobs, PlaceholderAPI, PlayerBlockTracker, PlayerPoints, ShopGUIPlus, SuperiorSkyblock2, uSkyBlock, Votifier, VotingPlugin] prefix: Quests api-version: "1.13" # allows new API features but Quests will still work pre-1.13 |
