SnowControl
Makes snow more "real" and configurable, by allowing it to fall "through" leaves (and any other object you want), in addition to allowing snow to accumulate and melt.
Also, when breaking a block with snow on it, the snow will "fall" (similar to sand or gravel) and pile up on any snow that's underneath.
Snow will only accumulate while it's snowing, and can pile up as much as you want.
Snow will also melt (configurable) during the day if it's not snowing. It can melt down to one layer (default), or down to nothing.

WARNING
This plugin is very CPU intensive, and if you have a very large server with many players always on, this plugin may cause lag. Also, if your server hardware is old and out dated it may also have issues running this plugin. Having said this, my real server where this is running is a Dual core Xeon @ 3.00GHz with 4GB ram, and haven't had any issues.
Installation
Download jar and place it in your plugins folder. (http://wiki.bukkit.org/Installing_Plugins)
There is always a development version HERE. Please keep in mind that this build may not be working 100%, or even tested, use at your own risk.
Commands/Permissions
commands: snowcontrol: description: Primary command for SnowControl. aliases: [sc] usage: - /<command> reload - Force the plugin to reload the config file. - /<command> addReplace - Adds next clicked block to 'CanReplace' list. - /<command> addAccum - Adds next clicked block to 'CanAccumulateOn' list. - /<command> addFall - Adds next clicked block to 'CanFallThrough' list. permissions: snowcontrol.reload: description: Force the plugin to reload the config file. default: op snowcontrol.addReplace: description: Adds next clicked block to 'CanReplace' list. default: op snowcontrol.addAccum: description: Adds next clicked block to 'CanAccumulateOn' list. default: op snowcontrol.addFall: description: Adds next clicked block to 'CanFallThrough' list. default: op
Configuration Defaults
"SnowFall.CheckEvery" is how often each snow eligible block will be checked. It is not recommended to set less than 5 seconds, or if you have a large server with many players, the higher the better. And then every time a block is checked, there is a chance it can accumulate, or melt based on the config below.
# # Settings for Snow Fall # blocks can be listed as ID's or their names, # but names must be exactly as seen here: # http://jd.bukkit.org/apidocs/org/bukkit/Material.html ### SnowFall: #this is only in biomes where snow falls naturally CheckEvery: 10 #number in seconds AccumulationEnabled: true AccumulationChance: 1 #percent 0-100 MaxAccumulationDefault: 8 # number of 'layers' of snow MaxAccumulationOverride: # Must match marerial name exactly LEAVES: 3 MeltingEnabled: true MeltingChance: 0.5 #percent 0-100 MeltDownCompletely: false #If true, snow could disappear during the day MinLightLevelToMelt: 11 ChanceToFallThrough: 80 #percent 0-100 CanFallThrough: #Air is always assumed - LEAVES CanReplace: #Air is always assumed - CanAccumulateOn: - BEDROCK - BRICK - CACTUS - CLAY - CLAY_BRICK - DIAMOND - DIAMOND_BLOCK - DIAMOND_ORE - DIRT - EMERALD - EMERALD_BLOCK - EMERALD_ORE - ENDER_STONE - GOLD_BLOCK - GOLD_ORE - GRASS - HUGE_MUSHROOM_1 - HUGE_MUSHROOM_2 - IRON_BLOCK - IRON_ORE - LAPIS_BLOCK - LAPIS_ORE - LEAVES - LOG - MELON_BLOCK - MOSSY_COBBLESTONE - NETHER_BRICK - NETHERRACK - OBSIDIAN - PUMPKIN - SAND - SANDSTONE - SMOOTH_BRICK - SOIL - STONE - WOOD - WOOL
Wish I had time to Do List
- Make thrown snowballs create snow patches.
- Make thrown snowballs cause damage.
- Make thrown snowballs cause slowdown (freezing effect).
- Make deeper snow slow down players and/or mobs.
- Create custom snow related recipes (ideas welcome)
. . . . . . . . . . . . .
This plugin utilizes Hidendra's plugin metrics system, which means some anonymous information will be collected and sent to mcstats.org. This allows me to track how many servers are actually running the plugin, and the larger user base I have the more likely I am to add features. If you wish to opt out of this service, it can be done by editing plugins/Plugin Metrics/config.yml
-
View User Profile
-
Send Message
Posted Apr 22, 2013I really love your plugin xD
We may well do a video on it after our exams finish, I think it's really awesome :D
-
View User Profile
-
Send Message
Posted Feb 22, 2013@zwollner
My problem is I'm trying to melt all the now that has accumulated in generated chunks that aren't currently loaded. That's why I was asking. Do you have a version that scans all generated chunks?
-
View User Profile
-
Send Message
Posted Feb 22, 2013@nicholasooo
Yes, only loaded chunks. And just loaded chunks is causing performance issues for some, I can't imagine what would happen if it was scanning all chunks.
-
View User Profile
-
Send Message
Posted Feb 22, 2013Does this only affect currently loaded chunks? How about chunks that are generated but not loaded?
-
View User Profile
-
Send Message
Posted Feb 19, 2013i use latest stable version bukkit build (1.4.7R1.0)
important :
1) I change the biome in the kingdom to adapt to the winter season, so it snows a large distance
2) my server generates large biomes
my config (snowcontrol) :
-
View User Profile
-
Send Message
Posted Feb 18, 2013lol for me it lagged the server extermly bad, what about scanning every chunk within a radius of the player? or changing the scan so that it only scans in the tundra/taiga etc. biomes rather than in deserts etc.? And is there a way to prevent this lag? such as removing the melting system or what is the main problem there? cause i know craftbook has this feature and there was another snow stacking plugin that did this and they didnt have any noticable lag.
-
View User Profile
-
Send Message
Posted Feb 18, 2013@N1T3SLAY3R
Yes, I know it's very CPU intensive. With the default config, It's scanning every loaded chunk every 10sec.
Feel Free to give me some suggestions, but so far I haven't been able to find any way to make it much more efficient. My code is here: (https://github.com/zwollner/SnowControl)
It seems to run pretty good on both my real and test servers, So I haven't been too concerned.
-
View User Profile
-
Send Message
Posted Feb 17, 2013As much as i like this plugin, theres a MAJOR concern with it... When i used the lag examiner from nolagg to see which plugins were using the most cpu on my server, the top 3 were nolagg at 78.2ms, monsterapocalypse at 617ms, then snowcontrol at 4634ms!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Thats a pretty big difference :O anyways that really needs to get lowered before i continue using this plugin, good luck :P
-
View User Profile
-
Send Message
Posted Feb 17, 2013@patalkok
Thanks for the stack trace. What version of craftbukkit are you running, and have you made many/any changes to the default config? Or any out of the ordinary world config? Looking at the errors you pasted, I see a possible issue with some sky worlds (or variations of them)
I'll try and get this resolved ASAP. Any additional info always helps.
-
View User Profile
-
Send Message
Posted Feb 17, 2013lag with latester version 9.5 beta
01:48:18 [WARNING] [Server] The main thread failed to respond after 10 seconds 01:48:18 [WARNING] [Server] Probable Plugin cause: 'SnowControl' 01:48:18 [WARNING] [Server] What follows is the stack trace of the main thread 01:48:18 [WARNING] [Server] at org.bukkit.configuration.MemorySection.getConfigurationSection(MemorySection.java:675) 01:48:18 [WARNING] [Server] at org.bukkit.configuration.MemorySection.get(MemorySection.java:215) 01:48:18 [WARNING] [Server] at org.bukkit.configuration.MemorySection.getInt(MemorySection.java:296) 01:48:18 [WARNING] [Server] at com.zmanww.bukkit.SnowControl.Config.getMaxAccumulation(Config.java:172) 01:48:18 [WARNING] [Server] at com.zmanww.bukkit.SnowControl.SnowManager.increaseSnowLevel(SnowManager.java:25) 01:48:18 [WARNING] [Server] at com.zmanww.bukkit.SnowControl.SnowMonitor.run(SnowMonitor.java:52) 01:48:18 [WARNING] [Server] at org.bukkit.craftbukkit.v1_4_R1.scheduler.CraftTask.run(CraftTask.java:53) 01:48:18 [WARNING] [Server] at org.bukkit.craftbukkit.v1_4_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:344) 01:48:18 [WARNING] [Server] at net.minecraft.server.v1_4_R1.MinecraftServer.r(MinecraftServer.java:530) 01:48:18 [WARNING] [Server] at net.minecraft.server.v1_4_R1.DedicatedServer.r(DedicatedServer.java:224) 01:48:18 [WARNING] [Server] at net.minecraft.server.v1_4_R1.MinecraftServer.q(MinecraftServer.java:494) 01:48:18 [WARNING] [Server] at net.minecraft.server.v1_4_R1.MinecraftServer.run(MinecraftServer.java:427) 01:48:18 [WARNING] [Server] at net.minecraft.server.v1_4_R1.ThreadServerApplication.run(SourceFile:849) 01:48:48 [WARNING] [Server] The main thread failed to respond after 10 seconds 01:48:48 [WARNING] [Server] Probable Plugin cause: 'SnowControl' 01:48:48 [WARNING] [Server] What follows is the stack trace of the main thread 01:48:48 [WARNING] [Server] at net.minecraft.server.v1_4_R1.ChunkProviderServer.getChunkAt(ChunkProviderServer.java:85) 01:48:48 [WARNING] [Server] at org.bukkit.craftbukkit.v1_4_R1.CraftWorld.getChunkAt(CraftWorld.java:117) 01:48:48 [WARNING] [Server] at org.bukkit.craftbukkit.v1_4_R1.CraftWorld.getBlockAt(CraftWorld.java:81) 01:48:48 [WARNING] [Server] at org.bukkit.craftbukkit.v1_4_R1.block.CraftBlock.getRelative(CraftBlock.java:160) 01:48:48 [WARNING] [Server] at org.bukkit.craftbukkit.v1_4_R1.block.CraftBlock.getRelative(CraftBlock.java:168) 01:48:48 [WARNING] [Server] at org.bukkit.craftbukkit.v1_4_R1.block.CraftBlock.getRelative(CraftBlock.java:164) 01:48:48 [WARNING] [Server] at com.zmanww.bukkit.SnowControl.SnowManager.getHighestNonAirBlock(SnowManager.java:164) 01:48:48 [WARNING] [Server] at com.zmanww.bukkit.SnowControl.SnowMonitor.run(SnowMonitor.java:39) 01:48:48 [WARNING] [Server] at org.bukkit.craftbukkit.v1_4_R1.scheduler.CraftTask.run(CraftTask.java:53) 01:48:48 [WARNING] [Server] at org.bukkit.craftbukkit.v1_4_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:344) 01:48:48 [WARNING] [Server] at net.minecraft.server.v1_4_R1.MinecraftServer.r(MinecraftServer.java:530) 01:48:48 [WARNING] [Server] at net.minecraft.server.v1_4_R1.DedicatedServer.r(DedicatedServer.java:224) 01:48:48 [WARNING] [Server] at net.minecraft.server.v1_4_R1.MinecraftServer.q(MinecraftServer.java:494) 01:48:48 [WARNING] [Server] at net.minecraft.server.v1_4_R1.MinecraftServer.run(MinecraftServer.java:427) 01:48:48 [WARNING] [Server] at net.minecraft.server.v1_4_R1.ThreadServerApplication.run(SourceFile:849) 01:49:48 [WARNING] [Server] The main thread failed to respond after 10 seconds 01:49:48 [WARNING] [Server] Probable Plugin cause: 'SnowControl' 01:49:48 [WARNING] [Server] What follows is the stack trace of the main thread 01:49:48 [WARNING] [Server] at org.bukkit.craftbukkit.v1_4_R1.util.LongHashSet.remove(LongHashSet.java:141) 01:49:48 [WARNING] [Server] at org.bukkit.craftbukkit.v1_4_R1.util.LongHashSet.remove(LongHashSet.java:128) 01:49:48 [WARNING] [Server] at net.minecraft.server.v1_4_R1.ChunkProviderServer.getChunkAt(ChunkProviderServer.java:89) 01:49:48 [WARNING] [Server] at net.timedminecraft.server.TimedChunkProviderServer.getChunkAt(TimedChunkProviderServer.java:153) 01:49:48 [WARNING] [Server] at net.minecraft.server.v1_4_R1.ChunkProviderServer.getChunkAt(ChunkProviderServer.java:85) 01:49:48 [WARNING] [Server] at org.bukkit.craftbukkit.v1_4_R1.CraftWorld.getChunkAt(CraftWorld.java:117) 01:49:48 [WARNING] [Server] at org.bukkit.craftbukkit.v1_4_R1.CraftWorld.getBlockAt(CraftWorld.java:81) 01:49:48 [WARNING] [Server] at org.bukkit.craftbukkit.v1_4_R1.block.CraftBlock.getRelative(CraftBlock.java:160) 01:49:48 [WARNING] [Server] at org.bukkit.craftbukkit.v1_4_R1.block.CraftBlock.getRelative(CraftBlock.java:168) 01:49:48 [WARNING] [Server] at org.bukkit.craftbukkit.v1_4_R1.block.CraftBlock.getRelative(CraftBlock.java:164) 01:49:48 [WARNING] [Server] at com.zmanww.bukkit.SnowControl.SnowManager.getHighestNonAirBlock(SnowManager.java:164) 01:49:48 [WARNING] [Server] at com.zmanww.bukkit.SnowControl.SnowMonitor.run(SnowMonitor.java:39) 01:49:48 [WARNING] [Server] at org.bukkit.craftbukkit.v1_4_R1.scheduler.CraftTask.run(CraftTask.java:53) 01:49:48 [WARNING] [Server] at org.bukkit.craftbukkit.v1_4_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:344) 01:49:48 [WARNING] [Server] at net.minecraft.server.v1_4_R1.MinecraftServer.r(MinecraftServer.java:530) 01:49:48 [WARNING] [Server] at net.minecraft.server.v1_4_R1.DedicatedServer.r(DedicatedServer.java:224) 01:49:48 [WARNING] [Server] at net.minecraft.server.v1_4_R1.MinecraftServer.q(MinecraftServer.java:494) 01:49:48 [WARNING] [Server] at net.minecraft.server.v1_4_R1.MinecraftServer.run(MinecraftServer.java:427) 01:49:48 [WARNING] [Server] at net.minecraft.server.v1_4_R1.ThreadServerApplication.run(SourceFile:849)
-
View User Profile
-
Send Message
Posted Feb 12, 2013@patalkok
Try using the new commands in the latest builds: "/sc addReplace" to add the next block clicked to the list.
For blocks to be replaced they must be on top of blocks that snow can accumulate on.
Also, any block in the CanReplace list should not be in the other lists. There are currently no checks for this, and is entirely left up to the user... Not really sure what would happen if the block is in the other lists also.
-
View User Profile
-
Send Message
Posted Feb 12, 2013@Pyr0Seraph
The Server hang with the end and nether worlds should be taken care of in the latest builds (beta9.3 and up).
And yes, I'm still having issues with it not accumulating on, and sometimes falling through, GLASS and a few other blocks. Thanks for pointing out that COBBLE_WALL also has this issue. So far I have no solution, seems like a bukkit bug, but will require more research/testing.
And thanks for the stack trace for the BlockDamageEvent issue. I haven't seen that one but I'll look into it.
I've tried looking into making the grass under fences and other things white, but I don't think it's possible without some different texture pack or something.
-
View User Profile
-
Send Message
Posted Feb 12, 2013Aaand.. hate to do this, mostly I just wanted to mention the glass and fence situation, but I just noticed on my server.. not sure what it's from, I'll keep an eye on it as well..
2:42:36 AM [SEVERE] Could not pass event BlockDamageEvent to SnowControl v1.0-beta9.4 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462) at org.bukkit.craftbukkit.v1_4_R1.event.CraftEventFactory.callBlockDamageEvent(CraftEventFactory.java:214) at net.minecraft.server.v1_4_R1.PlayerInteractManager.dig(PlayerInteractManager.java:167) at net.minecraft.server.v1_4_R1.PlayerConnection.a(PlayerConnection.java:564) at net.minecraft.server.v1_4_R1.Packet14BlockDig.handle(SourceFile:46) at net.minecraft.server.v1_4_R1.NetworkManager.b(NetworkManager.java:290) at net.minecraft.server.v1_4_R1.PlayerConnection.d(PlayerConnection.java:113) at net.minecraft.server.v1_4_R1.ServerConnection.b(SourceFile:39) at net.minecraft.server.v1_4_R1.DedicatedServerConnection.b(SourceFile:30) at net.minecraft.server.v1_4_R1.MinecraftServer.r(MinecraftServer.java:598) at net.minecraft.server.v1_4_R1.DedicatedServer.r(DedicatedServer.java:224) at net.minecraft.server.v1_4_R1.MinecraftServer.q(MinecraftServer.java:494) at net.minecraft.server.v1_4_R1.MinecraftServer.run(MinecraftServer.java:427) at net.minecraft.server.v1_4_R1.ThreadServerApplication.run(SourceFile:849) Caused by: java.lang.NullPointerException at com.zmanww.bukkit.SnowControl.Config.MaterialToString(Config.java:95) at com.zmanww.bukkit.SnowControl.Config.addAccumulate(Config.java:77) at com.zmanww.bukkit.SnowControl.PlayerListener.onBlockDamage(PlayerListener.java:59) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425) ... 16 more
-
View User Profile
-
Send Message
Posted Feb 12, 2013SnowControl v1.0b9.4 Bukkit 1.4.7-R1.0-b2624
So far I've been able to successfully add YELLOW_FLOWER and TALL_GRASS to canReplace (seen with my own eyes that it DID replace) without any problems. Have added FENCE and ICE to canAccumulate and it's worked fine.
Biggest thing that I can't figure out is I've added GLASS and COBBLE_WALL to canAccumulate, and it absolutely refuses to accumulate on them at all. (have added them both through ingame command AND editing the yml.
Only real glitch of note I've found so far is that even though GLASS and COBBLE_WALL isn't on the list of canFallThrough, snow can fall through both, annoying my players because they have to keep cleaning out their houses and walkways.
I DID earlier have a server hang glitch, which made me lose a day's worth of work on the server, and took me a while to figure it out, as far as I can tell, it must've been something with The End (Or Nether, can't remember), like what you had mentioned before. I only have the 3 default worlds.. (world, world_the_end, world_nether) and when SnowControl first loaded up, it added those 3 to the yml. As soon as I removed both the end and nether from the yml, I haven't had a problem since. ((This also occured on b9, not b9.4, so I don't know if it might still be an issue, or if it's taken care of, just wanted to mention it))
I'll try to remember to keep an eye on the forum messages here in case you need or want any more info.
In any case, keep up the good work! I absolutely love the dynamic effect of the snow, and the ideas you have with it. ((now if only I can find a seasons mod that I like lol))
Oh, and one other thing to bring up for you to think about on your To Do list... I remember a long while back, I had it in such a way that snow would show on grass/stone/etc. that was UNDERNEATH fences. As in it looked like snow had fallen past the fence and covered the ground the fence was sitting on, instead of a snowcovered field with completely bare grass under the fence. I am NOT sure if this was from a mod, or a texture pack I was using, or what. But.. if it is something that can be figured out, I'm sure it would make a GREAT addition to your work
-Pyr0
-
View User Profile
-
Send Message
Posted Feb 6, 2013The server hang bug seems to be gone
No more console error spam too ( awesome )
One thing ive noticed is the reload doesnt seem to pick up any changes you make to the time interval
The percent chance to accumulate and melt, and the max height changes, seem to get picked up, but any changes you make to the check interval seems to be ignored.
-
View User Profile
-
Send Message
Posted Feb 4, 2013sc reload
2013-02-05 16:43:45 [INFO] You can't use this from the console.
can you fix to work on server console ? ( unless its conflicting ?:)
-
View User Profile
-
Send Message
Posted Feb 4, 2013hi, it me again :p
Snow can not replace a cultivations (kill cultivation) except for wheat (crops, and melon_stem pumpikin_stem)
I wish I could kill cultivations to add more role-play on my server (eg potatoes and carrots will not work)
other elements that can not be replaced:
- LEAVES - TALL_GRASS - NETHER_WART - COCOA_PODS
and also, when the cultivation of wheat are dead, snow does not arrive at this place ...
edit : now it work with sapling and flower
another problem : the snow cant replace all leaves trees :/ (just half)
and please, fix the bug with the glass for the next release
picture:
-
View User Profile
-
Send Message
Posted Feb 4, 2013@diannetea
beta9.3 fixes that. it can be found here: https://zwollner.ci.cloudbees.com/job/SnowControl/lastSuccessfulBuild/com.zmanww$SnowControl/
Also, this has not been tested with spigot.
-
View User Profile
-
Send Message
Posted Feb 4, 2013Massive error with the latest version, I am using Spigot build 484
http://pastebin.com/G5VfnMQN
-
View User Profile
-
Send Message
Posted Feb 4, 2013@zwollner
ok thanks for the material page site :)