
PvPIndex Factions
Modern Factions refactor, old-school factions but with modern QOL features
- Загрузки
- 537
- Подписчики
- 2
- Обновлён
- 7 июня 2026 г.
- Лицензия
- LGPL-3.0-only
Опубликован 10 мая 2026 г.
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
| Platform | Version | Notes |
|---|---|---|
| Paper | 1.21.x, 1.26.x | Recommended |
| Folia | 1.21.x, 1.26.x | Native Folia scheduler support |
| Spigot | 1.21.x, 1.26.x | Legacy compatibility mode |
| Java | 21+ |
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
/fcommand experience with familiar muscle memory - Persistent faction invites with login-time invite notifications
- Advanced land control:
claim/unclaimmodes (one,square,circle,fill,auto) - Interactive
/f mapwith clearer territory context - Faction bank with deposit/withdraw/transfer/history and optional tax engine
- Configurable
/fGUI viagui.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, andfillmodes for territory management- Auto claim/unclaim modes for movement-driven workflows
- Modernized
/f mapdisplay 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 chestfor 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(default1)
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 flagregardless 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-sizeinconfig.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.defaultinconfig.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
- PlaceholderAPI: https://modrinth.com/plugin/placeholderapi
- WorldEdit: https://modrinth.com/plugin/worldedit
- WorldGuard: https://modrinth.com/plugin/worldguard
- dynmap: https://modrinth.com/plugin/dynmap
- EssentialsX: https://modrinth.com/plugin/essentialsx
- LWC: https://modrinth.com/plugin/lwc
- Vault API: https://www.spigotmc.org/resources/vault.34315/ (official dependency page)
- TeamsAPI: https://modrinth.com/plugin/teams-api
- EzAuction: https://modrinth.com/plugin/ezauction
- EzShops: https://modrinth.com/plugin/ezshops
- EzRTP: https://modrinth.com/plugin/ezplugins-ezrtp
- EzClean: https://modrinth.com/plugin/ezclean
- DiscordSRV: https://modrinth.com/plugin/discordsrv
Configuration and operations
Generated config files:
config.ymlroles.ymldatabase.ymlmessages.ymlgui.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:

Map:

Faction info:

Faction info page 2:

Top tab-complete:

Faction Flags:

Set flag state:

Flag autocomplete:

Audit log:

Admin power history:

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:
- Docs: https://pvp-index.github.io/pvpindex-factions
- Getting started: https://pvp-index.github.io/pvpindex-factions/getting-started
- Installation: https://pvp-index.github.io/pvpindex-factions/installation
- Step-by-step guides: https://pvp-index.github.io/pvpindex-factions/guides
- Core configuration: https://pvp-index.github.io/pvpindex-factions/configuration/core-settings
- Full configuration reference: https://pvp-index.github.io/pvpindex-factions/configuration/reference
- Features overview: https://pvp-index.github.io/pvpindex-factions/features
- Integrations docs: https://pvp-index.github.io/pvpindex-factions/integrations
- Operations runbook: https://pvp-index.github.io/pvpindex-factions/operations/admin-runbook
- Troubleshooting: https://pvp-index.github.io/pvpindex-factions/operations/troubleshooting
- Commands reference: https://pvp-index.github.io/pvpindex-factions/commands
- Permissions reference: https://pvp-index.github.io/pvpindex-factions/permissions
- Source: https://github.com/PVP-Index/pvpindex-factions
- Issues: https://github.com/PVP-Index/pvpindex-factions/issues
PvPIndex is partnered with NeyHost
Use the coupon code PVPINDEX for 10% off on checkout.
License and attribution
- LGPL-3.0
- Derivative of MassiveCraft Factions (LGPL-3.0)
- Refactor by PvPIndex.com team (Shadow48402, Epildev)
Ченджлог
1.1.9Релиз26.1, 26.1.1, 26.1.2 · 7 июня 2026 г.
Fixed
- Fixed bStats
created_factionschart 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.
1.1.8Релиз26.1, 26.1.1, 26.1.2 · 6 июня 2026 г.
Changed
- Updated TeamsAPI integration from
2.4.0to2.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 fullTeamobject.Team.getOwner()- default method available via existinggetOwnerUUID()andgetMember()implementation. Returns the owner'sTeamMemberdirectly.
1.1.7Релиз26.1, 26.1.1, 26.1.2 · 31 мая 2026 г.
Server owner highlights
This release improves faction role management for production servers and makes role behavior easier to control globally.
- New dedicated
roles.ymlfile 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.0for 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.
- Set
- Allow faction-specific role customization:
- Set
roles.overrides.enabled: true.
- Set
- Standardize rank visuals across all newly created factions:
- Configure
roles.defaults.owner.prefix,roles.defaults.officer.prefix, androles.defaults.member.prefix.
- Configure
- 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)
# 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
# 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
# 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:
Fixed
/f role createnow 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 frombooleanto a typedCreateRoleResultenum 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.
1.1.6Релиз26.1, 26.1.1, 26.1.2 · 28 мая 2026 г.
Added

- Faction Chests:
- New
/f chestcommand group for shared faction storage. - Added subcommands:
/f chest list,/f chest open <name>,/f chest create <name>,/f chest delete <name>. /f chestopens 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, andfactions.cmd.chest.delete.
- New
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.
1.1.5Релиз26.1, 26.1.1, 26.1.2 · 25 мая 2026 г.
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

1.1.4Релиз26.1, 26.1.1, 26.1.2 · 25 мая 2026 г.
Fixed
All
/fsubcommands broken when TeamsAPI is absent:FactionCommandExecutorandFactionTabCompleterheld directimportstatements for TeamsAPI classes. On Paper's isolated plugin classloader this causedNoClassDefFoundErrorat 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) andTeamsCommandBridgeImpl(imports TeamsAPI, instantiated only via reflection when TeamsAPI is confirmed present). Mirrors the existingTeamsApiRegistrarisolation pattern. With TeamsAPI absent the bridge isnulland all subcommands route through the localCommandRegistryas intended.
1.1.3Релиз26.1, 26.1.1, 26.1.2 · 24 мая 2026 г.
Added
/f infodetail pages (/f info page <n> [faction]): the summary view now shows a hint pointing players to/f info page <n>. The newpagesubcommand 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.

Changed
- Updated TeamsAPI dependency from
2.0.0to2.1.0. - Bumped plugin version to
1.1.3. - TeamsAPI relation adapter now honors
TeamRelationnature metadata (RelationNature) when persisting relation changes, so friendly/hostile custom relation natures map safely to internal declared relations.
Fixed
- TeamsAPI relation adapter now honors
RelationNaturemetadata (TeamsAPI 2.1.0+): custom relation natures (FRIENDLY/HOSTILE) on non-standardTeamRelationvalues are mapped to the correct internalALLY/ENEMYrelation instead of always falling back toNEUTRAL.
1.1.2Релиз26.1, 26.1.1, 26.1.2 · 23 мая 2026 г.
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 clearto remove it. - Configurable member-size cap: a new
max-memberssetting inconfig.ymllimits how many players can belong to a faction (0 = unlimited). The cap is enforced in/f joinand in the join service. Default is0(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 thewarpstable — 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 to0makes 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
warpstable 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 assertsdynmap hooked - faction territory layer enabled.is logged. Runs on Paper 1.21.4 and 1.21.11 on every PR tomain/develop.
Changed
- Dependency upgrades (maintenance): all outdated compile and test dependencies
bumped to their latest compatible versions:
EssentialsX2.21.0 → 2.21.2worldedit-bukkit7.3.9 → 7.4.3worldguard-bukkit7.0.12 → 7.0.16placeholderapi2.11.6 → 2.12.2 (repo URL updated torepo.helpch.at)mysql-connector-j9.1.0 → 9.7.0h22.3.232 → 2.4.240HikariCP6.2.1 → 7.0.2junit-jupiter5.11.4 → 5.14.4mockito-core/mockito-junit-jupiter5.14.2 → 5.23.0maven-shade-plugin3.6.0 → 3.6.2asm/asm-commonsoverride 9.8 → 9.10jacoco-maven-plugin0.8.12 → 0.8.14maven-surefire-plugin3.5.2 → 3.5.5
Fixed
- dynmap compatibility expanded to 3.x (3.4 – 3.8): the vendored compile-time
dynmap-apidependency was upgraded from3.4-beta-3to3.8(latest stable, released 2026-01-14). In dynmap 3.8 the marker API was split into a separateDynmapCoreAPIJAR; both JARs are now vendored underlibs/with minimal POMs so CI never contactsrepo.mikeprimm.com. The runtime hook code only uses stableorg.dynmapmarker APIs that are present in every 3.x release, so the plugin continues to work with any installed dynmap 3.x version.
Комментарии
Загружаем…
