From 367cbbede13140cc7c5e13de1041fdf4bd62f105 Mon Sep 17 00:00:00 2001 From: LMBishop <13875753+LMBishop@users.noreply.github.com> Date: Thu, 24 Jun 2021 13:17:16 +0100 Subject: Add quest-specific autostart - Closes #188 - Closes #125 --- .../leonardobishop/quests/common/quest/Quest.java | 153 ++++++++++++++++----- 1 file changed, 121 insertions(+), 32 deletions(-) (limited to 'common/src/main/java/com/leonardobishop') diff --git a/common/src/main/java/com/leonardobishop/quests/common/quest/Quest.java b/common/src/main/java/com/leonardobishop/quests/common/quest/Quest.java index 510e88d9..c1f6f47f 100644 --- a/common/src/main/java/com/leonardobishop/quests/common/quest/Quest.java +++ b/common/src/main/java/com/leonardobishop/quests/common/quest/Quest.java @@ -2,45 +2,29 @@ package com.leonardobishop.quests.common.quest; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; public class Quest implements Comparable { - private Map tasks = new HashMap<>(); - private final String id; - private final List rewards; - private final List requirements; - private final List rewardString; - private final List startString; - private final boolean repeatable; - private final boolean cooldownEnabled; - private final int cooldown; - private final int sortOrder; - private final boolean permissionRequired; - private final Map placeholders; + private final Map tasks = new HashMap<>(); + private String id; + private List rewards; + private List requirements; + private List rewardString; + private List startString; + private boolean repeatEnabled; + private boolean cooldownEnabled; + private int cooldown; + private int sortOrder; + private boolean permissionRequired; + private boolean autoStartEnabled; + private Map placeholders; private String categoryid; - - public Quest(String id, List rewards, List requirements, boolean repeatable, boolean cooldownEnabled, int cooldown, boolean permissionRequired, List rewardString, List startString, Map placeholders, String categoryid, int sortOrder) { - this(id, rewards, requirements, repeatable, cooldownEnabled, cooldown, permissionRequired, rewardString, startString, placeholders, sortOrder); - this.categoryid = categoryid; - } - - public Quest(String id, List rewards, List requirements, boolean repeatable, boolean cooldownEnabled, int cooldown, boolean permissionRequired, List rewardString, List startString, Map placeholders, int sortOrder) { - this.id = id; - this.rewards = rewards; - this.requirements = requirements; - this.repeatable = repeatable; - this.cooldownEnabled = cooldownEnabled; - this.cooldown = cooldown; - this.permissionRequired = permissionRequired; - this.rewardString = rewardString; - this.startString = startString; - this.placeholders = placeholders; - this.sortOrder = sortOrder; - } + private Quest() { } public void registerTask(Task task) { tasks.put(task.getId(), task); @@ -90,7 +74,7 @@ public class Quest implements Comparable { } public boolean isRepeatable() { - return repeatable; + return repeatEnabled; } public boolean isCooldownEnabled() { @@ -113,8 +97,113 @@ public class Quest implements Comparable { return sortOrder; } + public boolean isAutoStartEnabled() { + return autoStartEnabled; + } + @Override public int compareTo(Quest quest) { return (sortOrder - quest.sortOrder); } + + public static class Builder { + + private final String id; + private List rewards = Collections.emptyList(); + private List requirements = Collections.emptyList(); + private List rewardString = Collections.emptyList(); + private List startString = Collections.emptyList(); + private boolean repeatEnabled = false; + private boolean cooldownEnabled = false; + private int cooldown = 0; + private int sortOrder = 1; + private boolean permissionRequired = false; + private boolean autoStartEnabled = false; + private Map placeholders = Collections.emptyMap(); + private String categoryid = null; + + public Builder(String id) { + this.id = id; + } + + public Builder withRewards(List rewards) { + this.rewards = rewards; + return this; + } + + public Builder withRequirements(List requirements) { + this.requirements = requirements; + return this; + } + + public Builder withRewardString(List rewardString) { + this.rewardString = rewardString; + return this; + } + + public Builder withStartString(List startString) { + this.startString = startString; + return this; + } + + public Builder withSortOrder(int sortOrder) { + this.sortOrder = sortOrder; + return this; + } + + public Builder withCooldown(int cooldown) { + this.cooldown = cooldown; + return this; + } + + public Builder withPlaceholders(Map placeholders) { + this.placeholders = placeholders; + return this; + } + + public Builder withRepeatEnabled(boolean repeatEnabled) { + this.repeatEnabled = repeatEnabled; + return this; + } + + public Builder withCooldownEnabled(boolean cooldownEnabled) { + this.cooldownEnabled = cooldownEnabled; + return this; + } + + public Builder withPermissionRequired(boolean permissionRequired) { + this.permissionRequired = permissionRequired; + return this; + } + + public Builder withAutoStartEnabled(boolean autoStartEnabled) { + this.autoStartEnabled = autoStartEnabled; + return this; + } + + public Builder inCategory(String categoryid) { + this.categoryid = categoryid; + return this; + } + + public Quest build() { + Quest quest = new Quest(); + quest.id = this.id; + quest.rewards = this.rewards; + quest.requirements = this.requirements; + quest.rewardString = this.rewardString; + quest.startString = this.startString; + quest.repeatEnabled = this.repeatEnabled; + quest.cooldownEnabled = this.cooldownEnabled; + quest.cooldown = this.cooldown; + quest.sortOrder = this.sortOrder; + quest.permissionRequired = this.permissionRequired; + quest.autoStartEnabled = this.autoStartEnabled; + quest.placeholders = this.placeholders; + quest.categoryid = this.categoryid; + + return quest; + } + + } } -- cgit v1.2.3-70-g09d2