aboutsummaryrefslogtreecommitdiffstats
path: root/bukkit/src
diff options
context:
space:
mode:
authorKrakenied <Krakenied1@gmail.com>2024-07-13 13:24:06 +0200
committerKrakenied <46192742+Krakenied@users.noreply.github.com>2024-08-28 11:37:11 +0200
commit68aaae802d6a047b4ee5c9035dca89990ce8c11c (patch)
tree0de5b793be815e6643259c18f7835f30fa72871d /bukkit/src
parentef0a494153ec26dfa79d1ad5bb44a1df40b081dc (diff)
Add support for multiple NPC ids in deliver/interact task types
Diffstat (limited to 'bukkit/src')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensDeliverTaskType.java6
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensInteractTaskType.java6
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/DeliverTaskType.java8
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/InteractTaskType.java8
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ServerNPCDeliverTaskType.java4
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ServerNPCInteractTaskType.java4
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ZNPCsPlusDeliverTaskType.java6
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ZNPCsPlusInteractTaskType.java6
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java12
9 files changed, 42 insertions, 18 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 c67db9a1..e85f4b5e 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
@@ -8,6 +8,8 @@ import net.citizensnpcs.api.npc.NPC;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
+import java.util.List;
+
public final class CitizensDeliverTaskType extends DeliverTaskType<Integer> {
private final BukkitQuestsPlugin plugin;
@@ -26,7 +28,7 @@ public final class CitizensDeliverTaskType extends DeliverTaskType<Integer> {
}
@Override
- public Integer getNPCId(Task task) {
- return (Integer) task.getConfigValue("npc-id");
+ public List<Integer> getNPCId(Task task) {
+ return TaskUtils.getConfigIntegerList(task, "npc-id");
}
}
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 a61dde2b..aaa613a0 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
@@ -8,6 +8,8 @@ import net.citizensnpcs.api.npc.NPC;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
+import java.util.List;
+
public final class CitizensInteractTaskType extends InteractTaskType<Integer> {
private final BukkitQuestsPlugin plugin;
@@ -26,7 +28,7 @@ public final class CitizensInteractTaskType extends InteractTaskType<Integer> {
}
@Override
- public Integer getNPCId(Task task) {
- return (Integer) task.getConfigValue("npc-id");
+ public List<Integer> getNPCId(Task task) {
+ return TaskUtils.getConfigIntegerList(task, "npc-id");
}
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/DeliverTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/DeliverTaskType.java
index da22b507..d73a40ff 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/DeliverTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/DeliverTaskType.java
@@ -14,6 +14,8 @@ import com.leonardobishop.quests.common.quest.Quest;
import com.leonardobishop.quests.common.quest.Task;
import org.bukkit.entity.Player;
+import java.util.List;
+
public abstract class DeliverTaskType<T> extends BukkitTaskType {
private final Table<String, String, QuestItem> fixedQuestItemCache = HashBasedTable.create();
@@ -43,7 +45,7 @@ public abstract class DeliverTaskType<T> extends BukkitTaskType {
fixedQuestItemCache.clear();
}
- public abstract T getNPCId(Task task);
+ public abstract List<T> getNPCId(Task task);
public void checkInventory(Player player, T npcId, String npcName, long delay, BukkitQuestsPlugin plugin) {
if (player.hasMetadata("NPC") || !player.isOnline()) return;
@@ -69,9 +71,9 @@ public abstract class DeliverTaskType<T> extends BukkitTaskType {
super.debug("Player clicked NPC", quest.getId(), task.getId(), player.getUniqueId());
- T configNPCId = getNPCId(task);
+ List<T> configNPCId = getNPCId(task);
if (configNPCId != null) {
- if (!npcId.equals(configNPCId)) {
+ if (!configNPCId.contains(npcId)) {
super.debug("NPC id " + npcId + " does not match required id, continuing...", quest.getId(), task.getId(), player.getUniqueId());
continue;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/InteractTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/InteractTaskType.java
index d5ec5ccf..5fa7856c 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/InteractTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/InteractTaskType.java
@@ -11,6 +11,8 @@ import com.leonardobishop.quests.common.quest.Quest;
import com.leonardobishop.quests.common.quest.Task;
import org.bukkit.entity.Player;
+import java.util.List;
+
public abstract class InteractTaskType<T> extends BukkitTaskType {
public InteractTaskType(String type, String author, String description) {
@@ -24,7 +26,7 @@ public abstract class InteractTaskType<T> extends BukkitTaskType {
});
}
- public abstract T getNPCId(Task task);
+ public abstract List<T> getNPCId(Task task);
public void handle(Player player, T npcId, String npcName, BukkitQuestsPlugin plugin) {
if (!player.isOnline()) {
@@ -45,9 +47,9 @@ public abstract class InteractTaskType<T> extends BukkitTaskType {
super.debug("Player clicked NPC", quest.getId(), task.getId(), player.getUniqueId());
- T configNPCId = getNPCId(task);
+ List<T> configNPCId = getNPCId(task);
if (configNPCId != null) {
- if (!npcId.equals(configNPCId)) {
+ if (!configNPCId.contains(npcId)) {
super.debug("NPC id " + npcId + " does not match required id, continuing...", quest.getId(), task.getId(), player.getUniqueId());
continue;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ServerNPCDeliverTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ServerNPCDeliverTaskType.java
index 35f73d42..fe1a5246 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ServerNPCDeliverTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ServerNPCDeliverTaskType.java
@@ -44,7 +44,7 @@ public final class ServerNPCDeliverTaskType extends DeliverTaskType<String> {
}
@Override
- public String getNPCId(Task task) {
- return (String) task.getConfigValue("npc-id");
+ public List<String> getNPCId(Task task) {
+ return TaskUtils.getConfigStringList(task, "npc-id");
}
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ServerNPCInteractTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ServerNPCInteractTaskType.java
index 38b1d64e..9f7ba380 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ServerNPCInteractTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ServerNPCInteractTaskType.java
@@ -44,7 +44,7 @@ public final class ServerNPCInteractTaskType extends InteractTaskType<String> {
}
@Override
- public String getNPCId(Task task) {
- return (String) task.getConfigValue("npc-id");
+ public List<String> getNPCId(Task task) {
+ return TaskUtils.getConfigStringList(task, "npc-id");
}
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ZNPCsPlusDeliverTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ZNPCsPlusDeliverTaskType.java
index 71ec2fe6..3596206f 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ZNPCsPlusDeliverTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ZNPCsPlusDeliverTaskType.java
@@ -10,6 +10,8 @@ import lol.pyr.znpcsplus.api.npc.NpcEntry;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
+import java.util.List;
+
public final class ZNPCsPlusDeliverTaskType extends DeliverTaskType<String> {
private final BukkitQuestsPlugin plugin;
@@ -64,7 +66,7 @@ public final class ZNPCsPlusDeliverTaskType extends DeliverTaskType<String> {
}
@Override
- public String getNPCId(Task task) {
- return (String) task.getConfigValue("npc-id");
+ public List<String> getNPCId(Task task) {
+ return TaskUtils.getConfigStringList(task, "npc-id");
}
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ZNPCsPlusInteractTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ZNPCsPlusInteractTaskType.java
index 64543f78..3d4ea9d5 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ZNPCsPlusInteractTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ZNPCsPlusInteractTaskType.java
@@ -10,6 +10,8 @@ import lol.pyr.znpcsplus.api.npc.NpcEntry;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
+import java.util.List;
+
public final class ZNPCsPlusInteractTaskType extends InteractTaskType<String> {
private final BukkitQuestsPlugin plugin;
@@ -64,7 +66,7 @@ public final class ZNPCsPlusInteractTaskType extends InteractTaskType<String> {
}
@Override
- public String getNPCId(Task task) {
- return (String) task.getConfigValue("npc-id");
+ public List<String> getNPCId(Task task) {
+ return TaskUtils.getConfigStringList(task, "npc-id");
}
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java
index 14da111e..7ffb0cc0 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java
@@ -83,6 +83,18 @@ public class TaskUtils {
}
}
+ @SuppressWarnings({"rawtypes", "unchecked"})
+ public static @Nullable List<Integer> getConfigIntegerList(Task task, String key) {
+ Object configObject = task.getConfigValue(key);
+ if (configObject instanceof List list) {
+ return List.copyOf(list);
+ } else if (configObject instanceof Integer i){
+ return List.of(i);
+ } else {
+ return null;
+ }
+ }
+
public static boolean getConfigBoolean(Task task, String key) {
return getConfigBoolean(task, key, false);
}