From c0e4d4836fb6eec9aa438fd5f967e43b4cdc7b9d Mon Sep 17 00:00:00 2001
From: LMBishop <13875753+LMBishop@users.noreply.github.com>
Date: Thu, 7 Jan 2021 22:22:57 +0000
Subject: Added null check to matchBlock function in mining & building task
types
---
pom.xml | 2 +-
.../tasktypes/types/BuildingCertainTaskType.java | 32 ++++++++++++++++++----
.../tasktypes/types/MiningCertainTaskType.java | 3 ++
3 files changed, 30 insertions(+), 7 deletions(-)
diff --git a/pom.xml b/pom.xml
index 4d0fe9cd..f52368ee 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
com.leonardobishop
quests
- 2.9.5
+ 2.10
Quests
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 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]);
}
--
cgit v1.2.3-70-g09d2