Peter200lx / ToolBelt

Play Minecraft with a wide assortment of tools at your side.
9 stars 5 forks source link

add a client-side Weather-changer #13

Open Ephemeris opened 12 years ago

Ephemeris commented 12 years ago

left-click = sun right-click = rain shift-right-click = storm

suggested item: ghast tear (looks like rain/snow, and is generally unused by other plugins, or default game)

Not sure if that's even possible, but it would be a great addition to the creative suite.

It would ease the building (many people get more FPS without weather), and improve the filming (good or dramatic weather for the build tour).

Peter200lx commented 11 years ago

Will research into what is available from the bukkit API. This is lower on my priority list, but will be investigated thoroughly.

Peter200lx commented 11 years ago

Ok, initial research done, this is not possible with just bukkit.

I can build a (probably admin only) tool that can change the weather for the entire server, please let me know if you really wish for a global version of this tool.

However, I have found that this might be possible by directly manipulating minecraft packets. http://mcp.ocean-labs.de/files/jd124/client/net/minecraft/src/Packet70Bed.html Oddly this packet seems to be the only one referencing changing the weather. Sending a player one of these packets with bedState = 1 would tell the client to start raining, and bedState = 2 would stop the rain. The problem is that this would require importing more then just bukkit, which I am not comfortable doing. Feel free to fork the project and build the tool with the additional import(s).

If you find a way to modify the clients weather using pure bukkit interfaces, or if you do want a global weather changing tool, please feel free to re-open this bug with how/why.

Peter200lx commented 11 years ago

This might now be possible as this capability has been added to Bukkit.

https://bukkit.atlassian.net/browse/BUKKIT-812 https://github.com/Bukkit/Bukkit/pull/728 https://github.com/Bukkit/CraftBukkit/pull/947

Peter200lx commented 11 years ago

Initial investigation not great. It appears that there is no difference for a player between WeatherType.CLEAR and WeatherType.DOWNFALL. Both of them start it raining for the player even when the server is clear. Running resetPlayerWeather() re-syncs the player with the server, but this is not the personal user weather I was hoping to see. Don't have time to investigate further today, will come back to later.