diff --git a/lib/MMOLib.jar b/lib/MMOLib.jar index ab582917..32ca38c5 100644 Binary files a/lib/MMOLib.jar and b/lib/MMOLib.jar differ diff --git a/src/main/java/net/Indyuce/mmocore/api/block/BlockInfo.java b/src/main/java/net/Indyuce/mmocore/api/block/BlockInfo.java index b15531ea..85fdcca4 100644 --- a/src/main/java/net/Indyuce/mmocore/api/block/BlockInfo.java +++ b/src/main/java/net/Indyuce/mmocore/api/block/BlockInfo.java @@ -5,8 +5,12 @@ import java.util.List; import java.util.Optional; import java.util.logging.Level; +import net.mmogroup.mmolib.UtilityMethods; +import net.mmogroup.mmolib.api.condition.BlockCondition; +import net.mmogroup.mmolib.api.condition.MMOCondition; import org.apache.commons.lang.Validate; import org.bukkit.Location; +import org.bukkit.block.Block; import org.bukkit.block.data.BlockData; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.inventory.ItemStack; @@ -24,6 +28,7 @@ public class BlockInfo { private final boolean vanillaDrops; private final List triggers = new ArrayList<>(); private final RegenInfo regen; + private final List conditions = new ArrayList<>(); /* * saved separately because MMOCore needs to display the experience gained, @@ -56,6 +61,13 @@ public class BlockInfo { Optional opt = triggers.stream().filter(trigger -> (trigger instanceof ExperienceTrigger)).findFirst(); experience = (ExperienceTrigger) opt.orElse(null); + + if(config.isList("conditions")) + for(String key : config.getStringList("conditions")) { + MMOCondition condition = UtilityMethods.getCondition(key); + if(condition instanceof BlockCondition) conditions.add((BlockCondition) condition); + } + } public boolean hasVanillaDrops() { @@ -110,6 +122,13 @@ public class BlockInfo { return triggers; } + public boolean checkConditions(Block block) { + for(BlockCondition condition : conditions) + if(!condition.check(block)) return false; + + return true; + } + public static class RegeneratingBlock { private final BlockData data; private final Location loc; diff --git a/src/main/java/net/Indyuce/mmocore/listener/BlockListener.java b/src/main/java/net/Indyuce/mmocore/listener/BlockListener.java index b1bcba9b..62ad5a52 100644 --- a/src/main/java/net/Indyuce/mmocore/listener/BlockListener.java +++ b/src/main/java/net/Indyuce/mmocore/listener/BlockListener.java @@ -49,7 +49,7 @@ public class BlockListener implements Listener { */ BlockInfo info = MMOCore.plugin.mineManager.getInfo(block); boolean temporaryBlock = MMOCore.plugin.mineManager.isTemporaryBlock(block); - if (temporaryBlock && info == null) { + if ((temporaryBlock && info == null) || !info.checkConditions(block)) { event.setCancelled(true); return; }