summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bukkit/build.gradle4
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java20
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/VotingPluginVoteType.java84
3 files changed, 93 insertions, 15 deletions
diff --git a/bukkit/build.gradle b/bukkit/build.gradle
index 3956ad25..b1d27dbf 100644
--- a/bukkit/build.gradle
+++ b/bukkit/build.gradle
@@ -38,6 +38,8 @@ repositories {
maven { url = 'https://repo.songoda.com/repository/public/' }
// SuperiorSkyblock
maven { url = 'https://repo.bg-software.com/repository/api/' }
+ // VotingPlugin
+ maven { url = 'https://nexus.bencodez.com/repository/maven-public/'}
mavenCentral()
}
@@ -96,6 +98,8 @@ dependencies {
}
// SuperiorSkyblock
compileOnly 'com.bgsoftware:SuperiorSkyblockAPI:latest'
+ // VotingPlugin
+ compileOnly 'com.bencodez:votingplugin:6.5.2'
// bStats
implementation 'org.bstats:bstats-bukkit-lite:1.8'
// HikariCP
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 3dfdd20b..eb87b3b4 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java
@@ -53,21 +53,7 @@ import com.leonardobishop.quests.bukkit.tasktype.type.PositionTaskType;
import com.leonardobishop.quests.bukkit.tasktype.type.ShearingTaskType;
import com.leonardobishop.quests.bukkit.tasktype.type.TamingTaskType;
import com.leonardobishop.quests.bukkit.tasktype.type.WalkingTaskType;
-import com.leonardobishop.quests.bukkit.tasktype.type.dependent.ASkyBlockLevelTaskType;
-import com.leonardobishop.quests.bukkit.tasktype.type.dependent.BentoBoxLevelTaskType;
-import com.leonardobishop.quests.bukkit.tasktype.type.dependent.CitizensDeliverTaskType;
-import com.leonardobishop.quests.bukkit.tasktype.type.dependent.CitizensInteractTaskType;
-import com.leonardobishop.quests.bukkit.tasktype.type.dependent.EssentialsBalanceTaskType;
-import com.leonardobishop.quests.bukkit.tasktype.type.dependent.EssentialsMoneyEarnTaskType;
-import com.leonardobishop.quests.bukkit.tasktype.type.dependent.FabledSkyblockLevelTaskType;
-import com.leonardobishop.quests.bukkit.tasktype.type.dependent.IridiumSkyblockValueTaskType;
-import com.leonardobishop.quests.bukkit.tasktype.type.dependent.MythicMobsKillingType;
-import com.leonardobishop.quests.bukkit.tasktype.type.dependent.PlaceholderAPIEvaluateTaskType;
-import com.leonardobishop.quests.bukkit.tasktype.type.dependent.ShopGUIPlusBuyCertainTaskType;
-import com.leonardobishop.quests.bukkit.tasktype.type.dependent.ShopGUIPlusSellCertainTaskType;
-import com.leonardobishop.quests.bukkit.tasktype.type.dependent.SuperiorSkyblockLevelType;
-import com.leonardobishop.quests.bukkit.tasktype.type.dependent.SuperiorSkyblockWorthType;
-import com.leonardobishop.quests.bukkit.tasktype.type.dependent.uSkyBlockLevelTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.dependent.*;
import com.leonardobishop.quests.common.config.ConfigProblem;
import com.leonardobishop.quests.common.config.ConfigProblemDescriptions;
import com.leonardobishop.quests.common.config.QuestsConfig;
@@ -366,6 +352,10 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests {
taskTypeManager.registerTaskType(new SuperiorSkyblockLevelType(this));
taskTypeManager.registerTaskType(new SuperiorSkyblockWorthType(this));
}
+ if (Bukkit.getPluginManager().isPluginEnabled("VotingPlugin")) {
+ // not tested
+ taskTypeManager.registerTaskType(new VotingPluginVoteType(this));
+ }
taskTypeManager.closeRegistrations();
questsLogger.info(taskTypeManager.getTaskTypes().size() + " task types have been registered"
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/VotingPluginVoteType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/VotingPluginVoteType.java
new file mode 100644
index 00000000..4e0d705b
--- /dev/null
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/VotingPluginVoteType.java
@@ -0,0 +1,84 @@
+package com.leonardobishop.quests.bukkit.tasktype.type.dependent;
+
+import com.bencodez.votingplugin.events.PlayerVoteEvent;
+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.config.ConfigProblem;
+import com.leonardobishop.quests.common.player.QPlayer;
+import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress;
+import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress;
+import com.leonardobishop.quests.common.quest.Quest;
+import com.leonardobishop.quests.common.quest.Task;
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+public final class VotingPluginVoteType extends BukkitTaskType {
+
+ private final BukkitQuestsPlugin plugin;
+
+ public VotingPluginVoteType(BukkitQuestsPlugin plugin) {
+ super("votingplugin_vote", TaskUtils.TASK_ATTRIBUTION_STRING, "Vote a set amount of times.");
+ this.plugin = plugin;
+ }
+
+ @Override
+ public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
+ ArrayList<ConfigProblem> problems = new ArrayList<>();
+ if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+ TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+ return problems;
+ }
+
+ @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
+ public void onVote(PlayerVoteEvent event) {
+ String voter = event.getPlayer();
+ Player player = Bukkit.getPlayer(voter);
+
+ if (player == null) {
+ return;
+ }
+
+ QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId());
+ if (qPlayer == null) {
+ return;
+ }
+
+ for (Quest quest : super.getRegisteredQuests()) {
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
+
+ for (Task task : quest.getTasksOfType(super.getType())) {
+ TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
+
+ if (taskProgress.isCompleted()) {
+ continue;
+ }
+
+ int votesNeeded = (int) task.getConfigValue("amount");
+
+ int progressVotes;
+ if (taskProgress.getProgress() == null) {
+ progressVotes = 0;
+ } else {
+ progressVotes = (int) taskProgress.getProgress();
+ }
+
+ taskProgress.setProgress(votesNeeded + 1);
+
+ if (((int) taskProgress.getProgress()) >= votesNeeded) {
+ taskProgress.setCompleted(true);
+ }
+ }
+ }
+ }
+ }
+
+}