aboutsummaryrefslogtreecommitdiffstats
path: root/bukkit
diff options
context:
space:
mode:
Diffstat (limited to 'bukkit')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java25
1 files changed, 20 insertions, 5 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java
index 5444b03c..d4caf566 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java
@@ -302,7 +302,8 @@ public class TaskUtils {
Object configData = task.getConfigValue("data");
Material blockMaterial = state.getType();
- byte blockData = state.getRawData();
+ // do not set block data here as it will initialize Legacy Material Support
+ Byte blockData = null;
Material material;
int comparableData;
@@ -321,11 +322,25 @@ public class TaskUtils {
type.debug("Checking against block " + material + ":" + comparableData, pendingTask.quest.getId(), task.getId(), player);
- if (material == blockMaterial && ((parts.length == 1 && configData == null) || blockData == comparableData)) {
- type.debug("Block match", pendingTask.quest.getId(), task.getId(), player);
- return true;
+ if (material == blockMaterial) {
+ if (parts.length == 1 && configData == null) {
+ type.debug("Block match (modern)", pendingTask.quest.getId(), task.getId(), player);
+ return true;
+ }
+
+ // delay legacy material support initialization
+ if (blockData == null) {
+ blockData = state.getRawData();
+ }
+
+ if (blockData == comparableData) {
+ type.debug("Block match (legacy)", pendingTask.quest.getId(), task.getId(), player);
+ return true;
+ }
+
+ type.debug("Block mismatch (legacy)", pendingTask.quest.getId(), task.getId(), player);
} else {
- type.debug("Block mismatch", pendingTask.quest.getId(), task.getId(), player);
+ type.debug("Block mismatch (modern)", pendingTask.quest.getId(), task.getId(), player);
}
}