From f37fd4b166d9f8ff7b48156ca73f07fcc400e72b Mon Sep 17 00:00:00 2001 From: asofold Date: Sun, 24 Feb 2013 14:30:38 +0100 Subject: [PATCH] Allow exemption for prevention of breaking special blocks (e.g. liquid). --- .../main/java/fr/neatmonster/nocheatplus/checks/CheckType.java | 2 ++ .../nocheatplus/checks/blockbreak/BlockBreakConfig.java | 2 ++ .../nocheatplus/checks/blockbreak/BlockBreakListener.java | 3 ++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/CheckType.java b/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/CheckType.java index c6658030..c7bab95e 100644 --- a/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/CheckType.java +++ b/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/CheckType.java @@ -40,6 +40,8 @@ public enum CheckType { ALL(Permissions.CHECKS), BLOCKBREAK(BlockBreakConfig.factory, BlockBreakData.factory, Permissions.BLOCKBREAK), + /** This will allow breaking all special blocks, currently only liquid. Later there might be more sub-types. */ + BLOCKBREAK_BREAK(BLOCKBREAK, Permissions.BLOCKBREAK_BREAK), BLOCKBREAK_DIRECTION(BLOCKBREAK, Permissions.BLOCKBREAK_DIRECTION), BLOCKBREAK_FASTBREAK(BLOCKBREAK, Permissions.BLOCKBREAK_FASTBREAK), BLOCKBREAK_FREQUENCY(BLOCKBREAK, Permissions.BLOCKBREAK_FREQUENCY), diff --git a/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/blockbreak/BlockBreakConfig.java b/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/blockbreak/BlockBreakConfig.java index e5893834..748150d9 100644 --- a/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/blockbreak/BlockBreakConfig.java +++ b/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/blockbreak/BlockBreakConfig.java @@ -174,6 +174,8 @@ public class BlockBreakConfig extends ACheckConfig { return reachCheck; case BLOCKBREAK_WRONGBLOCK: return wrongBlockCheck; + case BLOCKBREAK_BREAK: + return true; default: return true; } diff --git a/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/blockbreak/BlockBreakListener.java b/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/blockbreak/BlockBreakListener.java index 28991965..f905f25c 100644 --- a/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/blockbreak/BlockBreakListener.java +++ b/NCPPlugin/src/main/java/fr/neatmonster/nocheatplus/checks/blockbreak/BlockBreakListener.java @@ -15,6 +15,7 @@ import org.bukkit.event.player.PlayerInteractEvent; import fr.neatmonster.nocheatplus.checks.CheckListener; import fr.neatmonster.nocheatplus.checks.CheckType; import fr.neatmonster.nocheatplus.checks.inventory.Items; +import fr.neatmonster.nocheatplus.hooks.NCPExemptionManager; import fr.neatmonster.nocheatplus.permissions.Permissions; import fr.neatmonster.nocheatplus.utilities.BlockProperties; import fr.neatmonster.nocheatplus.utilities.TickTask; @@ -136,7 +137,7 @@ public class BlockBreakListener extends CheckListener { cancelled = true; // Destroying liquid blocks. - if (!cancelled && BlockProperties.isLiquid(block.getTypeId()) && !player.hasPermission(Permissions.BLOCKBREAK_BREAK_LIQUID)){ + if (!cancelled && BlockProperties.isLiquid(block.getTypeId()) && !player.hasPermission(Permissions.BLOCKBREAK_BREAK_LIQUID) && !NCPExemptionManager.isExempted(player, CheckType.BLOCKBREAK_BREAK)){ cancelled = true; }