summaryrefslogtreecommitdiffstats
path: root/src/main/java/com
diff options
context:
space:
mode:
authorAvrooVulcan <avrovulcan.programming@gmail.com>2020-05-11 10:54:16 +0100
committerLMBishop <13875753+LMBishop@users.noreply.github.com>2020-06-09 18:06:14 +0100
commit1c9acf15e2c665498f44a39a818cabfd484077a9 (patch)
treed4d8af1c56bc7a6de03f43be28612611aa71e5b4 /src/main/java/com
parentdf201ae525ed93ef532a9b6a6ca2ca47e2034824 (diff)
Added option for multiple blocks with individaul data
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MiningCertainTaskType.java36
1 files changed, 28 insertions, 8 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 61dd611b..bf5930cb 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
@@ -9,6 +9,7 @@ import com.leonardobishop.quests.quests.Quest;
import com.leonardobishop.quests.quests.Task;
import com.leonardobishop.quests.quests.tasktypes.ConfigValue;
import com.leonardobishop.quests.quests.tasktypes.TaskType;
+import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.event.EventHandler;
@@ -26,8 +27,9 @@ public final class MiningCertainTaskType extends TaskType {
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."));
- this.creatorConfigValues.add(new ConfigValue("data", false, "Data code for block."));
+ this.creatorConfigValues.add(new ConfigValue("block", false, "Name or ID of block.")); // Can use name:datacode
+ this.creatorConfigValues.add(new ConfigValue("blocks", false, "List of blocks (alias for block for config readability)."));
+ 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."));
}
@@ -91,17 +93,35 @@ public final class MiningCertainTaskType 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 = (int) configData;
+ if (split.length > 1) {
+ comparableData = Integer.parseInt(split[1]);
+ }
+
+ material = Material.getMaterial(String.valueOf(split[0]));
+ Material blockType = block.getType();
- Material blockType = block.getType();
- short blockData = block.getData();
+ short blockData = block.getData();
- if (blockType.equals(material)) {
- return configData == null || (((int) blockData) == ((int) configData));
+ if (blockType.equals(material)) {
+ return configData == null || ((int) blockData) == comparableData;
+ }
}
return false;
}