COWMODSКаталог модов

PvPIndex Factions

Modern Factions refactor, old-school factions but with modern QOL features

Автор: pvpindex1,4 тыс.3обновлён 7 июн. 2026 г.

Описание

PvPIndex Factions

PvPIndex Factions is a long-term modernization of the classic Factions experience for modern Paper servers.

The goal is simple: revive Factions with a timeless architecture, reliable persistence, clean gameplay UX, and API-connectable systems that can integrate with modern server ecosystems for years to come.

If you love classic Factions gameplay but need something maintainable, scalable, and integration-ready, PvPIndex Factions is built for exactly that.

TeamsAPI integration available - PvPIndex Factions connects natively with TeamsAPI to expose faction data to other compatible plugins and services. Requires TeamsAPI 2.4.0+. Download TeamsAPI on Modrinth →

Supported platforms

PlatformVersionNotes
Paper1.21.x, 1.26.xRecommended
Folia1.21.x, 1.26.xNative Folia scheduler support
Spigot1.21.x, 1.26.xLegacy compatibility mode
Java21+

Vision: timeless Factions, modern backend

PvPIndex Factions is not a quick port. It is an active refactor effort to make Factions:

  • Easier to operate in production
  • Easier to integrate with APIs and external systems
  • Easier to maintain across future Minecraft/Paper updates
  • More consistent for players and staff

This project keeps the recognizable Factions identity while replacing legacy internals with a modern service/repository model and optional integration adapters.

What is modernized vs legacy Factions

Compared to older Factions-era plugins, PvPIndex Factions focuses on:

  • Modern command ergonomics and guided help UX
  • Persistent invite lifecycle with login notifications
  • Better map readability and interaction flow
  • More complete claim/unclaim modes
  • Configurable GUI-driven navigation
  • Optional tax/economy control for faction banks
  • Cleaner permissions and admin workflows
  • Soft-dependency integrations that fail gracefully
  • Documentation and operational runbooks for real server owners

You keep the Factions gameplay loop, but gain a modern operational foundation.

Why server owners choose PvPIndex Factions

  • Modernized /f command experience with familiar muscle memory
  • Persistent faction invites with login-time invite notifications
  • Advanced land control: claim/unclaim modes (one, square, circle, fill, auto)
  • Interactive /f map with clearer territory context
  • Faction bank with deposit/withdraw/transfer/history and optional tax engine
  • Configurable /f GUI via gui.yml
  • Scales from standalone setup to larger integrated networks

Feature overview

Faction lifecycle

  • Create, rename, describe, and disband factions
  • Member administration with invite/revoke/accept/decline flows
  • Leadership transfer and rank movement (promote/demote)
  • Fully manageable custom roles (/f role ...) with configurable priorities and prefixes
  • Clear onboarding through /f help

Land and map

  • Claim/unclaim behavior designed for both casual and advanced use
  • square, circle, and fill modes for territory management
  • Auto claim/unclaim modes for movement-driven workflows
  • Modernized /f map display and improved territorial context messaging

Economy and bank

  • Faction bank deposit, withdraw, transfer, and history
  • Optional periodic tax engine with configurable rates/intervals
  • Works with Vault-based economy stacks

Homes and warps

  • Faction home and warp management
  • Warp listing/set/delete flows
  • Compatibility-oriented command structure for player familiarity

Faction chests

  • Shared faction storage with /f chest for fast default chest access
  • Named chest management: /f chest list, /f chest open <name>, /f chest create <name>, /f chest delete <name>
  • Officers can create/delete chests; all faction members can open/list based on permission nodes
  • Default chest name is configurable via factions.team-chest.default-name
  • Per-faction chest count is configurable via factions.max-team-chests (default 1)

Faction flags

  • Per-faction boolean toggles: pvp, friendly-fire, explosions, fire-spread, open
  • Officers manage flags in-game with /f flag set; defaults and editability configurable per-flag
  • Admins override any flag via /fa flag regardless of the player-editable setting

Audit log

  • Officers and above can page through their faction's action history with /f audit [page] [--action=<action>]
  • Staff can view any faction's history with /fa audit <faction> [page] [--action=<action>]
  • Tracks claims, unclaims, relation changes, kicks, promotions, demotions, bank transactions, and merge events
  • Page size configurable via factions.audit.page-size in config.yml

Faction merges

  • /f merge send <faction> — officers can propose dissolving their faction into another
  • /f merge accept <faction> — officers of the target faction accept the request
  • All claims, warps, bank balance, and members are transferred atomically; the sender faction is then disbanded
  • Online target members are notified immediately when a request arrives

Internationalization

  • Eight built-in locale bundles: en, es, de, fr, pt-BR, ja, zh, ru
  • Players choose their language with /f language [code|reset]
  • Server default locale configurable via factions.language.default in config.yml
  • All command output, GUI item text, and map display respect the resolved locale
  • Message lookup order: player locale → server default → English → inline fallback
  • Community locale contributions welcomed — see the i18n guide

Power and war mechanics

  • Configurable power model with per-player max, regen rate, loss on death, and grace period
  • Optional kill power rewards, with configurable flat or scaled amounts (scale rewards by victim/killer power ratio)
  • Optional death streak multiplier — consecutive deaths in a short window incur escalating loss
  • Optional inactive member exclusion — long-offline members do not count toward max-land
  • Overclaiming with enemy-relation guard and optional offline protection (block raids when all defenders are offline)
  • Raidable state broadcast — members (and optionally the server) are notified when a faction crosses the raidable threshold
  • War shield system — admins assign a daily UTC protection window; during the window territory cannot be overclaimed
  • /f powerhistory — paginated per-player power change log (alias: /f phist); shows death, kill, and passive-regen events

Notifications and QoL

  • Invite visibility for online and returning players
  • Territory and event notifications
  • Player-level notification controls
  • PlaceholderAPI role placeholders: %pvpindex_player_role% and %pvpindex_player_role_prefix%

API and integration direction

PvPIndex’s long-term direction is an API-connectable Factions core.

That means systems are designed to be:

  • Adapter-friendly
  • Service-oriented
  • Compatible with external plugins/services without hard coupling
  • Reliable even when optional integrations are absent

This creates a stable base for future extensions, panels, tooling, and ecosystem plugins.

Integrations

PvPIndex Factions runs standalone, and integrates when available:

  • Vault (economy API)
  • PlaceholderAPI
  • TeamsAPI
  • WorldGuard / WorldEdit
  • dynmap (3.x, tested 3.4 – 3.8)
  • EssentialsX
  • LWC / LWCX
  • EzAuction (faction auctions)
  • EzShops (faction shops)
  • EzRTP (avoids faction claims)
  • EzClean (avoids faction claims)
  • DiscordSRV (faction event broadcasts to Discord)

Integration downloads

Configuration and operations

Generated config files:

  • config.yml
  • roles.yml
  • database.yml
  • messages.yml
  • gui.yml

Storage options:

  • Embedded H2 for quick setup
  • MySQL/MariaDB for larger networks

Docs include:

  • Installation and setup guides
  • Full config reference
  • Feature-by-feature documentation
  • Integrations setup notes
  • Operations runbook and troubleshooting

Visual preview

GUI:

PvPIndex Factions GUI

Map:

PvPIndex Factions map

Faction info:

PvPIndex Factions info

Faction info page 2:

PvPIndex Factions info page 2

Top tab-complete:

PvPIndex Factions top tabcomplete

Faction Flags:

Faction Flags overview

Set flag state:

Set flag state

Flag autocomplete:

Flag autocomplete

Audit log:

Faction audit log

Admin power history:

Admin power history command output

Commands at a glance

  • Player root: /f (/faction, /factions)
  • Admin root: /fa (/factionadmin)
  • Highlights: /f create, /f invite, /f join, /f claim, /f unclaim, /f map, /f info, /f top, /f bank, /f warp, /f chest, /f audit

Designed for migration-minded communities

If your server comes from legacy Factions communities, PvPIndex Factions is intentionally built to feel familiar while offering a cleaner and more future-proof base.

The objective is not to erase Factions identity; it is to preserve it and make it sustainable for modern server operations.

Documentation

For setup, configuration, operations, and troubleshooting:


PvPIndex is partnered with NeyHost

Use the coupon code PVPINDEX for 10% off on checkout.

Neyhost PvPIndex Partner


License and attribution

  • LGPL-3.0
  • Derivative of MassiveCraft Factions (LGPL-3.0)
  • Refactor by PvPIndex.com team (Shadow48402, Epildev)

Последние версии

Все версии →
release

PvPIndex Factions 1.1.9

1.1.9
7 июн. 2026 г.836Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, folia, paper, spigot
Скачать
Что нового
### Fixed - Fixed bStats `created_factions` chart to reset the counter after each report, ensuring it shows the number of factions created in the reporting period rather than the cumulative total since startup.
release

PvPIndex Factions 1.1.8

1.1.8
6 июн. 2026 г.24Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, folia, paper, spigot
Скачать
Что нового
### Changed - Updated TeamsAPI integration from `2.4.0` to `2.5.0`. ### Added - `TeamsService.getTeamIds()` - returns all team UUIDs for iteration without loading full team objects. Consumers can iterate over team IDs for bulk operations without loading each full `Team` object. - `Team.getOwner()` - default method available via existing `getOwnerUUID()` and `getMember()` implementation. Returns the owner's `TeamMember` directly.
release

PvPIndex Factions 1.1.7

1.1.7
31 мая 2026 г.46Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, folia, paper, spigot
Скачать
Что нового
### Server owner highlights This release improves faction role management for production servers and makes role behavior easier to control globally. - New dedicated `roles.yml` file for all role-related settings. - Safer defaults for rank structure and prefixes. - New PlaceholderAPI values for role name/prefix in chat, scoreboards, and tablist formats. - TeamsAPI baseline updated to `2.4.0` for role-definition compatibility. - Role-management messages (`custom.role.*`) are now translated into all eight supported locales: English, German, Spanish, French, Japanese, Portuguese (Brazilian), Russian, and Chinese. ### What you can use it for - Lock role changes server-wide while keeping role display prefixes: - Set `roles.overrides.enabled: false`. - Allow faction-specific role customization: - Set `roles.overrides.enabled: true`. - Standardize rank visuals across all newly created factions: - Configure `roles.defaults.owner.prefix`, `roles.defaults.officer.prefix`, and `roles.defaults.member.prefix`. - Show rank info in PlaceholderAPI-driven scoreboards/chats: - `%pvpindex_player_role%` - `%pvpindex_player_role_prefix%` ### Configuration examples #### 1) Keep role structure globally controlled (default-safe mode) ```yaml # roles.yml roles: overrides: enabled: false custom: enabled: true ``` Use this when you want admins to control rank structure centrally and avoid faction-by-faction role drift. #### 2) Allow faction-level custom roles ```yaml # roles.yml roles: overrides: enabled: true custom: enabled: true min-priority: 11 max-priority: 99 max-per-faction: 8 ``` Use this for community-driven servers where faction leadership should design its own rank ladder. #### 3) Set consistent role prefixes for new factions ```yaml # roles.yml roles: defaults: owner: prefix: "<gold>[Owner]</gold>" officer: prefix: "<yellow>[Officer]</yellow>" member: prefix: "" ``` Use this for clearer chat hierarchy and onboarding visibility. ### Commands added / updated Role management command suite: - `/f role list` - `/f role create <name> <priority> [prefix]` - `/f role rename <old> <new>` - `/f role setpriority <role> <priority>` - `/f role setprefix <role> <prefix|none>` - `/f role delete <role>` - `/f role assign <player> <role>` ### Integrations - TeamsAPI baseline: `2.4.0+` - Modrinth: https://modrinth.com/plugin/teams-api - PlaceholderAPI role placeholders available: - Modrinth: https://modrinth.com/plugin/placeholderapi ### Fixed - `/f role create` now shows a specific error for each failure path (priority out of range, actor rank too high, name already taken, role limit reached, feature disabled) instead of a generic "Could not create that role" message. The service method return type was changed from `boolean` to a typed `CreateRoleResult` enum with nine distinct values. ### Notes - Core roles (`Owner`, `Officer`, `Member`) remain protected from destructive edits. - Role authority checks apply consistently across legacy rank commands and role assignment. - Plugin version bumped to `1.1.7`.
release

PvPIndex Factions 1.1.6

1.1.6
28 мая 2026 г.38Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, folia, paper, spigot
Скачать
Что нового
### Added ![Faction Chests](https://i.ibb.co/cKhbcnnw/image.png) - **Faction Chests**: - New `/f chest` command group for shared faction storage. - Added subcommands: `/f chest list`, `/f chest open <name>`, `/f chest create <name>`, `/f chest delete <name>`. - `/f chest` opens the configured default chest (`factions.team-chest.default-name`) and auto-creates it on first use. - Per-faction chest count is capped by `factions.max-team-chests` (default: `1`). - New permission nodes: `factions.cmd.chest`, `factions.cmd.chest.create`, and `factions.cmd.chest.delete`. ### Changed - Bumped plugin version to `1.1.6`. - Synced release metadata and public listing copy for this release. ### Documentation - Updated TeamsAPI requirement references in public docs/listings to `2.3.0+` to match the current integration baseline. ### Fixed - Fixed startup crash on servers using older TeamsAPI builds that do not provide `TeamsChestService`. TeamsAPI chest provider registration is now optional and loaded reflectively, so the plugin enables normally and keeps other available TeamsAPI adapters active.
release

PvPIndex Factions 1.1.5

1.1.5
25 мая 2026 г.34Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, folia, paper, spigot
Скачать
Что нового
This version is a small bugfix for the `/fa help` command. To have effect reset of the translation file is required. ### Fixed - Fixed MiniMessage MiniMessage translation for `/fa help` - Fixed configurable default messages for `/fa help` ![/fa info result screenshot](https://i.ibb.co/d0SkcsVX/image.png)
release

PvPIndex Factions 1.1.4

1.1.4
25 мая 2026 г.31Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, folia, paper, spigot
Скачать
Что нового
### Fixed - **All `/f` subcommands broken when TeamsAPI is absent:** `FactionCommandExecutor` and `FactionTabCompleter` held direct `import` statements for TeamsAPI classes. On Paper's isolated plugin classloader this caused `NoClassDefFoundError` at class-load time when TeamsAPI was not installed, preventing the executor from being registered and making every `/f <subcommand>` (including `/f info`, `/f map`, etc.) fail with "Invalid command!". Introduced `TeamsCommandBridge` (no TeamsAPI imports, loaded unconditionally) and `TeamsCommandBridgeImpl` (imports TeamsAPI, instantiated only via reflection when TeamsAPI is confirmed present). Mirrors the existing `TeamsApiRegistrar` isolation pattern. With TeamsAPI absent the bridge is `null` and all subcommands route through the local `CommandRegistry` as intended.
release

PvPIndex Factions 1.1.3

1.1.3
24 мая 2026 г.39Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, folia, paper, spigot
Скачать
Что нового
### Added - **`/f info` detail pages (`/f info page <n> [faction]`):** the summary view now shows a hint pointing players to `/f info page <n>`. The new `page` subcommand displays additional faction stats across paginated pages: - Online member count with a hover list of names - Rank distribution (members per rank) - Activity stats - inactive-over-7-days count and last-seen summary - Relations summary (Ally / Truce / Neutral / Enemy counts) - Claim capacity with RAIDABLE / STABLE risk indicator - Full power breakdown (total, member contribution, power boost) - Top 3 power contributors - Newest member and most-recent activity timestamps - **Sender context tracking for `/f info page`:** the last faction viewed per sender is remembered so `/f info page <n>` works without repeating the faction name after an initial `/f info [faction]`. - **New messages in `messages.yml`:** `info.details-hint`, `info.page-title`, `info.page-next`, `info.page-prev`, `info.invalid-page`, `info.page-no-context`. ![f info subcommand page 2](https://i.ibb.co/qMX3smFq/image.png) ### Changed - Updated [TeamsAPI](https://modrinth.com/plugin/teams-api) dependency from `2.0.0` to `2.1.0`. - Bumped plugin version to `1.1.3`. - [TeamsAPI](https://modrinth.com/plugin/teams-api) relation adapter now honors `TeamRelation` nature metadata (`RelationNature`) when persisting relation changes, so friendly/hostile custom relation natures map safely to internal declared relations. ### Fixed - **TeamsAPI relation adapter now honors `RelationNature` metadata (TeamsAPI 2.1.0+):** custom relation natures (`FRIENDLY` / `HOSTILE`) on non-standard `TeamRelation` values are mapped to the correct internal `ALLY` / `ENEMY` relation instead of always falling back to `NEUTRAL`.
release

PvPIndex Factions 1.1.2

1.1.2
23 мая 2026 г.29Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, folia, paper, spigot
Скачать
Что нового
### Added - **Faction MOTD (`/f motd`):** officers and above can set a message of the day for their faction. The MOTD is displayed in chat when a member logs in. Use `/f motd clear` to remove it. - **Configurable member-size cap:** a new `max-members` setting in `config.yml` limits how many players can belong to a faction (0 = unlimited). The cap is enforced in `/f join` and in the join service. Default is `0` (no limit). - **Warp passwords (`/f warp password <name> [password | clear]`):** officers and above can protect a faction warp with a password. Players must supply the correct password as a second argument (`/f warp <name> <password>`) to teleport. Passwords are stored as plain text in the `warps` table — avoid using important credentials. - **Warp per-use cost (`/f warp cost <name> <amount>`):** officers and above can require a Vault economy payment each time a warp is used. Setting the cost to `0` makes the warp free. The charge is deducted via Vault before teleporting; if Vault is absent or the player has insufficient funds the teleport is blocked. - **Database migration:** the `warps` table gains two new nullable columns (`password`, `use_cost`) when the plugin starts on an existing installation. No data is lost during upgrade from 1.1.1. - **Dynmap startup smoke test** (`.github/workflows/dynmap-smoke.yml`): downloads the latest dynmap plugin from Modrinth, starts a Paper server with both plugins, and asserts `dynmap hooked - faction territory layer enabled.` is logged. Runs on Paper 1.21.4 and 1.21.11 on every PR to `main`/`develop`. ### Changed - **Dependency upgrades (maintenance):** all outdated compile and test dependencies bumped to their latest compatible versions: - `EssentialsX` 2.21.0 → 2.21.2 - `worldedit-bukkit` 7.3.9 → 7.4.3 - `worldguard-bukkit` 7.0.12 → 7.0.16 - `placeholderapi` 2.11.6 → 2.12.2 (repo URL updated to `repo.helpch.at`) - `mysql-connector-j` 9.1.0 → 9.7.0 - `h2` 2.3.232 → 2.4.240 - `HikariCP` 6.2.1 → 7.0.2 - `junit-jupiter` 5.11.4 → 5.14.4 - `mockito-core` / `mockito-junit-jupiter` 5.14.2 → 5.23.0 - `maven-shade-plugin` 3.6.0 → 3.6.2 - `asm` / `asm-commons` override 9.8 → 9.10 - `jacoco-maven-plugin` 0.8.12 → 0.8.14 - `maven-surefire-plugin` 3.5.2 → 3.5.5 ### Fixed - **dynmap compatibility expanded to 3.x (3.4 – 3.8):** the vendored compile-time `dynmap-api` dependency was upgraded from `3.4-beta-3` to `3.8` (latest stable, released 2026-01-14). In dynmap 3.8 the marker API was split into a separate `DynmapCoreAPI` JAR; both JARs are now vendored under `libs/` with minimal POMs so CI never contacts `repo.mikeprimm.com`. The runtime hook code only uses stable `org.dynmap` marker APIs that are present in every 3.x release, so the plugin continues to work with any installed dynmap 3.x version.
release

PvPIndex Factions 1.1.1

1.1.1
22 мая 2026 г.60Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, folia, paper, spigot
Скачать
Что нового
Download button on the bottom of the page or [check main page](https://modrinth.com/plugin/pvpindex-factions). ### Fixed - **Chat crash on Paper 26.x** (`ClassNotFoundException` / `AbstractMethodError` in `EngineChat$PaperChatListener`): multiple layers of shade-related breakage were present and are fully resolved: - maven-shade rewrites `net.kyori.adventure.*` string literals in the bytecode constant pool to `com.pvpindex.lib.adventure.*`. At runtime Paper's classloader cannot find that relocated namespace, causing `ClassNotFoundException`. String literals are now constructed at runtime via `String.valueOf` concatenation so shade never sees the full class name in the constant pool. - The chat renderer was originally a raw 4-parameter lambda targeting `ChatRenderer` directly; LambdaMetafactory cannot reliably link it against Paper 26.x runtime classes. The renderer now uses `ChatRenderer.viewerUnaware()` and a `Proxy`-based `InvocationHandler` that implements only the 3-parameter `ViewerUnaware.render` method, eliminating cross-version descriptor mismatches. - `EngineChat` now contains **zero `net.kyori.adventure` imports**; all adventure interactions go through `java.lang.reflect` against classes loaded from Paper's own classloader, so shade has nothing to rewrite in type descriptors either. - **Chat listener rebuilt as clean OOP dual-path design**: Paper/Folia servers use a `PaperChatListener` that installs a `ChatRenderer.ViewerUnaware` proxy; Spigot/Bukkit servers use a `LegacyChatListener` with `AsyncPlayerChatEvent.setFormat`. Reflection handles and the cached MiniMessage instance are resolved once at listener construction time to avoid per-message overhead. - **H2 database crash on first command** (`/f create`, `/f join`, and any other command that saves a model): H2 2.x does not implement the `VALUES(col)` function reference inside `ON DUPLICATE KEY UPDATE` that Jaloquent generates, causing a `JdbcSQLSyntaxErrorException` (error code 42122) on every save against an H2 backend. Upsert SQL is now transparently rewritten to `MERGE INTO … KEY(id)` before execution, which H2 fully supports. MySQL/MariaDB backends are unaffected. ### Changed - **Chat formatting is now disabled by default** (`factions.chat.show-tag: false` in `config.yml`). Operators must opt in by setting `show-tag: true`. Previously it was enabled for all players by default.
release

PvPIndex Factions 1.1.0

1.1.0
20 мая 2026 г.26Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, folia, paper, spigot
Скачать
Что нового
### Added - **Faction merge** (`/f merge send <faction>`, `/f merge accept <faction>`): - Officers and above can send a merge request proposing their faction be absorbed by another. - Officers and above of the target faction can accept the request to complete the merge. - On acceptance, all claims, warps, bank balance, and members are transferred to the target faction; members join at the target's default rank; the sender faction is disbanded. - Online members of the target faction are notified when a merge request arrives. - New permission `factions.cmd.merge` (default: true). - New `MergeRequestModel` / `MergeRequestRepository` data layer and `MergeService` / `MergeServiceImpl` service layer. - New audit actions `merge-request` and `merge-accept` for the audit log. - Internationalization support with locale bundles under `messages/` for `en`, `es`, `de`, `fr`, `pt-BR`, `ja`, `zh`, and `ru`. - New player language command: `/f language [code|reset]` with aliases `lang` and `locale`. - New player profile locale persistence (`players.locale`) for per-player language overrides. - New config key: `factions.language.default` for server-wide default locale fallback. - New permission node: `factions.cmd.language` (default `true`). - New translator/contributor documentation: `docs/i18n.md`. ### Changed - Upgraded TeamsAPI integration to **2.0.0**: - `getRelation(id, id)` now returns `TeamRelation.MEMBER` when both team UUIDs are equal (new TeamsAPI 2.0.0 contract). - Message resolution now follows locale fallback order: player locale -> server default -> English -> inline fallback text. - `/f help` now includes the `language` command. - `/fa reload` now reloads locale bundles in `messages/` in addition to config.