summaryrefslogtreecommitdiffstats
path: root/src/main/java
diff options
context:
space:
mode:
authorLMBishop <13875753+LMBishop@users.noreply.github.com>2021-02-04 18:52:21 +0000
committerLMBishop <13875753+LMBishop@users.noreply.github.com>2021-02-04 18:52:21 +0000
commit0fb0ad7eec239fc434704555580ce079d38ad701 (patch)
tree92f4928e7456a25148c7d9738da45ee131e27f2c /src/main/java
parent819a3dac6e5b32f35a063221ae8bb249572f13cc (diff)
Add essentials balance and money earn task types
- Closes #118
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/leonardobishop/quests/Quests.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/EssentialsBalanceTaskType.java100
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/EssentialsMoneyEarnTaskType.java83
3 files changed, 188 insertions, 1 deletions
diff --git a/src/main/java/com/leonardobishop/quests/Quests.java b/src/main/java/com/leonardobishop/quests/Quests.java
index e499c69a..722753cc 100644
--- a/src/main/java/com/leonardobishop/quests/Quests.java
+++ b/src/main/java/com/leonardobishop/quests/Quests.java
@@ -175,6 +175,10 @@ public class Quests extends JavaPlugin {
if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
taskTypeManager.registerTaskType(new PlaceholderAPIEvaluateTaskType());
}
+ if (Bukkit.getPluginManager().isPluginEnabled("Essentials")) {
+ taskTypeManager.registerTaskType(new EssentialsMoneyEarnTaskType());
+ taskTypeManager.registerTaskType(new EssentialsBalanceTaskType());
+ }
taskTypeManager.closeRegistrations();
reloadQuests();
@@ -206,7 +210,6 @@ public class Quests extends JavaPlugin {
@Override
public void onDisable() {
- if (placeholder != null) placeholder.unregister();
for (TaskType taskType : getTaskTypeManager().getTaskTypes()) {
try {
taskType.onDisable();
@@ -215,6 +218,7 @@ public class Quests extends JavaPlugin {
for (QPlayer qPlayer : qPlayerManager.getQPlayers()) {
qPlayer.getQuestProgressFile().saveToDisk(true);
}
+ if (placeholder != null) placeholder.unregister();
}
public void reloadQuests() {
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/EssentialsBalanceTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/EssentialsBalanceTaskType.java
new file mode 100644
index 00000000..54f972ad
--- /dev/null
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/EssentialsBalanceTaskType.java
@@ -0,0 +1,100 @@
+package com.leonardobishop.quests.quests.tasktypes.types.dependent;
+
+import com.earth2me.essentials.Essentials;
+import com.leonardobishop.quests.QuestsConfigLoader;
+import com.leonardobishop.quests.api.QuestsAPI;
+import com.leonardobishop.quests.player.QPlayer;
+import com.leonardobishop.quests.player.questprogressfile.QuestProgress;
+import com.leonardobishop.quests.player.questprogressfile.QuestProgressFile;
+import com.leonardobishop.quests.player.questprogressfile.TaskProgress;
+import com.leonardobishop.quests.quests.Quest;
+import com.leonardobishop.quests.quests.Task;
+import com.leonardobishop.quests.quests.tasktypes.ConfigValue;
+import com.leonardobishop.quests.quests.tasktypes.TaskType;
+import com.leonardobishop.quests.quests.tasktypes.TaskUtils;
+import net.ess3.api.events.UserBalanceUpdateEvent;
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.UUID;
+
+public class EssentialsBalanceTaskType extends TaskType {
+
+ private List<ConfigValue> creatorConfigValues = new ArrayList<>();
+
+ public EssentialsBalanceTaskType() {
+ super("essentials_balance", "LMBishop", "Reach a set amount of money.");
+ this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of money to reach."));
+ }
+
+ @Override
+ public List<QuestsConfigLoader.ConfigProblem> detectProblemsInConfig(String root, HashMap<String, Object> config) {
+ ArrayList<QuestsConfigLoader.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, false, "amount");
+ return problems;
+ }
+
+ @Override
+ public void onStart(Quest quest, Task task, UUID playerUUID) {
+ Player player = Bukkit.getPlayer(playerUUID);
+ Essentials ess = (Essentials) Bukkit.getPluginManager().getPlugin("Essentials");
+ if (player != null && player.isOnline() && ess != null) {
+ QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(playerUUID);
+ QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
+ QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
+
+ int earningsNeeded = (int) task.getConfigValue("amount");
+ BigDecimal money = ess.getUser(player).getMoney();
+ taskProgress.setProgress(money);
+ if (money.compareTo(BigDecimal.valueOf(earningsNeeded)) > 0) {
+ taskProgress.setCompleted(true);
+ }
+ }
+ }
+
+ @Override
+ public List<ConfigValue> getCreatorConfigValues() {
+ return creatorConfigValues;
+ }
+
+ @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
+ public void onMoneyEarn(UserBalanceUpdateEvent event) {
+ QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(event.getPlayer().getUniqueId(), true);
+ if (qPlayer == null) {
+ return;
+ }
+
+ QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
+
+ for (Quest quest : super.getRegisteredQuests()) {
+ if (questProgressFile.hasStartedQuest(quest)) {
+ QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+
+ for (Task task : quest.getTasksOfType(super.getType())) {
+ TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
+
+ if (taskProgress.isCompleted()) {
+ continue;
+ }
+
+ int earningsNeeded = (int) task.getConfigValue("amount");
+
+ taskProgress.setProgress(event.getNewBalance());
+
+ if (event.getNewBalance().compareTo(BigDecimal.valueOf(earningsNeeded)) > 0) {
+ taskProgress.setCompleted(true);
+ }
+ }
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/EssentialsMoneyEarnTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/EssentialsMoneyEarnTaskType.java
new file mode 100644
index 00000000..3d054a86
--- /dev/null
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/EssentialsMoneyEarnTaskType.java
@@ -0,0 +1,83 @@
+package com.leonardobishop.quests.quests.tasktypes.types.dependent;
+
+import com.leonardobishop.quests.QuestsConfigLoader;
+import com.leonardobishop.quests.api.QuestsAPI;
+import com.leonardobishop.quests.player.QPlayer;
+import com.leonardobishop.quests.player.questprogressfile.QuestProgress;
+import com.leonardobishop.quests.player.questprogressfile.QuestProgressFile;
+import com.leonardobishop.quests.player.questprogressfile.TaskProgress;
+import com.leonardobishop.quests.quests.Quest;
+import com.leonardobishop.quests.quests.Task;
+import com.leonardobishop.quests.quests.tasktypes.ConfigValue;
+import com.leonardobishop.quests.quests.tasktypes.TaskType;
+import com.leonardobishop.quests.quests.tasktypes.TaskUtils;
+import net.ess3.api.events.UserBalanceUpdateEvent;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+public class EssentialsMoneyEarnTaskType extends TaskType {
+
+ private List<ConfigValue> creatorConfigValues = new ArrayList<>();
+
+ public EssentialsMoneyEarnTaskType() {
+ super("essentials_moneyearn", "LMBishop", "Earn a set amount of money.");
+ this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of money to earn."));
+ }
+
+ @Override
+ public List<QuestsConfigLoader.ConfigProblem> detectProblemsInConfig(String root, HashMap<String, Object> config) {
+ ArrayList<QuestsConfigLoader.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, false, "amount");
+ return problems;
+ }
+
+
+ @Override
+ public List<ConfigValue> getCreatorConfigValues() {
+ return creatorConfigValues;
+ }
+
+ @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
+ public void onMoneyEarn(UserBalanceUpdateEvent event) {
+ QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(event.getPlayer().getUniqueId(), true);
+ if (qPlayer == null) {
+ return;
+ }
+
+ QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
+
+ for (Quest quest : super.getRegisteredQuests()) {
+ if (questProgressFile.hasStartedQuest(quest)) {
+ QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+
+ for (Task task : quest.getTasksOfType(super.getType())) {
+ TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
+
+ if (taskProgress.isCompleted()) {
+ continue;
+ }
+
+ int earningsNeeded = (int) task.getConfigValue("amount");
+
+ BigDecimal current = (BigDecimal) taskProgress.getProgress();
+ if (current == null) {
+ current = new BigDecimal(0);
+ }
+ BigDecimal newProgress = current.add(event.getNewBalance().subtract(event.getOldBalance()));
+ taskProgress.setProgress(newProgress);
+
+ if (newProgress.compareTo(BigDecimal.valueOf(earningsNeeded)) > 0) {
+ taskProgress.setCompleted(true);
+ }
+ }
+ }
+ }
+ }
+
+}