diff --git a/dough-api/pom.xml b/dough-api/pom.xml
index 4bb28d00..5bdd1246 100644
--- a/dough-api/pom.xml
+++ b/dough-api/pom.xml
@@ -427,6 +427,14 @@
1.7
provided
+
+
+
+ com.github.Ez4p1xEL
+ NoBuildPlus
+ 1.5.54
+ provided
+
diff --git a/dough-protection/pom.xml b/dough-protection/pom.xml
index d12c8315..03303e31 100644
--- a/dough-protection/pom.xml
+++ b/dough-protection/pom.xml
@@ -365,6 +365,20 @@
+
+
+ com.github.Ez4p1xEL
+ NoBuildPlus
+ 1.5.54
+ provided
+
+
+ bukkit
+ *
+
+
+
+
net.dzikoysk.funnyguilds
diff --git a/dough-protection/src/main/java/io/github/bakedlibs/dough/protection/ProtectionManager.java b/dough-protection/src/main/java/io/github/bakedlibs/dough/protection/ProtectionManager.java
index bebd5b33..80dd96f2 100644
--- a/dough-protection/src/main/java/io/github/bakedlibs/dough/protection/ProtectionManager.java
+++ b/dough-protection/src/main/java/io/github/bakedlibs/dough/protection/ProtectionManager.java
@@ -9,6 +9,7 @@
import javax.annotation.Nonnull;
import javax.annotation.ParametersAreNonnullByDefault;
+import io.github.bakedlibs.dough.protection.modules.*;
import org.bukkit.Location;
import org.bukkit.OfflinePlayer;
import org.bukkit.block.Block;
@@ -18,24 +19,6 @@
import io.github.bakedlibs.dough.common.DoughLogger;
import io.github.bakedlibs.dough.protection.loggers.CoreProtectLogger;
import io.github.bakedlibs.dough.protection.loggers.LogBlockLogger;
-import io.github.bakedlibs.dough.protection.modules.BentoBoxProtectionModule;
-import io.github.bakedlibs.dough.protection.modules.BlockLockerProtectionModule;
-import io.github.bakedlibs.dough.protection.modules.BoltProtectionModule;
-import io.github.bakedlibs.dough.protection.modules.ChestProtectProtectionModule;
-import io.github.bakedlibs.dough.protection.modules.FactionsUUIDProtectionModule;
-import io.github.bakedlibs.dough.protection.modules.FunnyGuildsProtectionModule;
-import io.github.bakedlibs.dough.protection.modules.GriefPreventionProtectionModule;
-import io.github.bakedlibs.dough.protection.modules.HuskTownsProtectionModule;
-import io.github.bakedlibs.dough.protection.modules.HuskClaimsProtectionModule;
-import io.github.bakedlibs.dough.protection.modules.LWCProtectionModule;
-import io.github.bakedlibs.dough.protection.modules.LandsProtectionModule;
-import io.github.bakedlibs.dough.protection.modules.LocketteProtectionModule;
-import io.github.bakedlibs.dough.protection.modules.PlotSquaredProtectionModule;
-import io.github.bakedlibs.dough.protection.modules.PreciousStonesProtectionModule;
-import io.github.bakedlibs.dough.protection.modules.RedProtectProtectionModule;
-import io.github.bakedlibs.dough.protection.modules.ShopChestProtectionModule;
-import io.github.bakedlibs.dough.protection.modules.TownyProtectionModule;
-import io.github.bakedlibs.dough.protection.modules.WorldGuardProtectionModule;
/**
* This Class provides a nifty API for plugins to query popular protection plugins.
@@ -97,6 +80,7 @@ private void loadModuleImplementations(Plugin plugin) {
registerModule(pm, "ShopChest", shopChest -> new ShopChestProtectionModule(shopChest));
registerModule(pm, "HuskClaims", huskClaims -> new HuskClaimsProtectionModule(huskClaims));
registerModule(pm, "Bolt", bolt -> new BoltProtectionModule(bolt));
+ registerModule(pm, "NoBuildPlus", noBuildPlus -> new NoBuildPlusProtectionModule());
/*
* The following Plugins work by utilising one of the above listed
diff --git a/dough-protection/src/main/java/io/github/bakedlibs/dough/protection/modules/NoBuildPlusProtectionModule.java b/dough-protection/src/main/java/io/github/bakedlibs/dough/protection/modules/NoBuildPlusProtectionModule.java
new file mode 100644
index 00000000..3f09eab4
--- /dev/null
+++ b/dough-protection/src/main/java/io/github/bakedlibs/dough/protection/modules/NoBuildPlusProtectionModule.java
@@ -0,0 +1,53 @@
+package io.github.bakedlibs.dough.protection.modules;
+
+import io.github.bakedlibs.dough.protection.Interaction;
+import io.github.bakedlibs.dough.protection.ProtectionModule;
+import org.bukkit.Location;
+import org.bukkit.OfflinePlayer;
+import org.bukkit.entity.Player;
+import p1xel.nobuildplus.Flags;
+import p1xel.nobuildplus.NoBuildPlus;
+import p1xel.nobuildplus.storage.Worlds;
+
+public class NoBuildPlusProtectionModule implements ProtectionModule {
+
+ private NoBuildPlus plugin;
+ @Override
+ public void load() {
+ plugin = NoBuildPlus.getInstance();
+ }
+
+ @Override
+ public NoBuildPlus getPlugin() {
+ return plugin;
+ }
+
+ @Override
+ public boolean hasPermission(OfflinePlayer p, Location l, Interaction action) {
+ if (!p.isOnline()) {
+ return false;
+ }
+
+ Player player = (Player) p;
+ String world = l.getWorld().getName();
+ if (player.hasPermission(Worlds.getPermission(world))) {
+ return true;
+ }
+
+ switch (action) {
+ case BREAK_BLOCK:
+ return !plugin.getAPI().canExecute(world, Flags.destroy, l);
+ case PLACE_BLOCK:
+ return !plugin.getAPI().canExecute(world, Flags.build, l);
+ case ATTACK_PLAYER:
+ return !plugin.getAPI().canExecute(world, Flags.pvp, l);
+ case ATTACK_ENTITY:
+ return !plugin.getAPI().canExecute(world, Flags.mob_damage, l);
+ case INTERACT_ENTITY:
+ case INTERACT_BLOCK:
+ return !plugin.getAPI().canExecute(world, Flags.use, l);
+ }
+
+ return true;
+ }
+}