summaryrefslogtreecommitdiffstats
path: root/bukkit/src
diff options
context:
space:
mode:
authorLMBishop <13875753+LMBishop@users.noreply.github.com>2022-05-05 12:00:45 +0100
committerLMBishop <13875753+LMBishop@users.noreply.github.com>2022-05-05 12:00:45 +0100
commit231be0a781038711ff98b6cc281902892e0a7591 (patch)
tree21734c57b7b8b1cc3f3c1eafdd1bfbd97b0ac3fa /bukkit/src
parent759575c182f05fdfd2bf2719e9aff2121f89fef1 (diff)
Add multiple option to mobkillingcertain (closes #266)
Diffstat (limited to 'bukkit/src')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MobkillingCertainTaskType.java59
1 files changed, 43 insertions, 16 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MobkillingCertainTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MobkillingCertainTaskType.java
index e040d767..8b2f488a 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MobkillingCertainTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MobkillingCertainTaskType.java
@@ -11,6 +11,7 @@ import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress;
import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress;
import com.leonardobishop.quests.common.quest.Quest;
import com.leonardobishop.quests.common.quest.Task;
+import org.bukkit.Material;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
@@ -35,13 +36,32 @@ public final class MobkillingCertainTaskType extends BukkitTaskType {
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".mob", config.get("mob"), problems, "mob", super.getType())) {
- try {
- EntityType.valueOf(String.valueOf(config.get("mob")));
- } catch (IllegalArgumentException ex) {
- problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
- ConfigProblemDescriptions.UNKNOWN_ENTITY_TYPE.getDescription(String.valueOf(config.get("mob"))), root + ".mob"));
+ if (config.get("mob") == null && config.get("mobs") == null) {
+ TaskUtils.configValidateExists(root + ".mob", config.get("mob"), problems, "mob", super.getType());
+ } else {
+ Object configMob;
+ String source;
+ if (config.containsKey("mob")) {
+ source = "mob";
+ } else {
+ source = "mobs";
}
+ configMob = config.get(source);
+ List<String> checkBlocks = new ArrayList<>();
+ if (configMob instanceof List) {
+ checkBlocks.addAll((List) configMob);
+ } else {
+ checkBlocks.add(String.valueOf(configMob));
+ }
+ for (String mobName : checkBlocks) {
+ try {
+ EntityType.valueOf(mobName);
+ } catch (IllegalArgumentException ex) {
+ problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
+ ConfigProblemDescriptions.UNKNOWN_ENTITY_TYPE.getDescription(mobName), root + "." + source));
+ }
+ }
+
}
if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
@@ -81,14 +101,25 @@ public final class MobkillingCertainTaskType extends BukkitTaskType {
continue;
}
- String configEntity = (String) task.getConfigValue("mob");
+ Object configEntity = task.getConfigValues().containsKey("mob") ? task.getConfigValue("mob") : task.getConfigValue("mobs");
- EntityType entity;
- try {
- entity = EntityType.valueOf(configEntity);
- } catch (IllegalArgumentException ex) {
- continue;
+ List<String> configEntities = new ArrayList<>();
+ if (configEntity instanceof List) {
+ configEntities.addAll((List) configEntity);
+ } else {
+ configEntities.add(String.valueOf(configEntity));
}
+ boolean validMob = false;
+ for (String entry : configEntities) {
+ try {
+ EntityType entity = EntityType.valueOf(entry);
+ if (mob.getType() == entity) {
+ validMob = true;
+ }
+ } catch (IllegalArgumentException ignored) { }
+ }
+
+ if (!validMob) continue;
Object configName = task.getConfigValues().containsKey("name") ? task.getConfigValue("name") : task.getConfigValue("names");
@@ -112,10 +143,6 @@ public final class MobkillingCertainTaskType extends BukkitTaskType {
if (!validName) continue;
}
- if (mob.getType() != entity) {
- continue;
- }
-
int mobKillsNeeded = (int) task.getConfigValue("amount");
int progressKills;