From 5921be432c28a373c87c5b2358fe79f3b6f59c42 Mon Sep 17 00:00:00 2001 From: JOO200 Date: Sat, 17 Oct 2020 23:51:39 +0200 Subject: [PATCH] Change anvil usage to build permissions and add use-anvil flag (#1644) --- .../bukkit/listener/RegionProtectionListener.java | 5 +++++ .../java/com/sk89q/worldguard/bukkit/util/Materials.java | 7 +++++-- .../java/com/sk89q/worldguard/protection/flags/Flags.java | 1 + 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/RegionProtectionListener.java b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/RegionProtectionListener.java index ab18533c..11c0fc9f 100644 --- a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/RegionProtectionListener.java +++ b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/RegionProtectionListener.java @@ -268,6 +268,11 @@ public class RegionProtectionListener extends AbstractListener { canUse = query.testBuild(BukkitAdapter.adapt(target), associable, combine(event, Flags.CHEST_ACCESS)); what = "take that"; + /* Anvils */ + } else if (Materials.isAnvil(type)) { + canUse = query.testBuild(BukkitAdapter.adapt(target), associable, combine(event, Flags.USE_ANVIL)); + what = "use that"; + /* Beds */ } else if (Materials.isBed(type)) { canUse = query.testBuild(BukkitAdapter.adapt(target), associable, combine(event, Flags.INTERACT, Flags.SLEEP)); diff --git a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/Materials.java b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/Materials.java index 694f3f2f..32555327 100644 --- a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/Materials.java +++ b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/Materials.java @@ -1263,6 +1263,10 @@ public final class Materials { return Tag.BEDS.isTagged(material); } + public static boolean isAnvil(Material material) { + return Tag.ANVIL.isTagged(material); + } + public static boolean isCoral(Material material) { return Tag.CORAL_BLOCKS.isTagged(material) || Tag.CORAL_PLANTS.isTagged(material) || @@ -1319,8 +1323,7 @@ public final class Materials { || Tag.DOORS.isTagged(material) || Tag.WOODEN_TRAPDOORS.isTagged(material) || Tag.FENCE_GATES.isTagged(material) - || Tag.PRESSURE_PLATES.isTagged(material) - || Tag.ANVIL.isTagged(material)) { + || Tag.PRESSURE_PLATES.isTagged(material)) { return true; } switch (material) { diff --git a/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/Flags.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/Flags.java index ec4f2062..7bb879de 100644 --- a/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/Flags.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/Flags.java @@ -71,6 +71,7 @@ public final class Flags { public static final StateFlag ITEM_FRAME_ROTATE = register(new StateFlag("item-frame-rotation", false)); public static final StateFlag TRAMPLE_BLOCKS = register(new StateFlag("block-trampling", false)); public static final StateFlag FIREWORK_DAMAGE = register(new StateFlag("firework-damage", false)); + public static final StateFlag USE_ANVIL = register(new StateFlag("use-anvil", false)); // These flags are similar to the ones above (used in tandem with BUILD), // but their defaults are set to TRUE because it is more user friendly.