@EventHandler
	public void rainChange(WeatherChangeEvent event) {
		if (!event.isCancelled())
		if (event.getWorld().getName().equals(this.world.getName()))
		if (event.toWeatherState()) {
			//starting to rain
			
			if (state == 1) {
				//it's already been waiting. Now we just actually make it rain.
				state = 2;
				Timer timer = new Timer(fireEvent, 0);
				timer.start();
				
				//We also want a timer to turn the rain off in a certain amount of time
				timer = new Timer(toggleDownfall, (rand.nextInt(4)+1) * 300); //set the timer to 1-4 seconds
				timer.start();
				return;
			}
			
			//state has to be 0. We set state to 1, cancel event, and create another thread to sleep and then cause stuff to happen
			
			//Play a scary thunder sound for all players
			for (Player player : world.getPlayers()) {
				player.playSound(player.getLocation(), Sound.AMBIENCE_THUNDER, 1, 1);
			}
			
			Timer timer = new Timer(delayedWeather,60);
			timer.start(); //sets a timer that will go off in 60 seconds and perform delayedWeather
			
			state = 1;			
			event.setCancelled(true);			
		}
		else {
			//weather is turning off.
			state = 0;
			Timer timer = new Timer(toggleDownfall, (rand.nextInt(4)+1) * 150);
			timer.start(); //starts the timer is 1 or 2 seconds
		}
	}