summaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authornivcoo <36514752+nivcoo@users.noreply.github.com>2021-02-06 14:33:03 +0100
committerLeonardo Bishop <13875753+LMBishop@users.noreply.github.com>2021-02-07 13:05:08 +0000
commita4a170cff6774c592b1e55ffa8d9923c32671ef8 (patch)
treeef8a29f7a32adab8eeb3e9d1a72e4eabd89ed89a /src/main
parent201d56c714c4b9dcd4ee76e76f34b48a5e09e6c1 (diff)
improv. fix for multiple blocks
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MiningCertainTaskType.java286
1 files changed, 137 insertions, 149 deletions
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MiningCertainTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MiningCertainTaskType.java
index c989d34a..3772b401 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MiningCertainTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MiningCertainTaskType.java
@@ -24,180 +24,168 @@ import java.util.List;
public final class MiningCertainTaskType extends TaskType {
- private List<ConfigValue> creatorConfigValues = new ArrayList<>();
+ private List<ConfigValue> creatorConfigValues = new ArrayList<>();
- public MiningCertainTaskType() {
- super("blockbreakcertain", "LMBishop", "Break a set amount of a specific block.");
- this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of blocks to be broken."));
- this.creatorConfigValues.add(new ConfigValue("block", true, "Name or ID of block.", "block")); // Can use
- // name:datacode
- this.creatorConfigValues.add(
- new ConfigValue("blocks", true, "List of blocks (alias for block for config readability).", "block"));
- this.creatorConfigValues.add(new ConfigValue("data", false, "Data code for block.")); // only used if no
- // datacode provided in
- // block or blocks
- this.creatorConfigValues.add(new ConfigValue("reverse-if-placed", false,
- "Will reverse progression if block of same type is placed."));
- this.creatorConfigValues.add(new ConfigValue("use-similar-blocks", false,
- "(Deprecated) If true, this will ignore orientation of doors, logs etc."));
- this.creatorConfigValues.add(new ConfigValue("worlds", false, "Permitted worlds the player must be in."));
- }
+ public MiningCertainTaskType() {
+ super("blockbreakcertain", "LMBishop", "Break a set amount of a specific block.");
+ this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of blocks to be broken."));
+ this.creatorConfigValues.add(new ConfigValue("block", true, "Name or ID of block.", "block")); // Can use name:datacode
+ this.creatorConfigValues.add(new ConfigValue("blocks", true, "List of blocks (alias for block for config readability).", "block"));
+ this.creatorConfigValues.add(new ConfigValue("data", false, "Data code for block.")); // only used if no datacode provided in block or blocks
+ this.creatorConfigValues.add(new ConfigValue("reverse-if-placed", false, "Will reverse progression if block of same type is placed."));
+ this.creatorConfigValues.add(new ConfigValue("use-similar-blocks", false, "(Deprecated) If true, this will ignore orientation of doors, logs etc."));
+ this.creatorConfigValues.add(new ConfigValue("worlds", false, "Permitted worlds the player must be in."));
+ }
- @Override
- public List<QuestsConfigLoader.ConfigProblem> detectProblemsInConfig(String root, HashMap<String, Object> config) {
- ArrayList<QuestsConfigLoader.ConfigProblem> problems = new ArrayList<>();
- 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("block") == null && config.get("blocks") == null) {
- TaskUtils.configValidateExists(root + ".block", config.get("block"), problems, "block", super.getType());
- } else {
- Object configBlock;
- String source;
- if (config.containsKey("block")) {
- source = "block";
- } else {
- source = "blocks";
- }
- configBlock = config.get(source);
- List<String> checkBlocks = new ArrayList<>();
- if (configBlock instanceof List) {
- checkBlocks.addAll((List) configBlock);
- } else {
- checkBlocks.add(String.valueOf(configBlock));
- }
+ @Override
+ public List<QuestsConfigLoader.ConfigProblem> detectProblemsInConfig(String root, HashMap<String, Object> config) {
+ ArrayList<QuestsConfigLoader.ConfigProblem> problems = new ArrayList<>();
+ 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("block") == null && config.get("blocks") == null) {
+ TaskUtils.configValidateExists(root + ".block", config.get("block"), problems, "block", super.getType());
+ } else {
+ Object configBlock;
+ String source;
+ if (config.containsKey("block")) {
+ source = "block";
+ } else {
+ source = "blocks";
+ }
+ configBlock = config.get(source);
+ List<String> checkBlocks = new ArrayList<>();
+ if (configBlock instanceof List) {
+ checkBlocks.addAll((List) configBlock);
+ } else {
+ checkBlocks.add(String.valueOf(configBlock));
+ }
- for (String materialName : checkBlocks) {
- String[] split = materialName.split(":");
- if (Material.getMaterial(String.valueOf(split[0])) == null) {
- problems.add(new QuestsConfigLoader.ConfigProblem(QuestsConfigLoader.ConfigProblemType.WARNING,
- QuestsConfigLoader.ConfigProblemDescriptions.UNKNOWN_MATERIAL.getDescription(materialName),
- root + "." + source));
- }
- }
- }
- TaskUtils.configValidateBoolean(root + ".reverse-if-broken", config.get("reverse-if-broken"), problems, true,
- "reverse-if-broken");
- TaskUtils.configValidateBoolean(root + ".use-similar-blocks", config.get("use-similar-blocks"), problems, true,
- "use-similar-blocks");
- TaskUtils.configValidateInt(root + ".data", config.get("data"), problems, true, true, "data");
- return problems;
- }
+ for (String materialName : checkBlocks) {
+ String[] split = materialName.split(":");
+ if (Material.getMaterial(String.valueOf(split[0])) == null) {
+ problems.add(new QuestsConfigLoader.ConfigProblem(QuestsConfigLoader.ConfigProblemType.WARNING,
+ QuestsConfigLoader.ConfigProblemDescriptions.UNKNOWN_MATERIAL.getDescription(materialName), root + "." + source));
+ }
+ }
+ }
+ TaskUtils.configValidateBoolean(root + ".reverse-if-broken", config.get("reverse-if-broken"), problems, true,"reverse-if-broken");
+ TaskUtils.configValidateBoolean(root + ".use-similar-blocks", config.get("use-similar-blocks"), problems, true,"use-similar-blocks");
+ TaskUtils.configValidateInt(root + ".data", config.get("data"), problems, true,true, "data");
+ return problems;
+ }
- @Override
- public List<ConfigValue> getCreatorConfigValues() {
- return creatorConfigValues;
- }
+ @Override
+ public List<ConfigValue> getCreatorConfigValues() {
+ return creatorConfigValues;
+ }
- @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
- public void onBlockBreak(BlockBreakEvent event) {
- QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(event.getPlayer().getUniqueId(), true);
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
+ @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
+ public void onBlockBreak(BlockBreakEvent event) {
+ QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(event.getPlayer().getUniqueId(), true);
+ QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
- for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ for (Quest quest : super.getRegisteredQuests()) {
+ if (questProgressFile.hasStartedQuest(quest)) {
+ QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
- for (Task task : quest.getTasksOfType(super.getType())) {
- TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
+ for (Task task : quest.getTasksOfType(super.getType())) {
+ TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
- if (taskProgress.isCompleted()) {
- continue;
- }
+ if (taskProgress.isCompleted()) {
+ continue;
+ }
- if (matchBlock(task, event.getBlock())) {
- increment(task, taskProgress, 1);
- }
- }
- }
- }
- }
+ if (matchBlock(task, event.getBlock())) {
+ increment(task, taskProgress, 1);
+ }
+ }
+ }
+ }
+ }
- // subtract if enabled
- @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
- public void onBlockPlace(BlockPlaceEvent event) {
- QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(event.getPlayer().getUniqueId(), true);
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
+ // subtract if enabled
+ @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
+ public void onBlockPlace(BlockPlaceEvent event) {
+ QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(event.getPlayer().getUniqueId(), true);
+ QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
- for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ for (Quest quest : super.getRegisteredQuests()) {
+ if (questProgressFile.hasStartedQuest(quest)) {
+ QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
- for (Task task : quest.getTasksOfType(super.getType())) {
- if (!TaskUtils.validateWorld(event.getPlayer(), task))
- continue;
+ for (Task task : quest.getTasksOfType(super.getType())) {
+ if (!TaskUtils.validateWorld(event.getPlayer(), task)) continue;
- TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
+ TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
- if (taskProgress.isCompleted()) {
- continue;
- }
+ if (taskProgress.isCompleted()) {
+ continue;
+ }
- if (task.getConfigValue("reverse-if-placed") != null
- && ((boolean) task.getConfigValue("reverse-if-placed"))) {
- if (matchBlock(task, event.getBlock())) {
- increment(task, taskProgress, -1);
- }
- }
- }
- }
- }
- }
+ if (task.getConfigValue("reverse-if-placed") != null && ((boolean) task.getConfigValue("reverse-if-placed"))) {
+ if (matchBlock(task, event.getBlock())) {
+ increment(task, taskProgress, -1);
+ }
+ }
+ }
+ }
+ }
+ }
- @SuppressWarnings("deprecation")
- private boolean matchBlock(Task task, Block block) {
- Material material;
+ @SuppressWarnings("deprecation")
+ private boolean matchBlock(Task task, Block block) {
+ Material material;
- Object configBlock = task.getConfigValues().containsKey("block") ? task.getConfigValue("block")
- : task.getConfigValue("blocks");
- Object configData = task.getConfigValue("data");
- Object configSimilarBlocks = task.getConfigValue("use-similar-blocks");
+ Object configBlock = task.getConfigValues().containsKey("block") ? task.getConfigValue("block") : task.getConfigValue("blocks");
+ Object configData = task.getConfigValue("data");
+ Object configSimilarBlocks = task.getConfigValue("use-similar-blocks");
- List<String> checkBlocks = new ArrayList<>();
- if (configBlock instanceof List) {
- checkBlocks.addAll((List) configBlock);
- } else {
- checkBlocks.add(String.valueOf(configBlock));
- }
+ List<String> checkBlocks = new ArrayList<>();
+ if (configBlock instanceof List) {
+ checkBlocks.addAll((List) configBlock);
+ } else {
+ checkBlocks.add(String.valueOf(configBlock));
+ }
- for (String materialName : checkBlocks) {
- // LOG:1 LOG:2 LOG should all be supported with this
- String[] split = materialName.split(":");
- int comparableData = 0;
- if (configData != null) {
- comparableData = (int) configData;
- }
- if (split.length > 1) {
- comparableData = Integer.parseInt(split[1]);
- }
+ for (String materialName : checkBlocks) {
+ // LOG:1 LOG:2 LOG should all be supported with this
+ String[] split = materialName.split(":");
+ int comparableData = 0;
+ if (configData != null) {
+ comparableData = (int) configData;
+ }
+ if (split.length > 1) {
+ comparableData = Integer.parseInt(split[1]);
+ }
- material = Material.getMaterial(String.valueOf(split[0]));
- Material blockType = block.getType();
+ material = Material.getMaterial(String.valueOf(split[0]));
+ Material blockType = block.getType();
- short blockData = block.getData();
+ short blockData = block.getData();
- if (blockType == material) {
- if (((split.length == 1 && configData == null) || ((int) blockData) == comparableData))
- return true;
- }
- }
- return false;
- }
+ if (blockType == material) {
+ if (((split.length == 1 && configData == null) || ((int) blockData) == comparableData))
+ return true;
+ }
+ }
+ return false;
+ }
- private void increment(Task task, TaskProgress taskProgress, int amount) {
- int brokenBlocksNeeded = (int) task.getConfigValue("amount");
+ private void increment(Task task, TaskProgress taskProgress, int amount) {
+ int brokenBlocksNeeded = (int) task.getConfigValue("amount");
- int progressBlocksBroken;
- if (taskProgress.getProgress() == null) {
- progressBlocksBroken = 0;
- } else {
- progressBlocksBroken = (int) taskProgress.getProgress();
- }
+ int progressBlocksBroken;
+ if (taskProgress.getProgress() == null) {
+ progressBlocksBroken = 0;
+ } else {
+ progressBlocksBroken = (int) taskProgress.getProgress();
+ }
- taskProgress.setProgress(progressBlocksBroken + amount);
+ taskProgress.setProgress(progressBlocksBroken + amount);
- if (((int) taskProgress.getProgress()) >= brokenBlocksNeeded) {
- taskProgress.setCompleted(true);
- }
- }
+ if (((int) taskProgress.getProgress()) >= brokenBlocksNeeded) {
+ taskProgress.setCompleted(true);
+ }
+ }
}