From 5ea0f9178bb0b8b011d89e004525b15f8e2b74df Mon Sep 17 00:00:00 2001
From: PikaMug <unconfigured@null.spigotmc.org>
Date: Mon, 1 Jul 2019 11:31:06 -0400
Subject: [PATCH] Only accept solid blocks for Block objectives. Bump version
 number

---
 main/pom.xml                                  |  2 +-
 .../quests/prompts/BlocksPrompt.java          | 55 ++++++++++---------
 main/src/main/resources/strings.yml           |  1 +
 3 files changed, 32 insertions(+), 26 deletions(-)

diff --git a/main/pom.xml b/main/pom.xml
index 09b99cd32..a59bbcdbe 100644
--- a/main/pom.xml
+++ b/main/pom.xml
@@ -4,7 +4,7 @@
     <parent>
         <groupId>me.blackvein.quests</groupId>
         <artifactId>quests-parent</artifactId>
-        <version>3.7.3</version>
+        <version>3.7.4</version>
     </parent>
     <artifactId>quests-main</artifactId>
     
diff --git a/main/src/main/java/me/blackvein/quests/prompts/BlocksPrompt.java b/main/src/main/java/me/blackvein/quests/prompts/BlocksPrompt.java
index df188d8a8..6c251d954 100644
--- a/main/src/main/java/me/blackvein/quests/prompts/BlocksPrompt.java
+++ b/main/src/main/java/me/blackvein/quests/prompts/BlocksPrompt.java
@@ -255,13 +255,14 @@ public class BlocksPrompt extends FixedSetPrompt {
 				LinkedList<String> names = new LinkedList<String>();
 				for (String s : args) {
 					try {
-						if (Material.matchMaterial(s) != null) {
-							//if (names.contains(s) == false) {
+						Material m = Material.matchMaterial(s);
+						if (m != null) {
+							if (m.isBlock()) {
 								names.add(s);
-							/*} else {
-								context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("listDuplicate"));
+							} else {
+								context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + s + ChatColor.RED + " " + Lang.get("stageEditorNotSolid"));
 								return new BreakBlockNamesPrompt();
-							}*/
+							}
 						} else {
 							context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + s + ChatColor.RED + " " + Lang.get("stageEditorInvalidBlockName"));
 							return new BreakBlockNamesPrompt();
@@ -472,13 +473,14 @@ public class BlocksPrompt extends FixedSetPrompt {
 				LinkedList<String> names = new LinkedList<String>();
 				for (String s : args) {
 					try {
-						if (Material.matchMaterial(s) != null) {
-							//if (names.contains(s) == false) {
+						Material m = Material.matchMaterial(s);
+						if (m != null) {
+							if (m.isBlock()) {
 								names.add(s);
-							/*} else {
-								context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("listDuplicate"));
+							} else {
+								context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + s + ChatColor.RED + " " + Lang.get("stageEditorNotSolid"));
 								return new DamageBlockNamesPrompt();
-							}*/
+							}
 						} else {
 							context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + s + ChatColor.RED + " " + Lang.get("stageEditorInvalidBlockName"));
 							return new DamageBlockNamesPrompt();
@@ -689,13 +691,14 @@ public class BlocksPrompt extends FixedSetPrompt {
 				LinkedList<String> names = new LinkedList<String>();
 				for (String s : args) {
 					try {
-						if (Material.matchMaterial(s) != null) {
-							//if (names.contains(s) == false) {
+						Material m = Material.matchMaterial(s);
+						if (m != null) {
+							if (m.isBlock()) {
 								names.add(s);
-							/*} else {
-								context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("listDuplicate"));
+							} else {
+								context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + s + ChatColor.RED + " " + Lang.get("stageEditorNotSolid"));
 								return new PlaceBlockNamesPrompt();
-							}*/
+							}
 						} else {
 							context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + s + ChatColor.RED + Lang.get("stageEditorInvalidBlockName"));
 							return new PlaceBlockNamesPrompt();
@@ -906,13 +909,14 @@ public class BlocksPrompt extends FixedSetPrompt {
 				LinkedList<String> names = new LinkedList<String>();
 				for (String s : args) {
 					try {
-						if (Material.matchMaterial(s) != null) {
-							//if (names.contains(s) == false) {
+						Material m = Material.matchMaterial(s);
+						if (m != null) {
+							if (m.isBlock()) {
 								names.add(s);
-							/*} else {
-								context.getForWhom().sendRawMessage(ChatColor.RED + " " + Lang.get("listDuplicate"));
+							} else {
+								context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + s + ChatColor.RED + " " + Lang.get("stageEditorNotSolid"));
 								return new UseBlockNamesPrompt();
-							}*/
+							}
 						} else {
 							context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + s + ChatColor.RED + " " + Lang.get("stageEditorInvalidBlockName"));
 							return new UseBlockNamesPrompt();
@@ -1123,13 +1127,14 @@ public class BlocksPrompt extends FixedSetPrompt {
 				LinkedList<String> names = new LinkedList<String>();
 				for (String s : args) {
 					try {
-						if (Material.matchMaterial(s) != null) {
-							//if (names.contains(s) == false) {
+						Material m = Material.matchMaterial(s);
+						if (m != null) {
+							if (m.isBlock()) {
 								names.add(s);
-							/*} else {
-								context.getForWhom().sendRawMessage(ChatColor.RED + " " + Lang.get("listDuplicate"));
+							} else {
+								context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + s + ChatColor.RED + " " + Lang.get("stageEditorNotSolid"));
 								return new CutBlockNamesPrompt();
-							}*/
+							}
 						} else {
 							context.getForWhom().sendRawMessage(ChatColor.LIGHT_PURPLE + s + ChatColor.RED + " " + Lang.get("stageEditorInvalidBlockName"));
 							return new CutBlockNamesPrompt();
diff --git a/main/src/main/resources/strings.yml b/main/src/main/resources/strings.yml
index 64f7a872f..9e340ff34 100644
--- a/main/src/main/resources/strings.yml
+++ b/main/src/main/resources/strings.yml
@@ -249,6 +249,7 @@ stageEditorObjectiveOverrideCleared: "Objective display override cleared."
 stageEditorDeliveryAddItem: "Add item"
 stageEditorDeliveryNPCs: "Set NPC IDs"
 stageEditorDeliveryMessages: "Set delivery messages"
+stageEditorNotSolid: "is not a solid block!"
 stageEditorInvalidBlockName: "is not a valid block name!"
 stageEditorInvalidEnchantment: "is not a valid enchantment name!"
 stageEditorInvalidNPC: "is not a valid NPC ID!"