From f40010f5908896d389a2c7d7930d1c73093a56da Mon Sep 17 00:00:00 2001 From: LMBishop <13875753+LMBishop@users.noreply.github.com> Date: Sat, 5 Jun 2021 15:30:13 +0100 Subject: Add list of names to mob killing task type - Closes #164 --- .../tasktype/type/MobkillingCertainTaskType.java | 26 ++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/leonardobishop/quests/quest/tasktype/type/MobkillingCertainTaskType.java b/src/main/java/com/leonardobishop/quests/quest/tasktype/type/MobkillingCertainTaskType.java index 7919cc75..ecba34a3 100644 --- a/src/main/java/com/leonardobishop/quests/quest/tasktype/type/MobkillingCertainTaskType.java +++ b/src/main/java/com/leonardobishop/quests/quest/tasktype/type/MobkillingCertainTaskType.java @@ -11,6 +11,8 @@ import com.leonardobishop.quests.quest.tasktype.ConfigValue; import com.leonardobishop.quests.quest.tasktype.TaskType; import com.leonardobishop.quests.quest.tasktype.TaskUtils; import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.block.Block; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; @@ -46,6 +48,8 @@ public final class MobkillingCertainTaskType extends TaskType { } if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType())) TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount"); + if (config.get("name") == null && config.get("names") == null) + TaskUtils.configValidateExists(root + ".name", config.get("name"), problems, "name", super.getType()); return problems; } @@ -89,7 +93,6 @@ public final class MobkillingCertainTaskType extends TaskType { } String configEntity = (String) task.getConfigValue("mob"); - String configName = (String) task.getConfigValue("name"); EntityType entity; try { @@ -98,11 +101,26 @@ public final class MobkillingCertainTaskType extends TaskType { continue; } + Object configName = task.getConfigValues().containsKey("name") ? task.getConfigValue("name") : task.getConfigValue("names"); + if (configName != null) { - configName = ChatColor.translateAlternateColorCodes('&', configName); - if (mob.getCustomName() == null || !mob.getCustomName().equals(configName)) { - continue; + List configNames = new ArrayList<>(); + if (configName instanceof List) { + configNames.addAll((List) configName); + } else { + configNames.add(String.valueOf(configName)); + } + + boolean validName = false; + for (String name : configNames) { + name = ChatColor.translateAlternateColorCodes('&', name); + if (mob.getCustomName() == null || !mob.getCustomName().equals(name)) { + validName = true; + break; + } } + + if (!validName) continue; } if (mob.getType() != entity) { -- cgit v1.2.3-70-g09d2