Compatibility
Minecraft: Java Edition
Platforms
Links
Tags
Creators
Details

UnstableSMP is one plugin for running a server in the style of the Unstable SMP series. It has orbital strikes that can delete a base from a hundred blocks away, PvP bots modelled on FlameFrags, Wemmbu and Null, protagonists who refuse to die on the first try, and a hardcore round where every death is a ban and nobody knows who anyone is.
Every part works on its own. Use the orbitals on a normal survival server, or turn the whole thing on with /unstable start and run an event.
Requirements: Paper 1.21.9 or newer, Java 21. WorldGuard is optional and only used to keep orbitals out of protected regions.
Trailer

Three orbitals fire straight from where you are looking, no item needed.
/orbital wolfspawns an angry, fast wolf that goes for the nearest player within 50 blocks and despawns after 15 seconds./orbital witherfires a fast wither skull./orbital tntthrows a lit TNT that goes off two seconds later.
Each one has its own cooldown (30, 45 and 60 seconds by default).

Strike rods are the heavy weapons. Each is a one-use fishing rod: aim at a block up to 100 blocks away, cast, and the strike lands there. The rod breaks after use.
| Rod | What happens |
|---|---|
| Nuke shot | Ten rings of TNT appear 80 blocks above the target and come down one ring after another. Some TNT in each ring is randomly missing, so no two craters look the same. |
| Stab shot | A column of TNT goes off from the surface down to bedrock. A hole to the bottom of the world. |
| Dogs | Fifty tamed wolves in armor appear around the target, all on your side, with Speed II and Strength II for two minutes. |
| Chunk Eater | An armor stand instead of a rod. Place it and 250 TNT rain onto the chunk, then everything in it except bedrock is gone. |
| Stasis | Tuned to coordinates when you get it. Cast it and you are pulled to that point. |
The identity of a rod is stored in the item data, so renaming a fishing rod in an anvil does not make a new one. Cooldowns run from 2 minutes (Stab) to 10 minutes (Chunk Eater).
To keep spawn standing, list worlds in disabled-worlds or WorldGuard regions in blocked-regions. The whole blast area is checked, so a nuke aimed just outside spawn is blocked too, and you can choose which orbital types each block applies to.

/spawnbot <flamefrags|wemmbu|null> [easy|normal|hard] puts a practice opponent in front of you. Bots are vanilla Mannequins wearing the real player's skin, so there are no fake players in tab.
- FlameFrags keeps 8 to 14 blocks away, strafes and fires a bow. Get close and it switches to a fire aspect sword.
- Wemmbu is a 40 HP tank. Shield up while you are charged, axe crits when you are not, end crystals at mid range, and a wind charge into a mace smash from above.
- ??? is Null. 60 HP, semi-invisible, fast, blinks behind you and crits, and gets angrier when low.
All three sprint-hit, W-tap, jump for crits, back off while their swing recharges, eat golden apples when hurt and pearl after you if you run. Easy turns most of that off, Hard sharpens the aim and adds damage.
When the fight ends you get a summary in chat: win or loss, time, hits, crits, damage dealt and received, and your best combo.

/unstable start turns the server into the Unstable SMP. The title comes up, the wither spawn sound plays, and until /unstable stop:
- Dying bans you. You are kicked a second after death and cannot rejoin until the game ends or an admin runs
/unstable pardon. - Hearts are hardcore and mobs are rare (5 monsters and 2 animals instead of 70 and 10).
- Everyone gets a random scrambled name in chat, tab and above their head. Only protagonists keep their real one.
- Chat only reaches players within 52 blocks. Deaths, joins and leaves only show to players within 100. The wither death sound carries 500 blocks, so you hear when someone dies nearby.
/msg,/tell,/rand the rest are blocked. Talk to people in person.
Optional rules for the round, each off by default:
- Lifesteal. A kill takes a heart from the victim and gives it to the killer. Hearts from the round are removed when it ends.
- Combat log. Leaving within 15 seconds of PvP kills you, which with death ban on also bans you.
- Chunk Ban.
/unstable chunkbanhands out a black shulker box. Place it, and anyone who walks into that chunk is kicked with "packet too large", and kicked again every time they rejoin while standing in it. Break or blow up the box to free the chunk.

Players with unstablesmp.protagonist get Overdrive. A hit that would kill them, or leave them under half a heart, is cancelled. They get Strength II, Speed II and Resistance III for 10 seconds, a title, and the whole server is told. It comes back after 5 minutes, and the cooldown survives restarts.
The Totem of Null (/givetotem <player>) works like a normal totem, and when it pops it also blows everyone within 5 blocks away from you and blinds them for 5 seconds.

- Nicks.
/nick set <name>changes your name in chat, tab and on the floating name above your head. The real name tag is hidden. Nicks are saved and come back after a restart. - Warps.
/warp <name>takes you there after 3 seconds, cancelled if you move or take damage. Admins make them with/warp set. - Deaths. Every death strikes a lightning effect, plays a low thunder across the whole server, releases soul particles and replaces the death message with
x Player has been eliminated x.

| Command | Permission | What it does |
|---|---|---|
/orbital <wolf|wither|tnt> |
unstablesmp.orbital |
Fire an instant orbital |
/orbital rod <nuke|stab|dogs|chunkeater> |
unstablesmp.orbital |
Get a strike rod |
/orbital rod stasis <x> <y> <z> |
unstablesmp.orbital |
Get a Stasis rod tuned to that point |
/orbital give <player> <rod> [x y z] |
unstablesmp.admin |
Give a strike rod |
/spawnbot <flamefrags|wemmbu|null> [difficulty] |
unstablesmp.bot |
Spawn your practice bot |
/spawnbot remove |
unstablesmp.bot |
Remove it |
/nick <set|reset> [name] |
unstablesmp.nick |
Set or clear your nick |
/nick list |
unstablesmp.nick.admin |
Who is nicked as whom |
/warp <name>, /warp list |
unstablesmp.warp |
Use warps |
/warp <set|delete> <name> |
unstablesmp.warp.set |
Manage warps |
/givetotem <player> |
unstablesmp.admin |
Give a Totem of Null |
/unstable <start|stop> |
unstablesmp.admin |
Start or end the game |
/unstable pardon <player|all> |
unstablesmp.admin |
Let dead players back in |
/unstable chunkban <player|clear> |
unstablesmp.admin |
Give a Chunk Ban, or remove all of them |
/unstable reload |
unstablesmp.admin |
Reload the config |
Warps are open to everyone. Everything else defaults to op. unstablesmp.deathban.bypass keeps a player from being banned on death, which is useful for staff.

- Put
UnstableSMP.jarinplugins/and start the server. - If you use WorldGuard, add your spawn region to
orbitalstrike.blocked-regionsinconfig.yml. - Give your protagonists
unstablesmp.protagonist. - Run
/unstable startwhen everyone is online.
Every cooldown, radius, bot health, nuke size and message is in config.yml. Messages use MiniMessage, so gradients and colors work everywhere. Nicks and warps are stored in a small SQLite file, the game state in game.yml.
Orbitals destroy terrain for real and there is no rollback built in. Back up the world before an event.


