diff --git a/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java b/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java index 7d30de172..ae2107add 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java @@ -2,6 +2,7 @@ package com.earth2me.essentials; import com.earth2me.essentials.utils.EnumUtil; import com.earth2me.essentials.utils.LocationUtil; +import com.earth2me.essentials.utils.MaterialUtil; import net.ess3.api.IEssentials; import org.bukkit.GameMode; import org.bukkit.Material; @@ -29,12 +30,12 @@ public class EssentialsBlockListener implements Listener { // Do not rely on getItemInHand(); // http://leaky.bukkit.org/issues/663 final ItemStack is = LocationUtil.convertBlockToItem(event.getBlockPlaced()); + if (is == null) { return; } - Material MOB_SPAWNER = EnumUtil.getMaterial("SPAWNER", "MOB_SPAWNER"); - if (is.getType() == MOB_SPAWNER && event.getItemInHand() != null && event.getPlayer() != null && event.getItemInHand().getType() == MOB_SPAWNER) { + if (is.getType() == MaterialUtil.SPAWNER && event.getItemInHand() != null && event.getPlayer() != null && event.getItemInHand().getType() == MaterialUtil.SPAWNER) { final BlockState blockState = event.getBlockPlaced().getState(); if (blockState instanceof CreatureSpawner) { final CreatureSpawner spawner = (CreatureSpawner) blockState; diff --git a/Essentials/src/com/earth2me/essentials/utils/MaterialUtil.java b/Essentials/src/com/earth2me/essentials/utils/MaterialUtil.java index 0ec191db0..14b4acdc2 100644 --- a/Essentials/src/com/earth2me/essentials/utils/MaterialUtil.java +++ b/Essentials/src/com/earth2me/essentials/utils/MaterialUtil.java @@ -16,6 +16,9 @@ public class MaterialUtil { // includes TIPPED_ARROW which also has potion effects private static final Set PLAYER_HEADS; private static final Set POTIONS; + private static final Set SIGNS; + + public static final Material SPAWNER = EnumUtil.getMaterial("MOB_SPAWNER", "SPAWNER"); static { @@ -47,6 +50,7 @@ public class MaterialUtil { POTIONS = EnumUtil.getAllMatching(Material.class, "POTION", "SPLASH_POTION", "LINGERING_POTION", "TIPPED_ARROW"); + SIGNS = EnumUtil.getAllMatching(Material.class, "SIGN", "SIGN_POST", "WALL_SIGN"); } public static boolean isBed(Material material) { @@ -85,6 +89,10 @@ public class MaterialUtil { return POTIONS.contains(material); } + public static boolean isSign(Material material) { + return SIGNS.contains(material); + } + public static boolean isSkull(Material material) { return isPlayerHead(material, -1) || isMobHead(material, -1); }