Перейти к содержимому
Mineforgian

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

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 /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)

Ченджлог

1.1.9Релиз26.1, 26.1.1, 26.1.2 · 7 июня 2026 г.

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.
1.1.8Релиз26.1, 26.1.1, 26.1.2 · 6 июня 2026 г.

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.
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.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)

# 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

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.
1.1.6Релиз26.1, 26.1.1, 26.1.2 · 28 мая 2026 г.

Added

Faction Chests

  • 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.
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

/fa info result screenshot

1.1.4Релиз26.1, 26.1.1, 26.1.2 · 25 мая 2026 г.

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.

1.1.3Релиз26.1, 26.1.1, 26.1.2 · 24 мая 2026 г.

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

Changed

  • Updated TeamsAPI dependency from 2.0.0 to 2.1.0.
  • Bumped plugin version to 1.1.3.
  • TeamsAPI 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.
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 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.

Комментарии

Загружаем…