summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLMBishop <13875753+LMBishop@users.noreply.github.com>2021-09-12 20:20:43 +0100
committerLMBishop <13875753+LMBishop@users.noreply.github.com>2021-09-12 20:20:43 +0100
commitdf222745d02e26a0605fcf6191a0d16001d15c69 (patch)
treed62905fb11f339e15813e196d73a6afd657c0580
parentdc81e1ef1bedbd7d37dabc4236bf7c160ad53330 (diff)
Add citizens ID support (closes #271)
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensDeliverTaskType.java21
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensInteractTaskType.java17
2 files changed, 27 insertions, 11 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensDeliverTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensDeliverTaskType.java
index 110d0ba6..256216b0 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensDeliverTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensDeliverTaskType.java
@@ -15,6 +15,7 @@ import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress;
import com.leonardobishop.quests.common.quest.Quest;
import com.leonardobishop.quests.common.quest.Task;
import net.citizensnpcs.api.event.NPCRightClickEvent;
+import net.citizensnpcs.api.npc.NPC;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
@@ -45,7 +46,11 @@ public final class CitizensDeliverTaskType extends BukkitTaskType {
TaskUtils.configValidateItemStack(root + ".item", config.get("item"), problems, false, "item");
if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
- TaskUtils.configValidateExists(root + ".npc-name", config.get("npc-name"), problems, "npc-name", super.getType());
+ if (!config.containsKey("npc-name")) {
+ TaskUtils.configValidateExists(root + ".npc-id", config.get("npc-id"), problems, "npc-id", super.getType());
+ } else {
+ TaskUtils.configValidateExists(root + ".npc-name", config.get("npc-name"), problems, "npc-name", super.getType());
+ }
TaskUtils.configValidateBoolean(root + ".remove-items-when-complete", config.get("remove-items-when-complete"), problems, true, "remove-items-when-complete", super.getType());
return problems;
}
@@ -57,11 +62,11 @@ public final class CitizensDeliverTaskType extends BukkitTaskType {
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onNPCClick(NPCRightClickEvent event) {
- Bukkit.getScheduler().runTaskLater(plugin, () -> checkInventory(event.getClicker(), event.getNPC().getName()), 1L);
+ Bukkit.getScheduler().runTaskLater(plugin, () -> checkInventory(event.getClicker(), event.getNPC()), 1L);
}
@SuppressWarnings("deprecation")
- private void checkInventory(Player player, String citizenName) {
+ private void checkInventory(Player player, NPC npc) {
if (player == null || !player.isOnline()) {
return;
}
@@ -75,9 +80,13 @@ public final class CitizensDeliverTaskType extends BukkitTaskType {
QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
- if (!Chat.strip(Chat.color(String.valueOf(task.getConfigValue("npc-name"))))
- .equals(Chat.strip(Chat.color(citizenName)))) {
- return;
+ if (task.getConfigValue("npc-name") != null) {
+ if (!Chat.strip(Chat.color(String.valueOf(task.getConfigValue("npc-name"))))
+ .equals(Chat.strip(Chat.color(npc.getName())))) {
+ continue;
+ }
+ } else if (!task.getConfigValue("npc-id").equals(npc.getId())) {
+ continue;
}
if (!TaskUtils.validateWorld(player, task)) continue;
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensInteractTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensInteractTaskType.java
index 237e5bf2..794701d9 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensInteractTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensInteractTaskType.java
@@ -31,8 +31,11 @@ public final class CitizensInteractTaskType extends BukkitTaskType {
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- TaskUtils.configValidateExists(root + ".npc-name", config.get("npc-name"), problems, "npc-name", super.getType());
- TaskUtils.configValidateBoolean(root + ".remove-items-when-complete", config.get("remove-items-when-complete"), problems, true, "remove-items-when-complete", super.getType());
+ if (!config.containsKey("npc-name")) {
+ TaskUtils.configValidateExists(root + ".npc-id", config.get("npc-id"), problems, "npc-id", super.getType());
+ } else {
+ TaskUtils.configValidateExists(root + ".npc-name", config.get("npc-name"), problems, "npc-name", super.getType());
+ }
return problems;
}
@@ -50,9 +53,13 @@ public final class CitizensInteractTaskType extends BukkitTaskType {
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(event.getClicker(), task)) continue;
- if (!Chat.strip(Chat.color(String.valueOf(task.getConfigValue("npc-name"))))
- .equals(Chat.strip(Chat.color(event.getNPC().getName())))) {
- return;
+ if (task.getConfigValue("npc-name") != null) {
+ if (!Chat.strip(Chat.color(String.valueOf(task.getConfigValue("npc-name"))))
+ .equals(Chat.strip(Chat.color(event.getNPC().getName())))) {
+ continue;
+ }
+ } else if (!task.getConfigValue("npc-id").equals(event.getNPC().getId())) {
+ continue;
}
TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());