"The Trophy Hunt starts in 300 sec! Type /hunt join to sign up." And for the next half hour the whole server splits into two camps: those with a golden trophy on their heads, and those who go to take it off them.
A good PvP event doesn't need explaining, you feel it. An Ender Dragon roar across the whole server, a countdown, and suddenly two or three players stand with a burning target above their heads while the rest of the server drops its builds and runs into the forest. CloudTrophyHunt is exactly that kind of event: simple rules, real excitement, and full tuning to your server's balance. The plugin is built for Paper 1.19.4 by the Cloud Delight studio.
The "Trophy Hunt" (Трофейная охота) is a round of open hunting for several players. An admin (or a schedule) starts the event, and some of the players who signed up become "Lucky Ones" (Счастливчики): a trophy item is placed on their heads that can't be taken off by hand. While the trophy is on the head, it drips gold and XP to its owner, and the whole server knows exactly who to chase: the lucky ones' coordinates are available with a single command. Kill a lucky one and the trophy and its income pass to you. The format covers what many vanilla servers lack: PvP gets a reason to gather, the economy gets a controlled source of gold, and players get a shared story for the whole evening instead of quiet farming in the corners.
Under the hood is a simple state machine: waiting (IDLE) → signup (SIGNUP) → hunt (RUNNING) → waiting again. The plugin controls every transition itself, so the event can't get stuck between states even if the server restarts or the plugin is disabled mid-hunt.
An admin with the hunt.admin permission types /hunt start, but only if the event is currently idle. You can't start one on top of a running hunt, and the plugin just replies that a hunt is already in progress. Signup opens: two announcements go out across the server at once (the hunt start and the invitation to sign up), and an Ender Dragon roar is heard by all online players at once, so this moment is never quiet. The default signup window is 300 seconds (5 minutes). You can set it lower in the config, but the plugin never allows less than 5 seconds. Exactly at the middle of the window, a reminder with the remaining time goes out, unless half the window is shorter than 3 seconds: very short hunts run with no reminder at all. Anyone who wants to join types /hunt join. You can also join later, while the hunt is in full swing: such players don't become lucky ones right away, but they immediately go into the replacement pool in case a trophy frees up. If nobody signed up by the time signup closes, the hunt is quietly cancelled with a separate message, and the plugin returns to waiting mode. The auto-schedule isn't thrown off and fires on time as if nothing happened.
When signup closes, between lucky-min and lucky-max lucky ones are picked at random from the signed-up players who are still online. The default is 2 to 3, and the number is new each time, not always the maximum. If fewer participants signed up than needed, everyone who's there becomes a lucky one. If you set the maximum below the minimum in the config by mistake, the plugin won't throw an error: it silently uses the minimum as the ceiling. Each chosen player is teleported to a new spot, the trophy goes on their head, and a big "YOU'RE THE LUCKY ONE" pops up on screen with a hint to run from the hunters, with a festive sound. Their previous helmet is saved exactly once, before the trophy is put on, with one important caveat: if an orphaned trophy from a previous round is already on the head, it isn't saved as a "helmet", otherwise the player would get a trophy back instead of real armor when the hunt ends.
The plugin recognizes the trophy by a service tag in the item's data, not by name, so renaming the item won't fool the system. It can't be removed by a normal click, by a number-key or offhand swap onto the helmet slot, or by dragging with the cursor. It can't be dropped either: an active trophy simply returns with a refusal message. An accidentally orphaned trophy on a player who no longer counts as a lucky one is quietly deleted when dropped, so such leftovers don't pile up on the ground. If the item still disappears from the helmet slot (closing the inventory, a conflict with another plugin, anything), a separate check once per second during the hunt automatically puts the trophy back on the head. There's only one way to take it off: die.
Each restriction is toggled separately in the config, and all of them are ignored for players with the hunt.admin permission, otherwise an admin couldn't even stop their own event.
block-commands enabled, a lucky one can use only commands from the whitelist (by default just one, /hunt leave). The check is prefix-based, so allowing /hunt leave also lets through any variants of it with arguments after it.Anyone can kill a lucky one, anywhere on the map. The trophy doesn't drop on the ground. It's removed from the drop entirely and goes straight to the winner along with the status. The killer isn't teleported anywhere, since they're already standing at the fight. The victim's real helmet, set aside at selection, isn't lost: if the server has keepInventory on, it goes right back on the head because the inventory stays in place after death anyway. If it's off, the helmet is added to the drop list and falls with the rest of the items rather than vanishing. If the killer wasn't a lucky one yet, they get the trophy without a teleport, since they earned it on the spot. If the killer already wore their own trophy, they don't get a second one: the number of active lucky ones simply drops by one, and with every such death the hunt naturally tightens toward the finale. If a lucky one dies without a killer (fell into lava, crashed, suicide), the trophy goes to no one. Instead the plugin picks a replacement at random from the remaining participants who aren't wearing a trophy yet.
After total-minutes (30 by default, minimum 1) the event ends on its own: the trophy is removed from all online lucky ones and their previous helmet is returned, the server gets a final announcement with a separate sound, and the state resets to waiting. The /hunt stop command runs exactly the same sequence early, rather than just cutting the hunt off silently.
If a lucky one leaves the server, their real helmet is returned and the status is removed before the connection drops, so the changes are saved correctly in the player file. They drop out of the participants, the server learns of it through a separate message, and a replacement is picked right away, with no pauses. On rejoin the logic is symmetrical: if the plugin's data says the player is still a lucky one but there's somehow no trophy on their head, it's put back on. If the player isn't counted as a lucky one but joined with a trophy on their head (orphaned after a restart or crash), the trophy is removed. Plugin shutdown or a server stop work under the same safeguard: all trophies on online players are removed properly before unloading, so there are no stuck golden pumpkins left on heads. One more extreme case for admins: if the last lucky one dies without a killer and no free participants are left to replace them, the hunt doesn't crash. It just keeps running with zero active lucky ones until the timer expires or it's stopped manually.
While the trophy is on the head, the lucky one earns steadily. That's the bait for those who go sign up.
| Parameter | Default value |
|---|---|
| Payout interval | every 5 seconds |
| Gold per tick (via Vault) | 50 |
| XP per tick | 10 XP |
The payout shows right above the hotbar (action bar), with gold and XP on a separate line for every tick. Vault is a soft dependency: with no Vault or economy plugin behind it, gold is simply not paid out (the action bar line shows zero), while XP still flows as usual. The gold amount in the message is shown as a whole number if the sum has no remainder (50, not 50.0), and with a fractional part if one is set in the config. A payout happens only if the trophy is actually on the head at that moment, a separate safeguard against a fraction of a second of desync. The check that the trophy is in place and the actual payout of gold and XP are two different timers: the first ticks once per second always, the second runs on its own config interval.
lucky-min and lucky-max to one, which gives a tense hunt for a single target. On a large one, 2-3 or more, so several fights happen at once rather than a single brawl around one target./hunt leaders handy to tell spectators where things are hot right now.rtp-command ties lucky-one selection and the return from a region into your homes, spawns, or arenas system instead of pure random. It's handy if you want to keep fights in a set PvP zone rather than across the whole map./hunt reload is safe to apply right in the middle of a hunt. The current round isn't interrupted, and the config (texts, restrictions, schedule) updates without a restart and without kicking players out of the game.| Command | What it does | Access |
|---|---|---|
/hunt join | sign up as a participant | hunt.use |
/hunt leave | leave the event / drop the trophy | hunt.use |
/hunt leaders | coordinates of all lucky ones | hunt.use |
/hunt start | start the event | hunt.admin |
/hunt stop | stop the event | hunt.admin |
/hunt reload | reload the config without a restart | hunt.admin |
The same commands are available through the aliases /trophyhunt and /охота, with tab completion. A command with no arguments (or with an unknown argument) doesn't stay silent: it shows a list of available actions and a live status, the current state of the event and the number of signed-up players. Admin entries in that list are visible only to those who have the permission for them.
| Permission | Description | Default |
|---|---|---|
hunt.admin | event control: start/stop/reload | op |
hunt.use | participation: join/leave/leaders | true (everyone) |
Lucky one restrictions don't apply to players with hunt.admin. The command limit and other bans don't affect them, so an admin can always manage the event from the inside, even when picked as a lucky one.
trophy section. Without a resource pack the item looks like a regular pumpkin, and that's fine.lucky-min/lucky-max), signup time (signup-seconds), and total hunt duration (total-minutes) are in the event section.income section, and fractional gold values are allowed.restrictions section.rtp-command. A fallback random teleport with a set world, center, and radius is rtp-fallback, used if your own command is empty or didn't work.schedule section. The default is 0, which means off, and the event starts only manually by command.messages section.license section is an online key check every time the plugin is enabled, with a grace-hours allowance (24 hours by default) in case the license server is unavailable. In that case the plugin runs on the last successful cache rather than shutting down immediately. For your own server, just set enabled: false and the check is turned off completely./hunt reload command, with no server restart and without stopping a hunt already in progress.You can't hide or take off the trophy on your head, you can only take it from someone. After that, the server sorts itself out.