diff --git a/src/main/java/com/sk89q/worldguard/bukkit/WorldConfiguration.java b/src/main/java/com/sk89q/worldguard/bukkit/WorldConfiguration.java index 9b9104ba..74ddbc07 100644 --- a/src/main/java/com/sk89q/worldguard/bukkit/WorldConfiguration.java +++ b/src/main/java/com/sk89q/worldguard/bukkit/WorldConfiguration.java @@ -163,6 +163,7 @@ public class WorldConfiguration { public boolean disableEndermanGriefing; public boolean disableSnowmanTrails; public boolean disableSoilDehydration; + public Set allowedSnowFallOver; public boolean regionInvinciblityRemovesMobs; public boolean disableDeathMessages; public boolean disableObsidianGenerators; @@ -403,6 +404,7 @@ private void loadConfiguration() { disableMyceliumSpread = getBoolean("dynamics.disable-mycelium-spread", false); disableVineGrowth = getBoolean("dynamics.disable-vine-growth", false); disableSoilDehydration = getBoolean("dynamics.disable-soil-dehydration", false); + allowedSnowFallOver = new HashSet(getIntList("dynamics.snow-fall-blocks", null)); useRegions = getBoolean("regions.enable", true); regionInvinciblityRemovesMobs = getBoolean("regions.invincibility-removes-mobs", false); diff --git a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardBlockListener.java b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardBlockListener.java index 04372117..69f4c7d8 100644 --- a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardBlockListener.java +++ b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardBlockListener.java @@ -702,6 +702,14 @@ public void onBlockForm(BlockFormEvent event) { event.setCancelled(true); return; } + if (wcfg.allowedSnowFallOver.size() > 0) { + int targetId = event.getBlock().getRelative(0, -1, 0).getTypeId(); + + if (!wcfg.allowedSnowFallOver.contains(targetId)) { + event.setCancelled(true); + return; + } + } if (wcfg.useRegions && !plugin.getGlobalRegionManager().allows( DefaultFlag.SNOW_FALL, event.getBlock().getLocation())) { event.setCancelled(true);