diff options
-rw-r--r-- | Essentials/src/net/ess3/settings/antibuild/BlackList.java | 10 | ||||
-rw-r--r-- | EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsAntiBuildListener.java | 11 |
2 files changed, 21 insertions, 0 deletions
diff --git a/Essentials/src/net/ess3/settings/antibuild/BlackList.java b/Essentials/src/net/ess3/settings/antibuild/BlackList.java index 9475dba13..9eb435aa6 100644 --- a/Essentials/src/net/ess3/settings/antibuild/BlackList.java +++ b/Essentials/src/net/ess3/settings/antibuild/BlackList.java @@ -34,6 +34,11 @@ public class BlackList implements StorageObject @Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE) private Set<Material> piston = new HashSet<Material>(); + @Comment("Which blocks should not be dispensed by dispensers") + @ListType(Material.class) + @Getter(AccessLevel.NONE) + @Setter(AccessLevel.NONE) + private Set<Material> dispenser = new HashSet<Material>(); public void setupDefaults() { @@ -63,4 +68,9 @@ public class BlackList implements StorageObject { return piston != null && piston.contains(mat); } + + public boolean getDispenser(Material mat) + { + return dispenser != null && dispenser.contains(mat); + } } diff --git a/EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsAntiBuildListener.java b/EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsAntiBuildListener.java index ef7d1c33d..aada4d1af 100644 --- a/EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsAntiBuildListener.java +++ b/EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsAntiBuildListener.java @@ -13,6 +13,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockDispenseEvent; import org.bukkit.event.block.BlockPistonExtendEvent; import org.bukkit.event.block.BlockPistonRetractEvent; import org.bukkit.event.block.BlockPlaceEvent; @@ -270,4 +271,14 @@ public class EssentialsAntiBuildListener implements Listener } } } + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onBlockDispense(final BlockDispenseEvent event) + { + final Material mat = event.getItem().getType(); + if (antib.getSettings().getData().getBlacklist().getDispenser(mat)) + { + event.setCancelled(true); + } + } } |