CloudRainEvents — Rain That Moves the Whole Server

One shout in chat and half the server jumps into motion: some race to where coins are falling from the sky, others look for a roof to hide from the acid rain. CloudRainEvents adds two ready-made weather events, coin rain and acid rain with safe sectors. Both start with a single command, are configured entirely in config.yml with no code at all, and run on Paper 1.19.4, with no mods or resource packs.

The plugin automates engagement: it either rewards players with money through Vault, or drives them off open fields under cover. Instead of quiet farming, the server gets movement. You can trigger both scenarios manually for a specific event, or put them on an auto schedule and forget about them, and from then on the server makes noise on its own.

What it is: two rain events

At its core are two scenarios that can intertwine into one.

  • Coin Rain (No. 38) — a column of golden particles rises over the zone, and players in the radius periodically receive money through Vault.
  • Acid Rain (No. 38.1) — a thunderstorm sweeps the whole world, every living creature under the open sky takes damage or poisoning, but safe sectors appear on the map, and in some of them that very same coin rain is already running.

You can start it manually, for an event, a contest, or just for noise in chat, or hand it to the auto schedule: then both events repeat on their own, with no admin at the console.

Coin Rain: Money from the Sky

The command /rain coin raises a golden particle column over a random point of the region or over given coordinates and opens the money tap for coin.duration-seconds seconds (60 by default).

Who gets what

While the rain lasts, every player within a radius of coin.radius (30 blocks by default) from the center gets, every coin.interval-ticks ticks (20 by default, once a second), a random amount between coin.money-min and coin.money-max (5–25 by default, rounded to cents) through the Vault economy. The radius is counted horizontally only: a player in a mine below the point gets paid, and so does a player on a platform above it. Players in spectator mode don't get payouts. Each payout pops up in the action bar as "+amount fell from the sky".

Several rains can run at once: the plugin doesn't check whether another one is already running. A manual /rain coin can be launched five times in a row at different points, and the plugin also raises separate coin rains by itself in the safe sectors of the acid rain (see below). Each one is an independent timer with its own zone. The only shared thing is that the coin rain auto schedule won't start a new one while any is alive, whether manual or sector.

Particles and local weather

The density of the golden downpour is set by coin.particle-count (40 particles per frame by default), and the frame itself is drawn every 5 ticks, 4 times a second, hard-coded and not changeable via config. Particles spawn at a random point inside the same radius at a height of 9–14 blocks above the ground, so it looks like coins really fall from the sky rather than burst from under your feet. The default particle is FALLING_DUST (block texture flakes), and it can be replaced with END_ROD, TOTEM, CRIT and others. But for block particles (FALLING_DUST, BLOCK_CRACK, BLOCK_DUST, BLOCK_MARKER) the texture is always gold block, which is hard-coded, and you can't substitute another ore through the config. An invalid particle name silently falls back to FALLING_DUST, with no log entry, unlike acid rain, which also writes a warning on the same error (see below).

The toggle coin.weather turns on a personal rain on screen for a player when they enter the zone, once, without flickering every second, and removes it when they leave the radius. If the event ends before the player leaves the zone, the weather is restored on completion. This picture doesn't affect other players, since each has their own, local one.

Vault integration

Coin rain pays through any economy connected to Vault (it is in softdepend, with no hard dependency). If Vault isn't found or no economy provider is registered, the plugin doesn't crash or spam errors: it writes a warning once at startup and keeps running as a visual event, with particles and local weather staying and just no payouts. A subtlety: the action bar "+amount fell from the sky" is shown anyway, and the number is real, but without Vault it doesn't land anywhere, and no money reaches the wallet. Keep this in mind on a server without an economy, so you don't have to explain to players "where is my money".

Acid Rain: Run or Hide

The command /rain acid starts a thunderstorm over the whole world for acid.duration-seconds seconds (90 by default). You can't call it again on top of one already running, and the plugin will reply that the rain is already on. First use /rain stop or wait for the end.

Damage or poisoning

Every acid.interval-ticks ticks (20 by default, once a second; below, the "damage cycle"), any living creature under the open sky takes a hit, not just players but all LivingEntity: mobs, animals, villagers. The plugin spares only players in creative and spectator mode, and everyone else is protected only by a roof or a safe sector. "Open sky" means there is nothing higher in the column above the block beneath the creature up to the sky, and one roof block overhead is enough to hide.

The mode is set by acid.mode. damage (the default) is direct damage, acid.damage: 2 is exactly one full heart per cycle on the game scale (1.0 = half a heart). poison applies Poison instead of damage, with a duration of acid.poison-duration (100 ticks, 5 seconds by default) and amplifier acid.poison-amplifier (0 = Poison I). While the creature is under the open sky, the effect is reapplied on every cycle and doesn't let itself expire. Someone who runs to cover still has to endure the rest of the last charge, so a few seconds of poison land when they are already safe. For reference, from vanilla Minecraft mechanics: Poison doesn't affect undead (zombies, skeletons, withers), so if they should suffer along with everyone else, it is safer to choose damage, not poison.

Crop damage

A separate toggle enables crop spoiling, acid.crops-toggle (off by default): on each damage cycle, the plugin, with a chance of acid.crop-chance (0.35 by default) per player under the open sky, tries to trample up to 4 farmland plots at a time, in a 17×17 square around them (±8 blocks). Each of the 4 attempts takes its own random point and looks for a block with a growth state in the column (the top soil block, or one block above or below). Mobs don't trample crops, only players under acid. Leave the toggle alone for a quiet server, but for hardcore survival under the open sky it is just the thing.

A green screen

The presentation matches the content. At start, a full-screen "☣ ACID RAIN" title appears (fade-in, stay, and fade-out timings are 10, 60, and 20 ticks, configured separately) with an ominous sound (by default AMBIENT_CAVE). Only those who were in the world at the moment of start see and hear both, and someone who joins later misses the title and the sound. At the top, the whole rain shows a green BossBar with a countdown, updated once a second, which picks up new arrivals and removes those who left. Unlike the title, everyone in the world will see it at any moment.

Above every player across the world a personal green particle "rain" falls, by default 40 per frame within a 12-block radius, with a frame every 10 ticks (twice a second). The type, density, radius, and frequency are configured in acid.visuals. By default the particle is VILLAGER_HAPPY (green stars), and it can be replaced with DUST — green-tinted colored dust, somewhat larger. On a hit there is a flash of particles on the victim and, only for the affected player, a hissing sound (by default BLOCK_LAVA_EXTINGUISH), with no spam across the whole server.

Sector borders paint themselves: with green sparks if a coin rain is running inside, and with composter particles if the sector is simply safe, so by color you can see right away where to run first. In the center of each sector there is a green marker pillar from the ground up, visible from afar, regardless of the sector type. The markup updates every 15 ticks and doesn't depend on acid.visuals.particle-type (which colors the rain over players): both colors are hard-coded. The engine doesn't offer a real green sky without a resource pack, but a thunderstorm with lightning (acid.visuals.thunder) can be enabled separately; it is off by default, and a plain overcast storm runs.

Safe sectors: where to wait it out

While the acid rain lasts, from 0 to 10 square safe sectors are scattered across the region around the map center (region.center-x/center-z, region.radius). The number is set by acid.sector-count (6 by default, with a hard cap of 10 in the code; you can also set 0, and then there is nowhere to shelter except a homemade roof), and the side of the square is acid.sector-size (50 blocks by default). Inside there is no damage or poisoning at all, and it is not a platform but a column: protection works at any height, whether in a basement or on a tower, as long as X and Z fall within the square.

The sector layout is not fixed: each /rain acid scatters them anew, at a random angle and distance within region.radius. There will be no settled "eternal bunker": you read the shelter map afresh at every launch, if acid.announce-sectors is enabled (yes by default), and then the sector coordinates and size are printed in chat right at the start.

In some of the sectors (acid.safe-coin-count, 2 of them by default) the plugin raises a coin rain itself, with no separate announcement, only the "[+ coin rain!]" mark in the list. Keep in mind the mismatch of default durations: the coin rain in a shelter lives its standard 60 seconds (coin.duration-seconds), while the acid lasts 90 (acid.duration-seconds). If you don't adjust it, for the last half minute of the storm the sector stays safe but is already free of rewards: the money stops dripping before the threat outside ends.

Auto schedule: rain on an alarm clock

schedule.coin-every-minutes and schedule.acid-every-minutes — independent timers in minutes, and 0 disables auto launch. Neither will start on top of an event of the same type that is already running: the acid one silently skips the tick if acid rain is already pouring, and the coin one if any coin rain is active anywhere, including those raised inside acid sectors. If an acid rain is on right now with two money shelters inside, the scheduled coin rain won't fire at all during that time and will wait for the next tick.

/rain reload rereads config.yml and rebuilds both timers from scratch, but a rain that is already running wears out the old settings to the end, and only the following events pick up the new ones. Timers are counted in ticks (minutes × 60 × 20), so changing the schedule on the fly doesn't throw off the countdown: it is simply recreated from the current moment.

How to set up the action: scenarios

The bare mechanics are only a constructor; here are a few ready-made setups for the config.

  • Hunger games at the shelters — acid.mode: damage, acid.sector-count lower to 2–3, acid.sector-size to 20–25: cramped, rare sectors, with money in a couple of them. It pits players against each other for a spot under a roof.
  • No mercy at all — acid.sector-count: 0: there are no safe sectors at all, and only your own roof saves you.
  • A quiet money rain — schedule.acid-every-minutes: 0 (leave the acid alone), enable only schedule.coin-every-minutes: zero risk, and the server showers money by itself every N minutes.
  • Both elements on auto — both schedules are on at once. You don't have to space them out in time, except that the coin timer will skip a tick while sector money is already pouring inside an acid rain, and you can live with that.
  • A targeted reward for an event — /rain coin world X Z exact coordinates: money exactly at the building contest spot or by the stage, and not anywhere in the region.
  • Slow horror instead of a massacre — acid.mode: poison instead of damage: not an instant loss of health in the open, but a growing threat that gives you a couple of seconds to run to cover.
  • Max survival — enable acid.crops-toggle: the acid rain starts hitting not only players but also farms under the open sky, and a greenhouse turns from decor into a necessity.

Commands

CommandWhat it does
/rain coin [world] [x z]Coin rain: with no arguments, a random point of the region, and you can specify a world and coordinates
/rain acidAcid rain and safe sectors in the main world
/rain stopStop all rains at once, clear the storm
/rain reloadReread config.yml on the fly, without a server restart

Call examples:

  • /rain coin — coin rain at a random point of the main world.
  • /rain coin world — the same, but explicitly in the world world.
  • /rain coin world 120 -340 — exactly over coordinates 120, -340 in the world world.
  • /rain acid — acid rain over the whole main world; you can't set a world for this command, and it takes the first one from worlds.
  • /rain stop — stops acid and all coin rains at once, clears the storm.
  • /rain reload — applies the changes in config.yml without a server restart.

It works in Russian too: /дождь — an alias for /rain, one to one with all subcommands.

Permissions

Everything hangs on a single node, rain.admin (op only by default), with no split by subcommand: whoever has access to "rain" can both shower money and start acid and stop everything at once. Grant the node to moderators or event masters with any permissions plugin, but you can't restrict access to just coin or just acid with the plugin itself.

Configuration

All numbers, particles, sounds, and texts live in a single config.yml — almost nothing is hard-coded except a couple of constants like the frame rate of coin particles and the sector outline (see above). The list of worlds is worlds, with the first in the list always the main one: it hosts the /rain acid, the auto schedule, and random coin rain points. region.center-x/center-z and region.radius (300 blocks by default) define the big circle inside which both coin rain points and safe sector positions are chosen. Don't confuse it with coin.radius (the payout radius around an already chosen point) or acid.sector-size (the size of the sector itself).

All texts, the prefix, acid rain titles, sector lines, and the action bar, are overridden in the block messages with color codes &; the BossBar text is set separately, in acid.visuals.bossbar-title, where the countdown is substituted on the fly. An invalid sound name simply turns the effect off (as does a deliberate value of NONE), while an invalid particle name falls back to the default: in acid rain with a warning in the log, in coin rain silently.

Two weather events on one command: one pits players against each other for money, the other for a roof over their heads. The sectors are new every time, the shelter is not eternal, and the money in it even less so. Everything you see on screen and everything that happens on schedule lives in a single config.yml.