The complete, premium-quality Fallen Kingdoms gamemode, released for free.
Multi-arena, real-player Top NPCs, full stats system, 10 built-in languages, deep config, polished UX. Drop it in plugins/, set a lobby spawn, and you have a publish-ready minigame server.
What is Fallen Kingdoms?
Fallen Kingdoms is a team-based PvP gamemode born on French Minecraft YouTube around 2013, popularized by series creators such as Frigiel and Siphano. It is one of the most-watched Minecraft formats ever, and an incredibly fun way to play with friends on your own server. The original series ran across multiple multi-hour episodes, but
this plugin is designed as a focused ~40-minute minigame: short enough to fit in a single session, long enough to deliver the full preparation → PvP → deathmatch arc with real strategic stakes.
The setup
2 to 4 teams (Red, Blue, Green, Yellow) spawn in their own base, a small fortified zone with their team's Nexus inside (a precious block representing their kingdom's life).
Each team also owns a mine, a private resource zone where they can dig safely without enemies stealing their loot.
A border surrounds the whole arena to keep the action dense.
The objective Destroy every other team's Nexus while protecting your own. When a team's Nexus falls, that team is eliminated. The last team with a Nexus standing wins.
How a match plays out
Preparation phase (no PvP): every team mines resources, crafts gear, builds defensive walls and traps around their Nexus. Enemy bases are sealed off so nobody can sneak in early.
PvP phase (combat opens): borders between bases drop, TNT becomes usable, raids on enemy Nexuses begin. Strategy, teamwork and base layout decide who survives.
Deathmatch phase (final): every remaining nexus decays linearly until 0, auto-regen is disabled, and a stacking Wither effect (I → II → III) hits every alive player in the last 60 seconds. If multiple teams survive the timer, a tie-breaker awards the win to the team that dealt the most damage to enemy nexuses.
Why it's fun
Every team is both builder and raider: you fortify, then assault.
Encourages role specialization (warriors, archers, miners, builders) inside the same team.
Short, intense matches (typically 30 to 60 minutes) with clear stakes from minute one.
Reads great on stream and screenshares: color-coded teams, dramatic Nexus moments, comeback potential until the very last second.
✨ Why this plugin?
Fallen Kingdoms is one of the most iconic Minecraft team modes. Every existing implementation is either a paid premium plugin, a half-finished hobby project, or hardcoded to a single map.
UltimateFallenKingdoms is what we wanted to play on our own server: a polished, modular, fully configurable FK engine that works out of the box and scales from one arena to dozens.
100% free, no paywall, no feature gates
Multi-Arena & Single-Game architectures, switchable with one line of config
Adventure / MiniMessage UI with gradients, hover, and click-to-run everywhere
10 built-in languages with per-player preference
Soft dependencies: runs without ProtocolLib or FAWE, gracefully upgrades when present
️ In-game GUI editor for spawns, mines, bases, borders and Top NPCs (no YAML editing required)
️ Live particle preview: see your mines and bases highlighted in-world
️ Safe deletion with shift-click confirm
Map regeneration
✅ FAWE-based snapshot regen when FastAsyncWorldEdit is installed
✅ In-memory rollback fallback when FAWE isn't installed (covers all explosion damage including creepers)
✅ Handles bedrock floor protection, void detection, and partial regen
Stats & Leaderboards
Full per-player statistics tracked across games:
Stat
Description
⚔️ Kills
Total player kills
☠️ Deaths
Total deaths
★ K/D
Computed ratio
Wins
Games won
✗ Losses
Games lost
% Win rate
Percentage
Nexus
Nexuses destroyed
Games
Games played
First seen
First-join timestamp
Last seen
Last-join timestamp
Top players (real fake-player NPCs) Configure live leaderboard NPCs in your lobby across
5 categories: Kills, Wins, K/D, Nexus, Games.
Real player skins loaded from Mojang sessionserver (24h skin cache)
Per-rank armor: Top 1 = full diamond, Top 2 = gold, Top 3 = iron, Top 4+ = leather
Floating gradient nameplate above each NPC with rank, name, score, category
️ Click to view stats: opens the full stats GUI for that player
Steve placeholder when no player has ranked yet
⚙️ Configurable max NPCs per category, individual rank locations, instant respawn on edit
️ Installation
Step 1. Drop the jar
Code (Text):
plugins/UltimateFallenKingdoms-1.0.3.jar
Step 2. Start the server once The plugin generates
plugins/UltimateFallenKingdoms/:
config.yml: main configuration (~950 lines, fully commented)
lang/: 10 language files
kits.yml: starter kit definitions
maps.yml: auto-managed
ufk.db: SQLite stats (or MySQL when configured)
Step 3. Configure your first arena
Create a map: stand inside your arena world and run /ufk createmap <name>
Open the editor: /ufk config, set the global lobby spawn, then click your map and configure borders, team spawns, spectator spawn, nexus, mines, bases for each team
Verify: /ufk maps shows ✓ Playable when complete
Start a game: /ufk start (or let auto-start handle it)
Step 4. (Optional) Add Top NPCs
/ufk config → Top → pick a category
Stand at the desired NPC location, click a rank slot to set it
NPCs spawn instantly with the current top players' skins
Languages
Out of the box:
Code
Language
en_US
English
fr_FR
French
de_DE
German
es_ES
Spanish
zh_CN
Chinese (Simplified)
ru_RU
Russian
pt_BR
Portuguese (Brazilian)
pl_PL
Polish
tr_TR
Turkish
ja_JP
Japanese
Players pick their language with /ufk lang <code> (admins can lock the language server-wide)
Each file is ~640 lines covering every player-facing string, including the multi-page /ufk guide
All messages use MiniMessage with gradients, hover-text, and click-to-run actions
⚙️ Configuration highlights
The
config.yml is exhaustive and commented. Every option ships with a
Why explanation. Highlights:
game.architecture: MULTI_ARENA (default) or SINGLE_GAME
The base command is
/ufk (aliases:
/fallenkingdoms,
/fk).
Player commands (ufk.play, default for everyone)
Command
Description
/ufk help
Show the command list
/ufk join [team]
Join a team / open arena selector
/ufk leave
Leave current game
/ufk lang <code|list>
Change your display language
/leave
Standalone command, quick leave for spectators
Admin commands (ufk.admin, default for ops)
Command
Description
/ufk guide [page]
Interactive 5-page admin guide
/ufk config
Open the configuration GUI (everything is set up here)
/ufk maps
List all maps with status
/ufk createmap <name>
Create a new map in your current world
/ufk start [map]
Start a game
/ufk stop
Stop the running game
/ufk bypass
Toggle mine-protection bypass during a running game
/ufk reload
Reload config, lang, kits, and maps
Permissions
ufk.*: grants everything (ufk.admin + ufk.play)
ufk.admin: bundles every admin subcommand
ufk.play: bundles every player subcommand (default true)
Per-subcommand: ufk.command.<sub> (e.g. ufk.command.start, ufk.command.config), assignable individually for fine-grained access
Developer API
UltimateFallenKingdoms ships with a public API and a set of Bukkit events so you can build integrations on top of it (reward plugins, custom HUDs, Discord bridges, analytics, etc.).
Maven dependency Add the plugin jar as a
provided dependency, the same way you would for Spigot/Paper API. No external repository is required if you build against the local jar.
Accessing the API The
UFKApi instance is registered with Bukkit's
ServicesManager, which is the recommended access pattern:
Code (Text):
RegisteredServiceProvider<UFKApi> rsp =
Bukkit.getServicesManager().getRegistration(UFKApi.class);
if (rsp != null) {
UFKApi api = rsp.getProvider();
// ...
}
You can also fetch it directly from the plugin instance:
Code (Text):
UltimateFallenKingdoms ufk =
(UltimateFallenKingdoms) Bukkit.getPluginManager().getPlugin("UltimateFallenKingdoms");
UFKApi api = ufk.getApi();
Don't forget to add UltimateFallenKingdoms to your
plugin.ymldepend: (or
softdepend:) so it loads first.
API entry points
Method
Returns
Use case
api.games()
GameManager
Inspect/control all games
api.maps()
MapManager
Read configured maps
api.teams()
TeamManager
Resolve team metadata, colors, members
api.players()
PlayerManager
Game-state per player (LOBBY, PLAYING, SPECTATING, ELIMINATED)
api.lang()
LangManager
Send localized MiniMessage strings to a player
api.storage()
Storage
Read player stats, write custom records
api.gameOf(player)
[USER=241773]@Nullable[/USER] Game
Find which game a player belongs to
api.activeGames()
Collection<Game>
Iterate all live games
Bukkit events All events live in
fr.ultimateplugins.ufk.api.events and extend
UFKEvent. Register them like any standard Bukkit event.
Event
Fired when
Notable
GameStartEvent
A game transitions to RUNNING
GameEndEvent
A game transitions to ENDING
Exposes getWinner() (nullable on draw)
PhaseChangeEvent
Phase moves between PREPARATION/PVP/DEATHMATCH
Provides getFrom() and getTo()
ObjectiveDestroyedEvent
A nexus is broken
Exposes getOwner() (team) and getBreaker() (nullable)
PlayerEliminatedEvent
A player loses their last life
PlayerJoinTeamEvent
A player picks a team
Cancellable for veto-style integrations
TeamEliminatedEvent
A team has lost its nexus and all its players
Quick example Reward the winning team's players with money via Vault on game end:
Code (Text):
@EventHandler
public void onGameEnd(GameEndEvent event) {
Team winner = event.getWinner();
if (winner == null) return; // draw
for (UUID uuid : winner.getMembers()) {
Player p = Bukkit.getPlayer(uuid);
if (p != null) economy.depositPlayer(p, 100.0);
}
}
Enums The API also exposes the following enums in
fr.ultimateplugins.ufk.api.enums:
ArchitectureMode,
DeathMode,
GamePhase,
GameState,
LobbyMode,
MapResetMode,
ObjectiveType,
PlayerState,
StorageType.
BungeeCord / Velocity: ready, configurable signs and player counts
No hard dependency on PlaceholderAPI, Vault, etc.
Tested versions
Built and stress-tested on
Paper 1.21.
Free, but built like a premium plugin
What "free" doesn't mean here:
❌ No "Buy premium for X feature"
❌ No invasive tracking, no IP collection, no personal data, no server-content fingerprinting
❌ No encrypted classes
❌ No nag screens
Anonymous metrics: this plugin uses
bStats to count installs and aggregate fully anonymous server data (MC version, Java version, OS, plugin architecture, storage backend, default language). No IP, no player data, no world content are ever transmitted. Fully opt-out via
plugins/bStats/config.yml, like every other Spigot plugin that uses it.
What it does mean:
✅ Built with the same care as a published premium plugin
✅ Fully self-contained, no external services required
✅ MIT-style spirit: use it on your network, modify your own copy, run it forever
Support & feedback
Found a bug? Use the Discussion tab with your server version, plugin version, and a console log.
Feature request? Open a discussion thread, we read everything.
⭐ If the plugin saves you time, leave a 5-star review. It's the only payment we ask for.
Made with ⚔️ by T4NO & Braazh Drop a ⭐ if you enjoy it!