
WeatherNews 2.2.2
WeatherNews is a simple plugin that shows weather information in chat as it changes.

WeatherNews is a small and simple plugin that shows weather information in chat.
Every time the weather changes it will be announced, It will explain in detail what's happening, how long it will stay that way and what's most likely to be next.
This plugin was originally made by Namarius in early 2011, I used it back on Minecraft 1.2 back in 2012 and it was a great addition for a survival server but unfortunately it had not received an update since 2012.
I've updated this best i can and made some nice adjustments including two new variables for Italic and Bold text aswell as a modern new look, see example screenshots below...
' Enjoy!


When you Download this you will get a .zip file, open that and select the version that you need for your server, Then simply drop the .jar file in the plugins folder.
Tested Working in: [Paper | Spigot | CraftBukkit | Tuinity]

This plugins config is easy to understand, You can customize all the messages in the config,this plugin will understands newline or line breaks if you provide them correctly through Yaml
Here is the default configuration:
# _ __ __ __ _ __
# | | / /__ ____ _/ /_/ /_ ___ _____/ | / /__ _ _______
# | | /| / / _ \/ __ `/ __/ __ \/ _ \/ ___/ |/ / _ \ | /| / / ___/
# | |/ |/ / __/ /_/ / /_/ / / / __/ / / /| / __/ |/ |/ (__ )
# |__/|__/\___/\__,_/\__/_/ /_/\___/_/ /_/ |_/\___/|__/|__/____/
# [2.2.2]
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# If set to false the whitelist is a blacklist.
# This means worlds listed won't receive Weather News announcements.
worldwhitelist: false
worlds:
- world_sample
- world_other
# if set to true players will get the current weather notifacation as they join, if you do not want this simply set to false.
showonlogin: true
# Stepping allows time to be displayed in steps. This is useful if you
# wish to hide information from your players. The system will use the
# entry which is farthest away from current time the next weather
# change in ingame Minecraft ticks. 24000 for example is 1 day. An
# entry consist of up to 3 entrys of minute, hour and day.
# Please note that there could be strange things happening if not
# all three are present!
# This isn't true if anything is made as in the default configuration.
# For the minute, hour and day entrys a zero means will not show and anything
# over 1 means divide thou x and multiply with x in integer (natural numbers).
stepping:
- 1:
minute: 1
- 60:
minute: 10
- 240:
minute: 30
- 360:
minute: 0
hour: 1
- 11520:
minute: 0
hour: 0
day: 2
unprecise: true
minimumpercentage: 0.1
maximumpercentage: 1.0
exponentialmod: 2.0
modulator: 79
maximumtime: 180000
# Variable -------Name Usage
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# DAY-------------Set display name of singular day
# DAY_PLURAL------Set display name of plural days
# HOUR------------Set display name of singular hour
# HOUR_PLURAL-----Set display name of plural hours
# MINUTE----------Set display name of singular minute
# MINUTE_PLURAL---Set display name of plural minutes
# AND-------------Set display name of and
# SUN-------------Set display name of sun
# RAIN------------Set display name of rain
# THUNDERSTORM----Set display name of thunderstorm
# CLEAR-----------Will be displayed if the system know which weather will be after the current (change)
# UNCLEAR---------Will be displayed if the system doesn't know which weather will be after the current (change)
# BLACKLISTED-----Will be displayed if this world is blacklisted or not whitelisted
# UNAVAILABLE-----Will be displayed if this world doesn't provide weather information
# ACCURACY--------Get replaced by fake accuracy as percentage from 0-100 without a %
# BLACK-----------Sets anything after it black
# DARK_BLUE-------Sets anything after it dark blue
# DARK_GREEN------Sets anything after it dark green
# DARK_AQUA-------Sets anything after it dark blue (aqua)
# DARK_RED--------Sets anything after it dark red
# DARK_PURPLE-----Sets anything after it dark purple
# GOLD------------Sets anything after it gold
# GRAY------------Sets anything after it gray
# DARK_GRAY-------Sets anything after it dark gray
# BLUE------------Sets anything after it blue
# GREEN-----------Sets anything after it green
# AQUA------------Sets anything after it aqua
# RED-------------Sets anything after it red
# LIGHT_PURPLE----Sets anything after it light purple
# YELLOW----------Sets anything after it yellow
# WHITE-----------Sets anything after it white
# ITALIC----------Sets anything after it italic
# BOLD------------Sets anything after it bold

As one can see there are a number of uppercase words. Uppercase signs that these variables are used by the internal system and have a special symbolic. The system allows you to use variables in strings. It's build up like this "${variablename}". All these variables lies under the "variables" section. Anything else is just Strings and YAML.

This is a small table over all preset variable names and their usage in the "variables" section.
[dropdown=config variables examples]
variables:
DAY: "day"
DAY_PLURAL: "days"
HOUR: "hour"
HOUR_PLURAL: "hours"
MINUTE: "minute"
MINUTE_PLURAL: "minutes"
AND: "and"
SUN: "clear skys"
RAIN: "rain"
THUNDERSTORM: "thunderstorm"
CLEAR: "${header}${today}${mainclear}${nextclear}"
UNCLEAR: "${header}${today}${mainunclear}${nextunclear}"
UNAVAILABLE: "${header}${RED}Weather unavailable."
BLACKLISTED: "${header}${RED}Sorry I can't do this."
header: "${GOLD}${ITALIC}${BOLD}WeatherNews ${WHITE}${ITALIC}${BOLD}>${AQUA} "
today: |
Today is day ${TIMEDAY}.
nextunclear: |
After that we have something different.
I will notify you then.
nextclear: "After that we have ${NEXT} (${ACCURACY}%)."
mainclear: |
We have ${NOW} for the next ${NEXTNICE}.
mainunclear: |
We have ${NOW} for at least the next ${NEXTNICE} (${ACCURACY}%).
[/dropdown]

DAY Set display name of singular day
DAY_PLURAL Set display name of plural days
HOUR Set display name of singular hour
HOUR_PLURAL Set display name of plural hours
MINUTE Set display name of singular minute
MINUTE_PLURAL Set display name of plural minutes
AND Set display name of and
SUN Set display name of sun
RAIN Set display name of rain
THUNDERSTORM Set display name of thunderstorm
CLEAR Will be displayed if the system know which weather will be after the current (change)
UNCLEAR Will be displayed if the system doesn't know which weather will be after the current (change)
BLACKLISTED Will be displayed if this world is blacklisted or not whitelisted
UNAVAILABLE Will be displayed if this world doesn't provide weather information
ACCURACY Get replaced by fake accuracy as percentage from 0-100 without a %
BLACK Sets anything after it black
DARK_BLUE Sets anything after it dark blue
DARK_GREEN Sets anything after it dark green
DARK_AQUA Sets anything after it dark blue (aqua)
DARK_RED Sets anything after it dark red
DARK_PURPLE Sets anything after it dark purple
GOLD Sets anything after it gold
GRAY Sets anything after it gray
DARK_GRAY Sets anything after it dark gray
BLUE Sets anything after it blue
GREEN Sets anything after it green
AQUA Sets anything after it aqua
RED Sets anything after it red
LIGHT_PURPLE Sets anything after it light purple
YELLOW Sets anything after it yellow
WHITE Sets anything after it white
ITALIC Sets anything after it italic
BOLD Sets anything after it bold

To stop this plugin from displaying to players as they join simply go to the config and set:
showlogin: false

worldwhitelist can be used to switch between whitelisting and blacklisting. By default the worlds listed will be Blacklisted, so this plugin will not work on those listed worlds. see below for example
[dropdown=Example]
worldwhitelist: false
worlds:
- world_sample
- world_other

Stepping allows time to be displayed in steps. This is useful if you wish to hide information from your players. The system will use the entry which is farthest away from current time the next weather change in ingame Minecraft ticks. 24000 for example is 1 day. An entry consist of up to 3 entrys of minute, hour and day.
Please note that there could be strange things happening if not all three are present!
This isn't true if anything is made as in the default configuration. For the minute, hour and day entrys a zero means will not show and anything over 1 means divide thou x and multiply with x in integer (natural numbers).

here is the formula used to calculate the accuracy and the meaning of the variables.
t %time left for weather change.
accuracy=((maximumpercentage-minimumpercentage) * exp(-2*pi*(t/maximumtime)^exponentialmod) + minimumpercentage) * 100

maximumpercentage The absolute maximum of accuracy at t=0
minimumpercentage The absolute minimum of accuracy at t=maximumtime
maximumtime This should be somewhere at 180000 because this is the absolute maximum time period for a weather change
exponentialmod This controls the flank of the function should be 2 and bigger than 1
modulator This sets the amount of possible randomization. Should always be a prime and not no big specially not bigger than maximumtime
unprecise Enables fake news
Most of the time changing maximumpercentage and minimumpercentage is sufficient. All of this is try and error and for your comfort changing the config will work while running Spigot.

There is only one command "/wnews" and this show's the news any time you want it!
Running this command on the console will broadcast weatherNews to all players even if there isn't weather available.
_____________________________________________________________________________________________________________



