diff options
Diffstat (limited to 'bukkit/src/main/java')
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); } |
