summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Essentials/src/net/ess3/settings/antibuild/BlackList.java10
-rw-r--r--EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsAntiBuildListener.java11
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);
+ }
+ }
}