PvPIndex FactionsСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачать
ВЕРСИИ (21)
release
PvPIndex Factions 1.1.9
1.1.97 июн. 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.86 июн. 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.731 мая 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.628 мая 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**:
- 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.525 мая 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`

release
PvPIndex Factions 1.1.4
1.1.425 мая 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.324 мая 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`.

### 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.223 мая 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.122 мая 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.020 мая 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.
release
PvPIndex Factions 1.0.10
1.0.1020 мая 2026 г.17Minecraft: 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
- New admin power command suite under `/fa power`:
- `view`, `set`, `add`, `remove`, `reset`, `freeze`, and `history`
- Added granular permissions under `factions.cmd.admin.power.*`
- Admin mutations now support reason logging through power history entries
- New power service architecture:
- Introduced centralized `PowerService` / `PowerServiceImpl`
- `EnginePower`, `/f power buy`, and admin power commands now use the shared service
- Expanded power model and controls:
- Added player-level `power_frozen` state
- Added source-level power controls under `factions.power.sources.*`
- Added constraints under `factions.power.constraints.*`
- Added context multipliers under `factions.power.multipliers.*`
- Added freeze behavior toggles under `factions.power.freeze.*`
- Added power notification routing under `factions.power.notifications.*`
- New message keys for power change routing and admin responses (`power.admin-*`, `power.change-*`, `power.blocked-frozen`).

### Changed
- Refactored power mutation paths to remove duplicated logic and make power behavior consistently configurable.
- Updated command wiring/bootstrapping to inject and reuse the centralized power service.
release
PvPIndex Factions 1.0.9
1.0.919 мая 2026 г.20Minecraft: 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
- **Audit log** (`/f audit`, `/fa audit <faction>`):
- Records key faction actions: chunk claims/unclaims, relation changes, member kicks, promotions, demotions, and bank deposits/withdrawals/transfers.
- `/f audit [page] [--action=<action>]` lets officers and above page through their faction's history with optional action-type filtering.
- `/fa audit <faction> [page] [--action=<action>]` gives staff the same view for any faction; console-friendly.
- Page size is configurable via `factions.audit.page-size` in `config.yml` (default: 10).
- New permission `factions.cmd.audit` (default: op); included as a child of `factions.admin`.

release
PvPIndex Factions 1.0.8
1.0.819 мая 2026 г.18Minecraft: 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, paper, spigot
Что нового
### Added
- **Faction flags** (`/f flag`, `/f flag list`, `/f flag set <flag> [on|off]`):
- Per-faction boolean toggles that officers can manage in-game. Five built-in flags:
- `pvp`: allow PvP inside the faction's claimed territory (default: `true`)
- `friendly-fire`: allow members to harm each other (default: `false`)
- `explosions`: allow explosions to destroy terrain in territory (default: `false`)
- `fire-spread`: allow fire to spread in territory (default: `false`)
- `open`: allow anyone to join without a pending invite (default: `false`)
- `/f flag` with no arguments shows the current flag list; `/f flag list` is an explicit alias.
- `/f flag set <flag>` toggles; `/f flag set <flag> on|off` sets a specific value.
- `/fa flag <faction> <flag> [on|off]` lets admins override any flag regardless of the
`player-editable` config setting.
- Flag defaults and player-editability are configurable per-flag under `factions.flags.*`.
- New permissions: `factions.cmd.flag` (default `true`), `factions.cmd.flag.set` (default `true`,
officer check enforced by command logic).
- New `messages.yml` keys: `flag.*`.



- **WorldGuard region sync** (`integrations.worldguard-sync-regions: false`, opt-in):
- When enabled, every faction-claimed chunk is mirrored as a `ProtectedCuboidRegion` in
WorldGuard on startup and kept in sync with claim, unclaim, join, leave, and disband events.
- WG handles block-break and block-place denial at its native `NORMAL` event priority.
Because the protection engine registers at `HIGH` with `ignoreCancelled = true`, enemy
players are denied before our handler runs; no per-event database query is needed for them.
- Faction members are added to their faction's regions as WG domain members so WG passes
their interactions transparently.
- Allies are handled by a dedicated `HIGHEST ignoreCancelled = false` pass that un-cancels
their events after a single DB lookup.
- Safezone and warzone chunks get WG regions with an empty member list, so WG denies all
building there regardless of WG membership.
- Requires WorldGuard to be installed and loaded. Toggling the option requires a restart.
- New config key: `integrations.worldguard-sync-regions` (default `false`).
release
PvPIndex Factions 1.0.7
1.0.719 мая 2026 г.16Minecraft: 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, paper, spigot
Что нового
### Added
- Startup update-check integration using [ez-plugins/mc-plugin-update-notifier](https://github.com/ez-plugins/mc-plugin-update-notifier) with chained sources:
Modrinth public API as primary and GitHub public API as fallback.
Modrinth queries loaders `paper`, `folia`, and `spigot` so the check works on all supported
server software.
- Operator join notification when an update is available, including clickable release URL output.
- New update config keys:
- `factions.updates.enabled` (default `false` - opt-in)
- `factions.updates.notify-ops-on-join` (default `false`)
- New message keys:
- `update.available`
- `update.url`
- **[DiscordSRV](https://modrinth.com/plugin/discordsrv) integration** (`integrations.discordsrv.enabled: true`):
- Faction create, disband, ally, truce, and enemy-declared events are broadcast to a
Discord channel via DiscordSRV (pure reflection - no hard compile-time dependency).
- Per-event toggles and Discord-markdown message templates are configurable in `config.yml`
under `integrations.discordsrv.events.*`.
- `channel-id` key routes messages to a specific text channel; leave empty to use DiscordSRV's
main linked channel.
- New config keys:
- `integrations.discordsrv.enabled` (default `false`)
- `integrations.discordsrv.channel-id` (default `""`)
- `integrations.discordsrv.events.faction-created.enabled` / `.message`
- `integrations.discordsrv.events.faction-disbanded.enabled` / `.message`
- `integrations.discordsrv.events.relation-ally.enabled` / `.message`
- `integrations.discordsrv.events.relation-truce.enabled` / `.message`
- `integrations.discordsrv.events.relation-enemy.enabled` / `.message`
- **[EssentialsX](https://modrinth.com/plugin/essentialsx) integration overhaul** (`integrations.essentialsx.enabled: true`):
- `/f warp` teleports now route through EssentialsX alongside `/f home`.
- EssentialsX `/back` location is recorded before every teleport so players can return with `/back`.
- Jailed players are blocked from `/f home` and `/f warp` with a message.
- Detected EssentialsX version is logged at startup.
- New `messages.yml` keys: `home.teleported`, `home.teleport-failed`, `home.jailed`,
`warp.teleported`, `warp.teleport-failed`, `warp.jailed`.
- **Safe zones and war zones** (`factions.zones.safe-zone.enabled`, `factions.zones.war-zone.enabled`):
- Both zones are enabled by default. Disabling a zone causes its chunks to behave as
Wilderness - protection, PvP rules, and power-loss suppression are all inactive.
- New admin commands `/fa safezone` and `/fa warzone` let operators assign chunks to each
zone in one-shot, square, or circle modes (with an optional `remove` sub-mode).
- New permissions: `factions.cmd.safezone`, `factions.cmd.warzone` (default `op`).
- **Overclaiming** (`factions.overclaiming.enabled: false` - opt-in):
- When enabled, a faction can claim an enemy's chunk if the victim's land count exceeds
their current maximum land (power-based). Border adjacency is waived for overclaims.
- Optional guard `factions.overclaiming.require-enemy-relation: true` restricts overclaims
to factions that have declared `ENEMY` relation.
- Attacker receives a `claim.overclaimed` notification; all online victim members receive
`claim.overclaimed-victim` showing remaining chunk count.
- `FactionChunkClaimEvent` gains an optional `overclaimedFromFaction` field populated on
overclaim so third-party plugins can observe the event.
- New `messages.yml` keys: `claim.overclaimed`, `claim.overclaimed-victim`,
`claim.enemy-not-raidable`.
- **Power and war improvements** - six optional, independently toggleable features that
improve PvP/raiding pacing. All are disabled by default:
- **F1 - Inactive member exclusion** (`factions.power.inactive-exclusion.enabled: false`):
members who have been offline longer than `inactive-exclusion.days` do not contribute to
the faction's max-land calculation. Their stored power is unchanged; only the land-cap
computation skips them, discouraging dead factions from holding territory indefinitely.
- **F2 - Death streak multiplier** (`factions.power.death-streak.enabled: false`):
consecutive deaths within a rolling `window-seconds` window each multiply the power loss
by `multiplier^streak`. After the window expires the streak resets. A separate
`power.death-streak-penalty` message is sent on streak deaths.
Persisted in two new `PlayerModel` columns: `last_death_at`, `death_streak`.
- **F3 - Scaled kill rewards** (`factions.power.gain-on-kill.scale.enabled: false`):
kill power gain is multiplied by `clamp(victimPower / killerPower, min-factor, max-factor)`.
Rewarding high-risk kills and reducing farming incentive.
- **F4 - Raidable state broadcast** (`factions.raidable.broadcast.enabled: true`):
after each power tick, the engine detects factions that cross the raidable threshold and
notifies members. Optional `server-wide: true` broadcasts to all online players.
The raidable flag is persisted in a new `FactionModel` column: `is_raidable`.
- **F5 - Offline protection** (`factions.overclaiming.offline-protection.enabled: false`):
blocks overclaiming when all members of the defending faction are currently offline,
preventing pure offline raiding.
- **F6 - War shield** (`factions.war.shield.enabled: false`):
a faction may be assigned a daily UTC protection window by an admin using the new
`/fa shield <faction> <start-hour> <duration-hours>` command. During the window the
faction's land cannot be overclaimed. Persisted in two new `FactionModel` columns:
`shield_start_hour`, `shield_duration_hours`.
- New admin command: `/fa shield <faction> <clear|<start-hour (0-23)> <duration-hours>>`.
- New permission: `factions.cmd.shield` (default `op`, child of `factions.admin`).
- New `config.yml` keys:
- `factions.power.inactive-exclusion.enabled` / `.days`
- `factions.power.death-streak.enabled` / `.window-seconds` / `.multiplier`
- `factions.power.gain-on-kill.scale.enabled` / `.min-factor` / `.max-factor`
- `factions.raidable.broadcast.enabled` / `.server-wide`
- `factions.overclaiming.offline-protection.enabled`
- `factions.war.shield.enabled` / `.max-duration-hours`
- New `messages.yml` keys: `power.death-streak-penalty`, `raidable.*`, `shield.*`,
`claim.enemy-offline-protected`, `claim.shield-active`.
- **`/f powerhistory [<player>] [<page>]`** (`alias: phist`):
shows a paginated log of significant power changes (death, kill, and purchase events).
Players can view their own history without any extra permission.
Viewing another player's history requires `factions.cmd.power.history.other` (default `op`).
All message templates are configurable in `messages.yml` under `power.history-*`.
- **[TeamsAPI](https://modrinth.com/plugin/teams-api) 1.8.0 power history provider**: when TeamsAPI 1.8.0+ is present the plugin
registers a `TeamsPowerHistoryService` implementation that exposes all recorded power-change
events through the standard TeamsAPI surface.
Consumer plugins can read player and team history, filter by time range, add external
entries, and remove or clear records without touching the database directly.
The provider is registered reflectively so servers running TeamsAPI 1.7.x or earlier
start cleanly and the provider is silently skipped.
New permissions: `factions.cmd.power.history` (default `true`),
`factions.cmd.power.history.other` (default `op`).
### Changed
- **[TeamsAPI](https://modrinth.com/plugin/teams-api) dependency updated to 1.8.0** (was 1.7.0).
- Update notifier library is now explicitly relocated in shading:
`com.github.ezplugins.updater` -> `com.pvpindex.lib.updater`, preventing runtime classpath conflicts.
- Update check is **disabled by default** (`factions.updates.enabled: false`). Opt in by setting it
to `true`.
- [EssentialsX](https://modrinth.com/plugin/essentialsx) interop now uses the compile-time EssentialsX API instead of reflection, making
it resilient to future EssentialsX API changes and easier to diagnose when something breaks.
- Plugin validates that the plugin named `Essentials` actually implements `IEssentials` before
enabling the integration; logs a warning and falls back to noop if not.
release
PvPIndex Factions 1.0.6
1.0.618 мая 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, paper, spigot
Что нового
### Added
- **[TeamsAPI](https://modrinth.com/plugin/teams-api) 1.6 relation provider**: the plugin now implements the `TeamsRelationService`
interface introduced in TeamsAPI 1.6. External plugins and scripts can read and write
inter-faction relations (`ALLY`, `TRUCE`, `NEUTRAL`, `ENEMY`) through the standard TeamsAPI
surface. `TeamRelationChangeEvent` is fired on every relation change, allowing third-party
plugins to observe or cancel relation updates before they are persisted.
### Changed
- **TeamsAPI dependency updated to 1.6.1** (was 1.5.0).
### Fixed
- **Plugin crashed on startup when TeamsAPI 1.5.x was installed** (`NoClassDefFoundError:
TeamsRelationService`): the `TeamsRelationService` interface was introduced in TeamsAPI 1.6
and did not exist in older installations. A direct bytecode reference to it in the registrar
caused the JVM bytecode verifier to fail when loading the class, crashing the plugin on
startup. All references to `TeamsRelationService` and its concrete adapter are now loaded via
reflection so that TeamsAPI 1.5.x servers start cleanly and the relation provider is silently
skipped when TeamsAPI < 1.6 is detected.
- **Stale relation entries after faction disband**: when a faction was disbanded, references
to it stored in other factions' relation maps were not removed, leaving orphaned entries in
the database. Disbanding a faction now clears all incoming relation references across every
other faction.
release
PvPIndex Factions 1.0.5
1.0.517 мая 2026 г.77Minecraft: 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, paper, spigot
Что нового
### Added
- **Folia support**: the plugin now runs on Folia servers alongside Bukkit, Spigot, and Paper.
All scheduled tasks use a new scheduler abstraction that automatically picks the correct
Bukkit or Folia scheduler at runtime. `plugin.yml` now declares `folia-supported: true`.
- **Correct chat formatting on Spigot**: chat-format events are now handled through the right
API on each platform — `AsyncChatEvent` on Paper and `AsyncPlayerChatEvent` on Spigot.
### Fixed
- **Plugin did not start when TeamsAPI or EzCountdown were absent**:
Servers without TeamsAPI or EzCountdown installed logged `NoClassDefFoundError` at startup
and the plugin failed to load entirely. Both integrations are now fully isolated — the plugin
always starts cleanly and activates each integration only when its plugin is present.
- **Plugin did not start on Spigot** (`NoClassDefFoundError` at startup):
Several internal classes referenced Adventure API types that are absent or incompatible on
Spigot 1.21.4 and 1.21.11, causing the JVM to crash during class initialisation before any
commands or events could be registered. All Adventure-typed state has been moved into
lazily-loaded inner classes that Spigot never touches at startup.
- **Messages showed no colour or formatting on Spigot**:
Plugin messages appeared as raw plain text because Spigot does not bundle Adventure at runtime.
The plugin now ships its own copy of Adventure (MiniMessage + legacy serialiser) so colours,
bold, italic, and other formatting always render correctly on Spigot.
- **All commands crashed on Spigot** (`/f info`, `/f create`, and every other command):
Every command thrown on Spigot produced `UnsupportedOperationException: No JsonComponentSerializer
implementation found`, making the plugin completely unusable. The GSON serialiser is now bundled
in the plugin JAR, and the initialisation sequence explicitly uses the plugin classloader so that
Java's `ServiceLoader` locates the implementation at runtime rather than falling back to a stub
that throws.
- **Hover tooltips did nothing on Spigot** (`/f info` member list, `/f map` territory tiles):
After the command crash was resolved, hover and click events were still silently dropped because
the Spigot message path was sending plain §-coded strings. Messages to players are now serialised
to JSON via the bundled GSON serialiser and delivered through the BungeeCord chat API, so hover
and click events work correctly on Spigot.
- **Intermittent shutdown error from bStats metrics** (rare):
On servers that shut down shortly after startup, bStats background tasks occasionally ran after
the database connection was already closed, logging `HikariDataSource has been closed`. A
shutdown flag now prevents metrics tasks from querying the database once the plugin has stopped.
release
PvPIndex Factions 1.0.4
1.0.416 мая 2026 г.22Minecraft: 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, paper, spigot
Что нового
### Added
- [TeamsAPI](https://modrinth.com/plugin/teams-api) 1.5.0 subcommand provider support: `/f <name>` now dispatches to any
`TeamsSubcommand` registered via `TeamsAPI.registerSubcommand()`, with permission
checks and usage-hint fallback. Tab-completion also surfaces registered subcommand
names and forwards argument-level completions to each subcommand's own `tabComplete()`.
### Changed
- Upgraded [TeamsAPI](https://modrinth.com/plugin/teams-api) dependency from `1.4.0` to `1.5.0`.
- PvPIndex Factions now declares `loadbefore` for [EzShops](https://modrinth.com/plugin/ezshops),
[EzAuction](https://modrinth.com/plugin/ezauction), [EzRTP](https://modrinth.com/plugin/ezplugins-ezrtp), and
[EzClean](https://modrinth.com/plugin/ezclean) so those plugins always load after the faction provider is available.
release
PvPIndex Factions 1.0.3
1.0.313 мая 2026 г.27Minecraft: 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, paper, spigot
Что нового
### Added
- New `notifications.yml` config file consolidating all notification settings (inbox, member join, economy tax, EzCountdown).
- EzCountdown relation announcements now fall back to a server-wide chat broadcast when EzCountdown is absent or disabled in config.
### Changed
- EzCountdown integration is now fully optional: relation announcements are delivered via chat by default and only use EzCountdown when the plugin is present and `notifications.ezcountdown.enabled` is `true`.
- Notification settings moved from `config.yml` to `notifications.yml`: `notify-members` (economy tax) and all `integrations.ezcountdown.*` keys.
release
PvPIndex Factions 1.0.2
1.0.211 мая 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, paper, spigot
Что нового
### Added
- `/f map` now supports a size option: `--size=<size>`.
- Shared command argument parsing coverage for valued long options (`--key=value` and `--key value`), including error handling tests.
- New reusable faction member notification helper (`FactionMemberNotifier`) for consistent online-member notifications across features.
- New predefined factions system with separate `pre-defined.yml` storage and explicit in-memory reload flow.
- New `/f predefined` command tree (with `/f prefined` alias): `create`, `claim`, `sethome`, `reload`, and `list`.
- New predefined defaults and policy toggles in `pre-defined.yml`: `enabled` (default `false`), `case-sensitive`, and `block-disband`.
- `/f info` can now display relationship sections, configurable via:
- `factions.info.relations.show-allies` (default `true`)
- `factions.info.relations.show-truces` (default `false`)
- `factions.info.relations.show-neutrals` (default `false`)
- `factions.info.relations.show-enemies` (default `false`)
### Changed
- `/f map once` default render radius increased to `3` via config default (`factions.map.once-radius`).
- `/f map` row suffix formatting no longer appends `z=<value>` at line ends.
- `/f map` tile hover text now uses explicit coordinate labels for clarity: `Chunk X`, `Chunk Z`, and `Player Y`.
- `/f create <name>` now enforces a predefined-name whitelist when predefined mode is enabled.
- Improved relation workflow and UX:
- `/f relation` now supports `relationship` alias.
- Ally/truce now support pending-to-mutual confirmation flow.
- Enemy/neutral relations are mirrored for consistency.
- Ally/truce limits are enforced via relation limits.
- Tab completion improvements:
- Fixed `/f relation <faction> <relation>` completion.
- Fixed `/f relationship ...` completion.
- Improved `/f map` completion for mixed argument order (`on|off|once` with `--size`).
- Join and relation notifications now use configurable message keys in `messages.yml`.
- Added predefined command permissions and configurable predefined messages in `messages.yml`.
### Fixed
- Fixed invite acceptance join path that could fail with database NOT NULL constraint errors when player rows were first created.
- Faction members are now notified when a player successfully joins their faction.
- Predefined factions can be protected from disbanding (player and admin disband paths) when policy is enabled.
release
PvPIndex Factions 1.0.1
1.0.110 мая 2026 г.19Minecraft: 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, paper, spigot
Что нового
### Added
- `/f power buy <amount>` subcommand: opt-in feature (disabled by default) allowing players to purchase personal power with money via Vault. Configurable cost per point and per-purchase cap (`factions.power.buy.*`).
- New `config.yml` keys: `factions.power.gain-on-kill.enabled`, `factions.power.gain-on-kill.amount`, `factions.power.buy.enabled`, `factions.power.buy.cost-per-point`, `factions.power.buy.max-per-purchase`.
- New `messages.yml` keys: `power.lost-on-death`, `power.kill-gained`, `power.buy-success`, `power.buy-disabled`, `power.buy-no-vault`, `power.buy-invalid-amount`, `power.buy-already-max`, `power.buy-insufficient-funds`.
### Changed
**Teams API updated**
The TeamsAPI integration now has access to faction claims and faction power, making it possible to connect other plugins to it and making a more unique Factions experience per server.
- TeamsAPI `ClaimService` adapter: claim and unclaim individual chunks, bulk-unclaim by team, query claims by chunk or team, check whether a chunk is claimed or owned by a specific team, and compute max claim allowance from total power.
- TeamsAPI `PowerService` adapter: get and set individual player power (clamped to configured max), query total and max power for a team.
- `FactionTeamClaim` value type bridging internal `BoardEntry` data to the TeamsAPI `TeamClaim` contract.
- Updated [TeamsAPI](https://modrinth.com/plugin/teams-api) dependency from `1.3.0` to `1.4.0`.
**Power engine improved**
To create a gameplay flow around power we have decided to make it kill based by default with an opt-in power buy feature (`/f power buy <amount>`).
- Power loss on death: players lose configurable power (`factions.power.loss-on-death`, default 4.0) when killed; respects the server-start grace period and skips safezone territory.
- Power gain on kill: killing an enemy player grants the killer configurable power (`factions.power.gain-on-kill.amount`, default 2.0); opt-out via `factions.power.gain-on-kill.enabled`.
### Fixed
- Plugin crashed on startup with `NoClassDefFoundError` for TeamsAPI classes when TeamsAPI was absent or not yet loaded. Removed `load: STARTUP` so the plugin loads in the default `POSTWORLD` phase (respecting `softdepend` order), and changed `BootstrapContext` adapter fields to `Object` to prevent eager JVM resolution of TeamsAPI interface types.
release
PvPIndex Factions 1.0.0
1.0.010 мая 2026 г.17Minecraft: 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, paper, spigot
Что нового
### Added
- Initial modern PvPIndex Factions release baseline.
- Release workflow with changelog-driven GitHub release notes and marketplace publish flow.
### Changed
- Documentation and listing improvements for server-owner onboarding and publishing.