Configuration Reference
Complete reference for all HyperFactions configuration options.
Configuration Reference
This page provides a complete reference for all 47 HyperFactions configuration options. For a guide-style walkthrough, see Configuration.
For Server Owners
This reference documents all available configuration options. Most servers can use the defaults - only customize what you need.
Configuration File Location
mods/com.hyperfactions_HyperFactions/config.json
Reload Required
Changes require /f admin reload or a server restart to take effect.
Configuration Sections
The config is organized into 14 sections with 47 total options:
| Section | Options | Purpose |
|---|---|---|
faction | 4 | Faction naming and member limits |
power | 6 | Power system mechanics |
claims | 6 | Territory claiming rules |
combat | 9 | Combat and spawn protection |
relations | 2 | Ally and enemy limits |
invites | 2 | Invitation expiration |
stuck | 2 | Stuck command timing |
teleport | 4 | Home teleport settings |
updates | 3 | Update checking |
autoSave | 2 | Auto-save settings |
messages | 2 | Message formatting |
gui | 1 | GUI settings |
territoryNotifications | 1 | Enter/exit notifications |
worldMap | 1 | Map marker settings |
permissions | 2 | Permission behavior |
faction
Settings for faction names and member limits.
| Key | Type | Default | Range | Description |
|---|---|---|---|---|
maxMembers | int | 50 | ≥1 | Maximum members per faction |
maxNameLength | int | 24 | 1-64 | Maximum faction name length |
minNameLength | int | 3 | 1-max | Minimum faction name length |
allowColors | bool | true | - | Allow color codes in faction names |
Name Validation
Faction names must be between minNameLength and maxNameLength characters. If allowColors is true, color codes don't count toward the length.
power
Power system settings that govern territory capacity and warfare.
| Key | Type | Default | Range | Description |
|---|---|---|---|---|
maxPlayerPower | double | 20.0 | ≥0 | Maximum power per player |
startingPower | double | 10.0 | 0-max | Initial power for new players |
powerPerClaim | double | 2.0 | ≥0 | Power required per claim |
deathPenalty | double | 1.0 | ≥0 | Power lost on death |
regenPerMinute | double | 0.1 | ≥0 | Power regenerated per minute |
regenWhenOffline | bool | false | - | Regenerate power while offline |
Power Calculations
Regeneration rate examples:
regenPerMinute | Per Hour | Full Recovery (0→20) |
|---|---|---|
| 0.05 | 3 power | ~6.7 hours |
| 0.1 (default) | 6 power | ~3.3 hours |
| 0.2 | 12 power | ~1.7 hours |
Max claims formula:
maxClaims = min(floor(totalFactionPower / powerPerClaim), claims.maxClaims)
claims
Territory claiming rules and restrictions.
| Key | Type | Default | Range | Description |
|---|---|---|---|---|
maxClaims | int | 100 | ≥0 | Hard cap on claims per faction |
onlyAdjacent | bool | false | - | Require claims to be adjacent |
decayEnabled | bool | true | - | Enable inactive claim decay |
decayDaysInactive | int | 30 | ≥1 | Days before decay starts |
worldWhitelist | array | [] | - | Only allow claims in these worlds |
worldBlacklist | array | [] | - | Block claims in these worlds |
World Filtering
World filtering follows these rules:
- If
worldWhitelistis not empty, only listed worlds allow claims - If
worldWhitelistis empty butworldBlacklistis not, all worlds except listed ones allow claims - If both are empty, all worlds allow claims
{
"claims": {
"worldWhitelist": ["default", "dungeon_realm"],
"worldBlacklist": []
}
}
combat
Combat settings including PvP rules and spawn protection.
| Key | Type | Default | Range | Description |
|---|---|---|---|---|
tagDurationSeconds | int | 15 | ≥0 | Combat tag duration in seconds |
allyDamage | bool | false | - | Allow damage to allies |
factionDamage | bool | false | - | Allow damage to faction members |
taggedLogoutPenalty | bool | true | - | Penalize logout while combat tagged |
logoutPowerLoss | double | 1.0 | ≥0 | Power lost on combat logout |
Spawn Protection (nested)
| Key | Type | Default | Range | Description |
|---|---|---|---|---|
spawnProtection.enabled | bool | true | - | Enable spawn protection |
spawnProtection.durationSeconds | int | 5 | ≥0 | Protection duration |
spawnProtection.breakOnAttack | bool | true | - | Remove protection on attack |
spawnProtection.breakOnMove | bool | true | - | Remove protection on movement |
Combat Tagging
When a player is combat tagged, they cannot teleport or use /f stuck. If they log out while tagged and taggedLogoutPenalty is true, they lose logoutPowerLoss power.
relations
Diplomatic relationship limits.
| Key | Type | Default | Range | Description |
|---|---|---|---|---|
maxAllies | int | 10 | ≥-1 | Maximum ally factions (-1 = unlimited) |
maxEnemies | int | -1 | ≥-1 | Maximum enemy factions (-1 = unlimited) |
Balancing Alliances
Limiting allies encourages faction conflict and prevents server-wide alliance networks. A value of 3-5 allies creates interesting diplomacy.
invites
Invitation and join request expiration.
| Key | Type | Default | Range | Description |
|---|---|---|---|---|
inviteExpirationMinutes | int | 5 | ≥1 | Minutes before invite expires |
joinRequestExpirationHours | int | 24 | ≥1 | Hours before join request expires |
stuck
Stuck command settings for escaping enemy territory.
| Key | Type | Default | Range | Description |
|---|---|---|---|---|
warmupSeconds | int | 30 | ≥0 | Warmup before teleport |
cooldownSeconds | int | 300 | ≥0 | Cooldown between uses |
Stuck Command
The /f stuck command teleports players to the nearest safe (unclaimed) chunk. The long warmup prevents combat exploitation.
teleport
Faction home teleportation settings.
| Key | Type | Default | Range | Description |
|---|---|---|---|---|
warmupSeconds | int | 5 | ≥0 | Warmup before teleport |
cooldownSeconds | int | 300 | ≥0 | Cooldown between uses (5 minutes) |
cancelOnMove | bool | true | - | Cancel warmup on movement |
cancelOnDamage | bool | true | - | Cancel warmup on taking damage |
updates
Automatic update checking.
| Key | Type | Default | Description |
|---|---|---|---|
enabled | bool | true | Enable update checks |
url | string | GitHub API | Update check URL |
releaseChannel | string | "stable" | Release channel ("stable" or "prerelease") |
autoSave
Automatic data saving.
| Key | Type | Default | Range | Description |
|---|---|---|---|---|
enabled | bool | true | - | Enable auto-save |
intervalMinutes | int | 5 | ≥1 | Minutes between saves |
messages
Message formatting.
| Key | Type | Default | Description |
|---|---|---|---|
prefix | string | \u00A7b[HyperFactions]\u00A7r | Message prefix (color codes) |
primaryColor | hex | #00FFFF | Primary accent color |
gui
GUI settings.
| Key | Type | Default | Description |
|---|---|---|---|
title | string | "HyperFactions" | Main GUI title |
territoryNotifications
Territory enter/exit notifications.
| Key | Type | Default | Description |
|---|---|---|---|
enabled | bool | true | Show notifications when entering/leaving territory |
worldMap
World map integration.
| Key | Type | Default | Description |
|---|---|---|---|
enabled | bool | true | Show faction claims on world map |
permissions
Permission system behavior.
| Key | Type | Default | Description |
|---|---|---|---|
adminRequiresOp | bool | true | Admin commands require OP if no permission system |
fallbackBehavior | string | "deny" | Behavior when no permission system ("deny" or "allow") |
Permission Fallback
When HyperPerms is not installed:
deny(default): Players need OP for admin commandsallow: All players can use basic commands (not recommended)
Default Configuration
This is the complete default configuration file:
{
"configVersion": 2,
"faction": {
"maxMembers": 50,
"maxNameLength": 24,
"minNameLength": 3,
"allowColors": true
},
"power": {
"maxPlayerPower": 20.0,
"startingPower": 10.0,
"powerPerClaim": 2.0,
"deathPenalty": 1.0,
"regenPerMinute": 0.1,
"regenWhenOffline": false
},
"claims": {
"maxClaims": 100,
"onlyAdjacent": false,
"decayEnabled": true,
"decayDaysInactive": 30,
"worldWhitelist": [],
"worldBlacklist": []
},
"combat": {
"tagDurationSeconds": 15,
"allyDamage": false,
"factionDamage": false,
"taggedLogoutPenalty": true,
"logoutPowerLoss": 1.0,
"spawnProtection": {
"enabled": true,
"durationSeconds": 5,
"breakOnAttack": true,
"breakOnMove": true
}
},
"relations": {
"maxAllies": 10,
"maxEnemies": -1
},
"invites": {
"inviteExpirationMinutes": 5,
"joinRequestExpirationHours": 24
},
"stuck": {
"warmupSeconds": 30,
"cooldownSeconds": 300
},
"teleport": {
"warmupSeconds": 5,
"cooldownSeconds": 300,
"cancelOnMove": true,
"cancelOnDamage": true
},
"updates": {
"enabled": true,
"url": "https://api.github.com/repos/ZenithDevHQ/HyperFactions/releases/latest",
"releaseChannel": "stable"
},
"autoSave": {
"enabled": true,
"intervalMinutes": 5
},
"messages": {
"prefix": "\u00A7b[HyperFactions]\u00A7r ",
"primaryColor": "#00FFFF"
},
"gui": {
"title": "HyperFactions"
},
"territoryNotifications": {
"enabled": true
},
"worldMap": {
"enabled": true
},
"permissions": {
"adminRequiresOp": true,
"fallbackBehavior": "deny"
}
}
Configuration Profiles
PvP-Focused Server
High-stakes combat with meaningful consequences:
{
"power": {
"maxPlayerPower": 15,
"startingPower": 10,
"deathPenalty": 2.0,
"regenPerMinute": 0.15,
"powerPerClaim": 1.5
},
"combat": {
"tagDurationSeconds": 20,
"taggedLogoutPenalty": true,
"logoutPowerLoss": 2.0
},
"relations": {
"maxAllies": 3,
"maxEnemies": -1
}
}
Casual/Building Server
Relaxed settings for creative communities:
{
"power": {
"maxPlayerPower": 50,
"startingPower": 25,
"deathPenalty": 0,
"regenPerMinute": 0.05,
"powerPerClaim": 5
},
"combat": {
"tagDurationSeconds": 0,
"factionDamage": false,
"allyDamage": false
},
"relations": {
"maxAllies": -1,
"maxEnemies": 0
}
}
Roleplay Server
Balanced settings encouraging diplomacy:
{
"power": {
"maxPlayerPower": 30,
"startingPower": 15,
"deathPenalty": 0.5,
"regenPerMinute": 0.1,
"powerPerClaim": 3
},
"relations": {
"maxAllies": 5,
"maxEnemies": 5
},
"claims": {
"onlyAdjacent": true,
"decayDaysInactive": 14
}
}
Module Configuration Files
In addition to the main config.json, HyperFactions uses module configuration files stored in the config/ subdirectory. Each module can be enabled/disabled independently.
Configuration File Structure
mods/com.hyperfactions_HyperFactions/
├── config.json ← Main configuration (documented above)
└── config/
├── backup.json ← Backup system settings
├── chat.json ← Chat formatting and relation colors
├── debug.json ← Debug logging options
├── economy.json ← Economy integration
└── faction-permissions.json ← Default territory permissions
config/backup.json
Controls the automatic backup system using GFS (Grandfather-Father-Son) rotation.
| Key | Type | Default | Description |
|---|---|---|---|
enabled | bool | true | Enable automatic backups |
hourlyRetention | int | 24 | Hourly backups to keep |
dailyRetention | int | 7 | Daily backups to keep |
weeklyRetention | int | 4 | Weekly backups to keep |
manualRetention | int | 10 | Manual backups to keep (0 = unlimited) |
onShutdown | bool | true | Create backup on server shutdown |
{
"enabled": true,
"hourlyRetention": 24,
"dailyRetention": 7,
"weeklyRetention": 4,
"manualRetention": 10,
"onShutdown": true
}
config/chat.json
Controls how faction tags appear in chat and relation-based color coding.
| Key | Type | Default | Description |
|---|---|---|---|
enabled | bool | true | Enable chat formatting |
format | string | See below | Chat format template |
tagDisplay | string | "tag" | Display mode: "tag", "name", or "none" |
tagFormat | string | See below | Format for the faction tag |
noFactionTag | string | "" | Tag for players without a faction |
priority | string | "LATE" | Event priority: EARLIEST, EARLY, NORMAL, LATE, LATEST |
relationColors.own | string | "#00FF00" | Color for same-faction members (green) |
relationColors.ally | string | "#FF69B4" | Color for allies (pink) |
relationColors.neutral | string | "#AAAAAA" | Color for neutral factions (gray) |
relationColors.enemy | string | "#FF0000" | Color for enemies (red) |
Format templates:
formatuses placeholders for chat message formattingtagFormatuses thetagplaceholder for the faction tag display
Available placeholders: faction_tag, prefix, player, suffix, message, tag (wrap in curly braces)
{
"enabled": true,
"format": "{faction_tag}{prefix}{player}{suffix}: {message}",
"tagDisplay": "tag",
"tagFormat": "[{tag}] ",
"noFactionTag": "",
"priority": "LATE",
"relationColors": {
"own": "#00FF00",
"ally": "#FF69B4",
"neutral": "#AAAAAA",
"enemy": "#FF0000"
}
}
config/debug.json
Controls debug logging output by category.
| Key | Type | Default | Description |
|---|---|---|---|
enabled | bool | false | Enable debug module |
enabledByDefault | bool | false | Enable all categories by default |
logToConsole | bool | true | Log debug messages to console |
categories.power | bool | false | Debug power calculations |
categories.claim | bool | false | Debug claim operations |
categories.combat | bool | false | Debug combat tagging |
categories.protection | bool | false | Debug protection checks |
categories.relation | bool | false | Debug relation changes |
categories.territory | bool | false | Debug territory notifications |
{
"enabled": false,
"enabledByDefault": false,
"logToConsole": true,
"categories": {
"power": false,
"claim": false,
"combat": false,
"protection": false,
"relation": false,
"territory": false
}
}
Runtime Debug Toggle
Use /f admin debug <category> to toggle debug categories at runtime without restarting the server.
config/economy.json
Controls faction economy integration (for future economy features).
| Key | Type | Default | Description |
|---|---|---|---|
enabled | bool | true | Enable economy features |
currencyName | string | "dollar" | Singular currency name |
currencyNamePlural | string | "dollars" | Plural currency name |
currencySymbol | string | "$" | Currency symbol |
startingBalance | double | 0.0 | Starting balance for new factions |
{
"enabled": true,
"currencyName": "dollar",
"currencyNamePlural": "dollars",
"currencySymbol": "$",
"startingBalance": 0.0
}
config/faction-permissions.json
Controls default territory permissions for new factions and server-enforced permission locks.
Structure:
defaults- Default permissions for new factionslocks- Which permissions factions cannot changeforced- Values to use when a permission is locked
| Permission | Default | Description |
|---|---|---|
outsiderBreak | false | Non-members can break blocks |
outsiderPlace | false | Non-members can place blocks |
outsiderInteract | false | Non-members can interact |
allyBreak | false | Allies can break blocks |
allyPlace | false | Allies can place blocks |
allyInteract | true | Allies can interact |
memberBreak | true | Members can break blocks |
memberPlace | true | Members can place blocks |
memberInteract | true | Members can interact |
pvpEnabled | true | PvP allowed in territory |
officersCanEdit | false | Officers can edit permissions |
{
"enabled": true,
"defaults": {
"outsiderBreak": false,
"outsiderPlace": false,
"outsiderInteract": false,
"allyBreak": false,
"allyPlace": false,
"allyInteract": true,
"memberBreak": true,
"memberPlace": true,
"memberInteract": true,
"pvpEnabled": true,
"officersCanEdit": false
},
"locks": {
"outsiderBreak": false,
"outsiderPlace": false,
"outsiderInteract": false,
"allyBreak": false,
"allyPlace": false,
"allyInteract": false,
"memberBreak": false,
"memberPlace": false,
"memberInteract": false,
"pvpEnabled": false,
"officersCanEdit": false
},
"forced": {
"outsiderBreak": false,
"outsiderPlace": false,
"outsiderInteract": false,
"allyBreak": false,
"allyPlace": false,
"allyInteract": true,
"memberBreak": true,
"memberPlace": true,
"memberInteract": true,
"pvpEnabled": true,
"officersCanEdit": false
}
}
Lock Behavior
When a permission is locked (locks.permName = true), factions cannot change it and the value from forced.permName is always used instead.
Related Topics
- Configuration Guide - Walkthrough and examples
- Power System - Power mechanics explained
- Permissions - Permission nodes
- Admin Commands - Reload command