Ultimate Fallen Kingdoms ⚔️
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.
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.
New to the gamemode? Run /ufk guide in-game for a 5-page interactive walkthrough that explains everything to your players and admins.Click to expand...
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)
- 3 storage backends: SQLite (default), MySQL/MariaDB, Flat-file
- Developer API with Bukkit events and a public service for integrations
Core gameplay
Phases
- Preparation: no PvP, mine resources, fortify your base. Enemy bases are sealed.
- PvP: combat opens, TNT unlocks, assault the enemy nexuses.
- Deathmatch: nexus decay, escalating Wither, tie-breaker by damage. No stalemate possible.
Teams
Up to 4 teams per arena ( Red, Blue, Green, Yellow, extendable), each with:
- Own spawn point and waiting lobby (optional per-arena)
- Own configurable cuboid mine (resource zone)
- Own configurable cuboid base (build/protect zone)
- Own nexus block with HP, hologram, regen, and attack alerts
- Own team color reflected in chat, scoreboard, tablist, death messages
Smart match flow
- ⏱️ Auto-start countdown: 120s normal, 15s when arena is full, abort below minimum
- ⚖️ Team auto-balance at game start (max_size_diff enforcement)
- Empty team elimination: teams with 0 players don't spawn nexuses (SOLO exception keeps a random opponent)
- Disconnect grace period: players have N seconds to reconnect before being eliminated, with public notification
- ️ Live spectator mode: join a running game from the arena selector, teleport to living players via compass GUI, leave with /leave
Combat polish
- TNT: auto-prime placed TNT, configurable fuse delay, blocked during preparation
- Creeper waves: periodic surface spawns outside bases, drop 1 to 2 TNT each, 5% chance charged (lightning notification), kept strictly inside arena borders
- Mob policy: block mob spawns everywhere except inside running arenas (configurable, on by default)
- Auto mob purge on player join (configurable)
- ☠️ Death messages: team-colored player names, vanilla message suppressed, scoped to game players
Real deathmatch dynamics
- Linear nexus decay: every remaining nexus loses HP progressively, reaches 0 exactly when the deathmatch timer ends. Player attacks accelerate it.
- Auto-regen disabled during deathmatch so the decay isn't fought back.
- ☠️ Wither escalation: Wither I in last 60s, II in last 30s, III in last 10s (defaults, fully configurable). Refreshed every second, can't be cleansed.
- ⚖ Tie-breaker by cumulative damage dealt to enemy nexuses, broadcast to all players. Optional fallback to draw.
- Each behavior individually toggleable in phases.deathmatch.*.
️ Maps & in-game editor
No more hand-editing YAML. Open /ufk config and configure everything via GUI:
- Map list with playable / incomplete status and detailed ✓/✗ checklist of missing pieces
- Base editor: pos1/pos2 selection, overlap detection, particle visualization toggle
- ⛏️ Mine editor: same workflow, per-team cuboid mining zones
- Border setup: FAWE corner selection (closed cuboid: floor + ceiling enforced)
- Nexus placement: point at a block and click
- ️ 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
Falls back to ArmorStands if ProtocolLib isn't installed (still functional, just less pretty).Click to expand...
Step 1. Drop the jar
Code (Text):
plugins/UltimateFallenKingdoms-1.0.3.jar
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
Run /ufk guide in-game for an interactive 5-page setup walkthrough.Click to expand...
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
- phases.preparation_seconds, phases.pvp_seconds, phases.deathmatch_seconds
- phases.deathmatch.nexus_decay, phases.deathmatch.wither.{enabled,tier_1_seconds,tier_2_seconds,tier_3_seconds}, phases.deathmatch.tiebreaker_by_damage
- teams.count (1 to 4), teams.max_per_team, teams.balance.max_size_diff, teams.auto_balance_on_start
- auto_start.enabled, auto_start.countdown_seconds, auto_start.full_countdown_seconds
- objective.nexus_max_hp, objective.regen_* (auto-regen below threshold, disabled during deathmatch)
- mines.protect_outside, mines.bypass_permission
- base.enforce_build_outside, base.protect_original_blocks, base.block_mob_spawns
- tnt.enabled, tnt.prime_ticks, tnt.fuse_delay_ticks
- creepers.enabled, creepers.max_alive, creepers.charged_percent, creepers.tnt_drop_min/max
- mobs.block_outside_arenas, mobs.purge_on_player_join
- world.force_difficulty (NORMAL recommended)
- top.use_real_npcs (auto-detects ProtocolLib)
- storage.type (sqlite / mysql / flat)
- language.default, language.allow_player_change
Commands & Permissions
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 |
️ All map setup (lobby spawn, team spawns, nexuses, borders, bases, mines, top NPCs) is done inside /ufk config, no command needed.Click to expand...
- 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();
// ...
}
Code (Text):
UltimateFallenKingdoms ufk =
(UltimateFallenKingdoms) Bukkit.getPluginManager().getPlugin("UltimateFallenKingdoms");
UFKApi api = ufk.getApi();
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);
}
}
The API also exposes the following enums in fr.ultimateplugins.ufk.api.enums: ArchitectureMode, DeathMode, GamePhase, GameState, LobbyMode, MapResetMode, ObjectiveType, PlayerState, StorageType.
Compatibility
- Required: Paper 1.21+, Java 21
- Soft dependencies (auto-detected, fully optional):
- ProtocolLib 5.x → enables real-player Top NPCs (skin + armor)
- FastAsyncWorldEdit 2.x → enables snapshot-based map regeneration
- 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!
View attachment 958537
View attachment 958537
View attachment 958537Drop a ⭐ if you enjoy it!
Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft version listed: 1.21
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on Spigot — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
Ultimate Fallen Kingdoms ⚔️ | Multi-Arena ⭐ Top NPCs ⭐ Stats ⭐ 10 Langs is a free Minecraft Java mod. Compatible with Minecraft 1.21. Downloaded 23 times (via Spigot). Download it and open it directly in the game.