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; + } +}