diff --git a/src/main/java/com/alttd/altitudequests/config/QuestsConfig.java b/src/main/java/com/alttd/altitudequests/config/QuestsConfig.java
index b93be60..baf3c01 100644
--- a/src/main/java/com/alttd/altitudequests/config/QuestsConfig.java
+++ b/src/main/java/com/alttd/altitudequests/config/QuestsConfig.java
@@ -33,6 +33,8 @@ public class QuestsConfig extends AbstractConfig {
public static String MINE_STEP_2 = "Turned in";
public static String MINE_TURN_IN = "Click here to turn in your ";
public static List MINE_COMMANDS = List.of("broadcast Finished their daily quest!");
+ public static Material material;
+ public static Material turnInMaterial;
private static void loadMineQuests() {
MINE_QUESTS.clear();
@@ -44,10 +46,18 @@ public class QuestsConfig extends AbstractConfig {
Set keys = configurationSection.getKeys(false);
for (String key : keys) {
try {
- Material material = Material.valueOf(configurationSection.getString(key + ".material"));
+ material = Material.valueOf(configurationSection.getString(key + ".material"));
+ if (configurationSection.getString(key + ".turnInMaterial") == null) {
+ turnInMaterial = material;
+ }
+ else {
+ turnInMaterial = Material.valueOf(configurationSection.getString(key + ".turnInMaterial"));
+ }
+
MINE_QUESTS.add(new MineQuestObject(key,
configurationSection.getString(key + ".name"),
material,
+ turnInMaterial,
configurationSection.getStringList(key + ".quest-pages"),
configurationSection.getStringList(key + ".done-pages"),
configurationSection.getInt(key + ".amount-min"),
diff --git a/src/main/java/com/alttd/altitudequests/events/MineBlocks.java b/src/main/java/com/alttd/altitudequests/events/MineBlocks.java
index 7fce06d..01d1262 100644
--- a/src/main/java/com/alttd/altitudequests/events/MineBlocks.java
+++ b/src/main/java/com/alttd/altitudequests/events/MineBlocks.java
@@ -22,5 +22,4 @@ public class MineBlocks implements Listener {
if (quest instanceof MineQuest mineQuest)
mineQuest.mine(event.getBlock());
}
-
}
diff --git a/src/main/java/com/alttd/altitudequests/objects/quests/MineQuest.java b/src/main/java/com/alttd/altitudequests/objects/quests/MineQuest.java
index 5674b2d..dcdfbcd 100644
--- a/src/main/java/com/alttd/altitudequests/objects/quests/MineQuest.java
+++ b/src/main/java/com/alttd/altitudequests/objects/quests/MineQuest.java
@@ -13,6 +13,8 @@ import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.bukkit.block.Block;
+import org.bukkit.block.data.BlockData;
+import org.bukkit.block.data.Ageable;
import org.bukkit.entity.Player;
import org.bukkit.inventory.PlayerInventory;
@@ -91,7 +93,7 @@ public class MineQuest extends Quest {
@Override
public TagResolver getTagResolvers() {
TagResolver resolver = TagResolver.resolver(
- Placeholder.unparsed("block", Utilities.formatName(mineQuestObject.getMaterial().name())),
+ Placeholder.unparsed("block", Utilities.formatName(mineQuestObject.getTurnInMaterial().name())),
Placeholder.parsed("step_1_progress", getStep1() == getAmount() ?
"" + getStep1() + "" : "" + getStep1() + ""),
Placeholder.parsed("step_1_total", String.valueOf(getAmount())),
@@ -121,7 +123,7 @@ public class MineQuest extends Quest {
Arrays.stream(inventory.getContents())
.filter(Objects::nonNull)
- .filter(itemStack -> itemStack.getType().equals(mineQuestObject.getMaterial()))
+ .filter(itemStack -> itemStack.getType().equals(mineQuestObject.getTurnInMaterial()))
.forEach(itemStack -> {
if (ref.tmpAmount == 0)
return;
@@ -149,8 +151,23 @@ public class MineQuest extends Quest {
return QuestsConfig.MINE_COMMANDS;
}
+ public boolean checkBlock(Block block) { //this can probably be simplified but I didn't realy know how
+
+ BlockData blockData = block.getBlockData();
+
+ if (!block.getType().equals(mineQuestObject.getMaterial())) {
+ return true;
+ }
+ else if (blockData instanceof Ageable) {
+ Ageable ageable = (Ageable) blockData;
+ if (ageable.getAge() != ageable.getMaximumAge()) {
+ return true;
+ }
+ }
+ return false;
+ }
public void mine(Block block) {
- if (isDone() || !block.getType().equals(mineQuestObject.getMaterial()) || getAmount() == getStep1())
+ if (isDone() || checkBlock(block) || getAmount() == getStep1())
return;
addStep1(1);
checkDone();
diff --git a/src/main/java/com/alttd/altitudequests/objects/variants/MineQuestObject.java b/src/main/java/com/alttd/altitudequests/objects/variants/MineQuestObject.java
index 273542d..8301fae 100644
--- a/src/main/java/com/alttd/altitudequests/objects/variants/MineQuestObject.java
+++ b/src/main/java/com/alttd/altitudequests/objects/variants/MineQuestObject.java
@@ -8,14 +8,19 @@ import java.util.List;
public class MineQuestObject extends Variant {
private final Material material;
+ private final Material turnInMaterial;
- public MineQuestObject(String internalName, String name, Material material,
+ public MineQuestObject(String internalName, String name, Material material, Material turnInMaterial,
List questPages, List donePages, int min, int max) {
super(internalName, name, questPages, donePages, min, max);
this.material = material;
+ this.turnInMaterial = turnInMaterial;
}
public Material getMaterial() {
return material;
}
+ public Material getTurnInMaterial() {
+ return turnInMaterial;
+ }
}