diff options
| author | LMBishop <13875753+LMBishop@users.noreply.github.com> | 2021-01-07 22:22:57 +0000 |
|---|---|---|
| committer | LMBishop <13875753+LMBishop@users.noreply.github.com> | 2021-01-07 22:22:57 +0000 |
| commit | c0e4d4836fb6eec9aa438fd5f967e43b4cdc7b9d (patch) | |
| tree | 716e0c3b86776cda28e232a92383abe9cd22a4dd | |
| parent | fe1faf26bcbf17815adcfd3e5fb8b378cbb83c12 (diff) | |
Added null check to matchBlock function in mining & building task types
3 files changed, 30 insertions, 7 deletions
@@ -6,7 +6,7 @@ <groupId>com.leonardobishop</groupId> <artifactId>quests</artifactId> - <version>2.9.5</version> + <version>2.10</version> <name>Quests</name> <properties> diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BuildingCertainTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BuildingCertainTaskType.java index 2898242e..73252665 100644 --- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BuildingCertainTaskType.java +++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BuildingCertainTaskType.java @@ -95,17 +95,37 @@ public final class BuildingCertainTaskType extends TaskType { @SuppressWarnings("deprecation") private boolean matchBlock(Task task, Block block) { Material material; - Object configBlock = task.getConfigValue("block"); + + Object configBlock = task.getConfigValues().containsKey("block") ? task.getConfigValue("block") : task.getConfigValue("blocks"); Object configData = task.getConfigValue("data"); Object configSimilarBlocks = task.getConfigValue("use-similar-blocks"); - material = Material.getMaterial(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]); + } - Material blockType = block.getType(); - short blockData = block.getData(); + material = Material.getMaterial(String.valueOf(split[0])); + Material blockType = block.getType(); - if (blockType.equals(material)) { - return configData == null || (((int) blockData) == ((int) configData)); + short blockData = block.getData(); + + if (blockType.equals(material)) { + return configData == null || ((int) blockData) == comparableData; + } } return false; } 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 30314968..9e28035b 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 @@ -113,6 +113,9 @@ public final class MiningCertainTaskType extends TaskType { // 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]); } |
