Releases: HyperSystemsDev/HyperFactions
HyperFactions v0.10.2
Server Version: 2026.02.19-1a311a592
What's New in v0.10.2
Added
PvE Damage Permission Flag
- New per-role faction permission flag:
PveDamage(4 flags total across outsider/ally/member/officer) - Faction owners can control who can kill mobs in their territory per relationship level
- Defaults: member/officer = allowed, ally = allowed, outsider = denied
- Configurable in
config/faction-permissions.jsonwith server lock support - Territory protection check: players without PvE permission cannot damage mobs in claimed territory
- Faction settings, admin faction settings, and create faction GUIs all include PveDamage toggles
- CrateUse and NpcTame toggles added to Create Faction GUI for parity with Faction Settings (9 → 12 permission rows)
Protection Message Debounce
- New centralized debounce system prevents chat spam from repeated protection denial messages
- Per-player, per-action cooldown (2 seconds) — different action types have independent cooldowns
- Integrated across all 9 protection systems: block break/place/use, harvest/pickup, fluid place/refill, NPC interact, PvP damage, crop harvest
- Automatic cleanup of stale entries every 30 seconds
What's New in v0.10.1
Added
PvE Damage Zone Flag
- New
pve_damagezone flag: controls whether players can damage mobs/NPCs within a zone - Added to Combat category in admin zone settings GUI
- Safe zone preset defaults to PvE damage disabled; PvP zone preset defaults to enabled
- Renamed
mob_damagedisplay name to "Take Mob Damage" for clarity; new flag displays as "Give Mob Damage"
Fixed
- Mob-on-mob damage (both attacker and target UUIDs null) no longer triggers protection checks in mixin hook
HyperFactions v0.10.0
[0.10.0] - 2026-02-27
Closes: #26, #59, #61, #62, #64, #65, #66, #67, #68, #69, #70, #71, #72
Server Version: 2026.02.19-1a311a592
Added
Gameplay
Per-World Settings (#59)
- New
config/worlds.jsonmodule config for per-world behavior overrides - Four settings per world:
claiming,powerLoss,friendlyFireFaction,friendlyFireAlly - Wildcard pattern support using
%(e.g.,arena_%matchesarena_1,arena_pvp) - Priority resolution: exact name match → wildcard patterns (fewer wildcards = higher priority) → default policy
claimBlacklistfor unconditionally blocking claims in specific worlds- Legacy
worldWhitelist/worldBlacklistin CoreConfig still works as fallback when worlds module is disabled - Admin commands:
/f admin world list|info|set|reset
Faction Leaderboard (#67)
- New
/f leaderboardcommand (alias/f top) with sortable rankings - Sort modes: POWER, TERRITORY, BALANCE, MEMBERS, K/D (default)
- 10 entries per page with pagination, numbered rankings
- Integrated into faction nav bar between map and relations
- Aggregated faction K/D ratio from member stats with configurable background cache refresh (
gui.leaderboardKdRefreshSeconds, default 300s)
Faction Power Hardcore Mode (#69)
- New
power.hardcoreModeconfig option (default: false) - Shared faction power pool — deaths/kills affect the faction total directly
- No per-death cap or floor — faction power can reach 0
- Power regen applies to the faction pool when enabled
Persistent Admin Bypass (#71)
- Admin bypass state now persists across server restarts
- Stored in
PlayerData, restored on connect if player hashyperfactions.admin.use - Automatically cleared if player no longer has the permission
Configurable Role Display Names
- New
rolessection inconfig/factions.jsonfor custom role names and abbreviations - Server owners can rename roles (e.g., "Boss" / "Underboss" / "Soldier") and set short forms (e.g., "BO" / "UB" / "SO")
- New placeholders:
factions_role_display(custom name),factions_role_short(abbreviation) - All GUIs, commands, and log messages use configured display names
- Existing
factions_roleplaceholder unchanged (returns internal name)
Instance World Protection
- Default
instance-%wildcard rule inconfig/worlds.jsonblocks claiming in temporary instance worlds (power loss defers to global config) /f sethomenow blocked in worlds where claiming is disallowed- Automatic cleanup of stale claims and homes in disallowed worlds on startup and config reload
Protection
Capture Crate & NPC Tame Protection
- 2 new per-role faction permission flags:
CrateUse(covers both crate pickup and placement),NpcTame(8 new flags total across outsider/ally/member/officer) - 3 new zone flags:
crate_pickup,crate_place,npc_tame— separate zone-level control for crate pickup, crate placement, and NPC taming - Faction owners can independently control capture crate use and NPC taming per relationship level
- Defaults: member/officer = allowed, ally/outsider = denied
- Configurable in
config/faction-permissions.jsonwith server lock support - NPC interaction protection handler uses
NPC_TAMEinteraction type for event-based NPC interaction blocking - Requires HyperProtect-Mixin v1.0.0+ for mixin-based protection (CaptureCrateGate, NPC entries in SimpleInstantInteractionGate)
Zone Notification Settings
- Per-zone notification toggle: suppress entry/leave title notifications for specific zones
- Customizable upper title text (default: zone status like "PvP Disabled")
- Customizable lower title text (default: zone name)
- Admin commands:
/f admin zone notify <zone> <true|false>,/f admin zone title <zone> upper|lower <text|clear> - Zone info (
/f admin zone info) now displays notification settings
GUI & Admin
Activity Log (#68)
- Wired existing
LogsViewerPageinto faction nav bar /f logscommand for viewing faction activity- New
AdminActivityLogPageaggregating logs from all factions - Type filter, player filter, time filter (1h/24h/7d)
/f admin logcommand and admin nav bar integration
Admin K/D Management
- Per-player K/D reset button on admin player info page (two-column redesign)
- New "Actions" page in admin nav with global K/D reset (two-step confirmation)
- Admin commands:
/f admin info [faction]and/f admin who [player]to open admin GUIs directly
Admin Info Page Redesign
- Admin player info now uses two-column layout: stats/info/history on left, controls on right
- Admin player info now mirrors
/f whodata: first joined, last online, faction card with View Faction button, and scrollable membership history - Admin faction info now uses two-column layout: leadership on left, power/economy/disband controls on right
- Disband button added to admin faction info page (danger zone section)
Admin Version Page
- New
/f admin versioncommand — opens GUI for players, prints integration status for console - Admin Version page in nav bar (after Help) showing HyperFactions version, server version, Java version
- Integration status display: HyperPerms, LuckPerms, VaultUnlocked, HytaleNative, HyperProtect, OrbisGuard Mixins, OrbisGuard API, Mixin Hooks, Gravestones, PlaceholderAPI, WiFlow PAPI, Treasury
- Treasury status shows economy provider name via VaultUnlocked (e.g. "Active (Ecotale)")
- Color-coded status: green (active), yellow (installed but limited), gray (not found)
Admin Zone Properties Page
- New consolidated zone properties page combining name editing, type changing, and notification settings
- Zone list entry replaces separate "Rename" and "Type" buttons with single "Settings" button
- Type change modal navigates back to properties page (instead of zone list) when accessed from properties
- Flags page back button returns to properties when opened from properties context
Config & Storage
Config Restructure — Split config.json into Module Configs
- New
config/factions.jsonfor all faction gameplay settings (faction, power, claims, combat, relations, invites, stuck) - New
config/server.jsonfor server behavior settings (teleport, autoSave, messages, gui, permissions, updates, configVersion) - 9 new claim protection server overrides in
config/factions.jsonunderclaims:outsiderPickupAllowed— control outsider item pickup in claims (previously hardcoded deny)outsiderDropAllowed— control outsider item drop in claimsfactionlessExplosionsAllowed,enemyExplosionsAllowed,neutralExplosionsAllowed— granular explosion control replacingallowExplosionsInClaimsfireSpreadAllowed— control fire spread in claims (previously hardcoded block)factionlessDamageAllowed,enemyDamageAllowed,neutralDamageAllowed— outsider entity damage control
- V5→V6 config migration: automatically splits
config.json, transformsallowExplosionsInClaimsinto 3 granular flags, preserves all existing values - Legacy fallback: plugin loads from old
config.jsonif migration fails or hasn't run - Treasury permission flags (
treasuryDeposit,treasuryWithdraw,treasuryTransfer) added tofaction-permissions.jsonfor server-level defaults and locks territoryNotifications.enabledmoved toconfig/announcements.json- Allow Explosions in Claims (#65) — original
territory.allowExplosionsInClaimstoggle, superseded by the 3 granular explosion flags above
Data Directory Restructure
- All data files now live under
data/subdirectory (factions, players, chat, economy, zones, invites, join requests) DataV0ToV1Migrationautomatically moves existing data files intodata/on first startupdata/.versionmarker tracks data layout version independently from config version- Fresh installs create
data/directory directly (no migration needed)
Atomic Writes & Backup Expansion
- All storage types now use
StorageUtils.writeAtomic()for crash-safe writes (economy, invites, join requests upgraded from direct writes) .bakfiles cleaned up after successful atomic writes — no more indefinite accumulation- Backup system now includes chat history, economy, invites, and join requests in ZIP archives
Placeholders
Expanded Placeholders (#72)
- Colored variants:
name_colored,tag_colored,name_colored_legacy,tag_colored_legacy - Legacy color code:
color_legacy(nearest&Xcode from hex color) - Relational placeholders (PAPI only):
rel_factions_relation,rel_factions_relation_color
Treasury Placeholders (#66)
treasury_balance— formatted viaEconomyManager.formatCurrency()treasury_balance_raw— raw Bi...
HyperFactions v0.9.0
[0.9.0] - 2026-02-22
Server Version: 2026.02.19-1a311a592
Closes: #10, #13, #14, #46, #50, #51, #52, #53, #55, #56, #57
Added
Granular Friendly Fire Flags
friendly_fire_faction: Controls whether same-faction members can damage each other (child offriendly_fire)friendly_fire_ally: Controls whether allied faction members can damage each other (child offriendly_fire)- 3-level combat hierarchy:
pvp_enabled→friendly_fire→friendly_fire_faction/friendly_fire_ally. Projectile Damage and Mob Damage remain standalone - Recursive parent check: Admin zone settings GUI greys out grandchildren when any ancestor is OFF (e.g., faction/ally flags disabled when PvP is off)
- Config fallback preserved: When zone
friendly_fireis OFF,config.factionDamageandconfig.allyDamagestill serve as independent overrides - Block Interact as Interaction parent: Moved Block Interact from the Building box into the Interaction box as the parent flag with indented children (Door Use, Container Use, etc.), matching the Mob Spawning pattern
- Backward compatible: Existing zones with
friendly_fire=trueget both children defaulting totrue(same behavior as before). No data migration needed
HyperProtect-Mixin Integration
- ProtectionMixinBridge: Facade that auto-detects which mixin system(s) are available (HyperProtect-Mixin, OrbisGuard-Mixins, or both) and provides a unified API. New
BOTHprovider mode registers OG hooks for OG-handled features and HP hooks for HP’s unique features. Falls back to JAR file detection inearlyplugins/when system properties aren’t set - HyperProtectIntegration: 20 hook wrappers using HyperProtect’s bridge-slot architecture (
AtomicReferenceArrayathyperprotect.bridge), verdict protocol (ALLOW/DENY_WITH_MESSAGE/DENY_SILENT/DENY_MOD_HANDLES). Registers all hooks unconditionally with lazy bridge initialization (creates bridge if not yet present). CachesChatFormatterMethodHandle at slot 15 for cross-classloader message formatting - Auto-download HyperProtect-Mixin: On startup, if HyperProtect-Mixin is not installed and
autoDownloadis enabled, downloads the latest release toearlyplugins/and prompts for server restart. Disabled by default — server logs instructions for manual install or how to enable. Gracefully handles repositories with no published releases (logs info, no crash/error) - Auto-update checking for HyperProtect-Mixin: When HyperProtect-Mixin is installed, checks for newer versions on startup via GitHub Releases API and notifies admins with version comparison (e.g., "v1.0.0 -> v1.1.0"). Configurable via
updates.hyperProtect.autoUpdate(default:true) /f admin update mixin: Manual command to check for and download HyperProtect-Mixin updates (or initial install). Works regardless of auto-download config — creates an on-the-fly UpdateChecker if needed/f admin update toggle-mixin-download: Runtime command to toggle HP-Mixin auto-download on/off, persisted to config- Config:
updates.hyperProtectsection: New nested config section withautoDownload(bool),autoUpdate(bool), andurl(GitHub Releases API endpoint) settings for managing HyperProtect-Mixin lifecycle - 7 new zone flags:
explosion_damage,fire_spread,block_place,hammer_use,builder_tools_use,teleporter_use,portal_use— all mixin-dependent, with SafeZone (false) and WarZone (true) defaults - New “Transport” zone flag category: Groups
teleporter_useandportal_useflags - Unified "Transport" faction permission: Merged
teleporterUseandportalUseinto a singletransportUsepermission per role level (outsider/ally/member/officer). Both teleporter and portal interactions now check the same flag - ~15 new ProtectionChecker methods:
shouldBlockExplosion,shouldBlockFireSpread,checkBuilderTool,checkTeleporter,checkPortal,shouldKeepInventory,shouldPreventDurability,canAccessContainer, and more - Admin zone settings GUI: Updated for 31 total flags (was 24), new flag categories, mixin provider indicator
- Configurable power loss by death cause: New
powerLossOnMobDeathandpowerLossOnEnvironmentalDeathconfig options in thepowersection (both defaulttruefor backward compatibility). Set either tofalseto skip the death power penalty for that cause type while still incrementing kill/death counters and announcing gravestone locations. PvP deaths always incur power loss. Zone flagpower_loss=falsetakes priority over these settings - Death cause tracking:
DamageProtectionHandlernow records the type of each damage event (PVP, MOB, ENVIRONMENTAL) that passes through protection checks intoCombatTagManager, whichPlayerDeathSystemreads at death time to apply the correct power loss policy - JitPack publishing: Added
maven-publishplugin andjitpack.yml— other developers can now depend on HyperFactions viacom.github.HyperSystemsDev:HyperFactions:<version>from JitPack - Standalone build support: Build resolves Hytale server version independently when built outside the monorepo (JitPack, CI)
- Contributor docs: Updated CONTRIBUTING.md and README.md with soft dependency download instructions and CurseForge links
- Developer docs: Updated README and API reference with JitPack dependency instructions, marked WiFlow/Gravestone libs as optional
New Player Experience GUI
- Create faction page redesign: Two-column form combining name, tag, color picker, description, recruitment setting, and full territory permissions with live preview into a single screen. Permission toggles support parent-child hierarchy with server-locked flags greyed out
- New player map terrain mode: New player territory map now respects
terrain-map-enabledconfig, showing terrain imagery with semi-transparent claim overlays matching the faction map style. All claims shown as "Other" since new players have no faction - New player map OG rendering: OrbisGuard-protected regions shown on new player territory map in both flat and terrain modes with dynamic legend entry
Admin Tools
- Admin zone map terrain mode:
/f admin zone mapnow respectsterrain-map-enabledconfig, showing terrain imagery behind semi-transparent zone overlays (75% opacity for current zone, 50% for other zones, 63% for faction claims). UsesChunkMapAssetasync pipeline matching the faction territory map pattern - Admin zone map OG rendering: OrbisGuard-protected regions shown on admin zone map in both flat and terrain modes with dynamic legend entry
OrbisGuard Compatibility
- Hook chaining: All 11 OrbisGuard-Mixins hooks now chain with existing OG hooks instead of overwriting them. When OG registers hooks before HF, the originals are captured and called first — if OG denies the action (region protection), HF respects it; if OG allows, HF applies faction-based checks on top. Hooks are restored to originals on unregister
- OrbisGuard API integration: New
OrbisGuardIntegrationclass provides soft-dependency access to OG's region container via reflection and cached MethodHandles. SupportsgetRegionsAt()for point queries,canCreateClaim()for chunk-level AABB checks, andgetLoadedManagers()for region enumeration - Claim blocking in OG regions: Claims are denied in any chunk that overlaps an OrbisGuard-protected region. Uses
canCreateClaimAPI when available (checks corners, center, and full overlap), falls back to 5-point sampling (4 corners + center). Global (__global__) regions are excluded - World map OG region rendering: OrbisGuard regions are rendered on the world map (M key) as colored overlays using OG's 8-color palette with priority-based stacking, border detection, and opacity blending. Region candidates are pre-filtered per chunk via AABB overlap to minimize per-pixel work
- Territory Map GUI OG rendering: Chunks overlapping OrbisGuard regions are shown as dark orange (
#FF8C00) "Protected" cells in the/f mapchunk grid. Click events are suppressed on protected chunks. Works in both flat and terrain rendering modes - Dynamic legend entry: When OrbisGuard is detected, a "Protected" legend entry with orange swatch is dynamically appended to the Territory Map GUI legend
RegionInforecord: Exposes OG region spatial data (id, world, type, priority, AABB bounds) with chunk coordinate helpers for map rendering
Changed
- Faction settings UI redesign: Rotated the permission grid — permissions are now rows with role columns (Out/Ally/Mem/Off) instead of role rows with permission columns. Fixes "Processing" truncation, eliminates crowding, and makes adding future permissions trivial (just add rows). Building and Interaction permissions unified into a single "Territory Permissions" section with parent-child indentation
- Faction permission flags: Reduced from 49 to 45 flags by merging 8 teleporter/portal flags (4 each) into 4 transport flags.
ALL_FLAGSupdated accordingly - Data migration:
JsonFactionStorageautomatically migrates oldteleporterUse/portalUseflags totransportUseon load using OR logic (permissive — allows if either was allowed) - *Plugin initialization...
HyperFactions v0.8.1
[0.8.1] - 2026-02-17
Server Version: 2026.02.17-255364b8e
Fixed
- Map GUI crash: Fixed
NoSuchMethodErroronPacketHandler.write(Packet[])— changed toToClientPacket[]for server compatibility - World map generator: Fixed generator not being set on live worlds added after startup
- Server version warning: Manifest now specifies target server version (prevents PluginManager "does not specify a target server version" warning)
Added
- Centralized player resolution (
PlayerResolver): Unified player name lookup used across all commands and GUIs — resolves online players, then faction member records, then PlayerDB API as fallback - Offline player support: Treasury transfer search,
/f who,/f power, and admin commands now resolve offline players via faction member records and PlayerDB - Search debounce: Treasury transfer search waits 500ms after last keystroke before searching to avoid spamming PlayerDB API
- PlayerDB integration: New
PlayerDBServiceutility for looking up any Hytale player by username (5-minute TTL cache, min 3-char query for API calls) - Debug logging: Added diagnostic logging to player connection, online player search, world map setup, and world map generation
Changed
- Target-aware build: Compile against release or prerelease server JAR via
-PhytaleTargetGradle flag
HyperFactions v0.8.0
Closes: #30, #31, #32, #34, #36
Added
Help Center Redesign
- Guide-first help GUI: Complete rewrite of the help system from command-dump format to conceptual guides with commands woven in contextually
- Wide sidebar layout (750x650): Colored category sidebar with 7 topic categories, scrollable card-based content area replacing the old flat list
- 7 help categories: Welcome (cyan), Your Faction (green), Power & Land (gold), Diplomacy (blue), Combat & Safety (red), Economy (orange), Quick Reference (gray) — each with unique accent color on sidebar
- 22 guide-first topics: Organized into conceptual guides that teach game mechanics with commands referenced in context, rather than raw command lists
- Typed content entries: New
HelpEntryrecord with 5 entry types (TEXT, COMMAND, TIP, HEADING, SPACER) replacing fragile string-based line type detection - i18n foundation (
HelpMessages.java): All help content uses message key lookups (HelpMessages.get("help.welcome.title")) — hardcoded English now, locale file loading in the future - Deep-linking support:
/f <command> helpopens directly to the relevant category (e.g.,/f claim helpopens Power & Land) - Card-based topic rendering: Dark background cards with teal titles, body text, yellow command callouts, green tips, and teal sub-headings
- All 43 commands verified: Quick Reference section verified against actual command implementations with correct syntax and permission requirements
- Deleted 8 obsolete UI templates, added 5 new templates (topic card, line text, line tip, line heading, spacer)
Faction Treasury & Economy System (#36)
- Treasury page (
/f treasury): Full GUI with balance display, deposit/withdraw buttons, transfer system, transaction log, and treasury settings — accessible from the faction nav bar - Deposit/Withdraw modals: Amount input with live preview, fee calculation display, and balance validation via VaultUnlocked player wallets
- Transfer system: Search factions by name, confirm transfer with fee preview, complete inter-faction treasury transfers
- Treasury settings page: Officers can configure deposit/withdraw limits, toggle auto-pay upkeep, and view fee rates
- Transaction log: Scrollable history of all treasury activity (deposits, withdrawals, transfers, admin adjustments) with timestamps and actor names
- Economy CLI commands:
/f balance,/f deposit <amount>,/f withdraw <amount>,/f moneyfor quick treasury access without GUI - Admin economy page (
/f admin economy): Server economy overview with total balance, faction count, average balance stats, and sortable/searchable faction treasury list with per-row Adjust and Info buttons - Admin economy adjust modal: Set exact balance or add/deduct amounts with live preview, faction info card, and error display
- Admin economy CLI (
/f admin economy <balance|set|add|take|total|reset> ...): Full console-compatible treasury management - Economy stats on admin dashboard: Total economy, wealthiest faction, and average balance cards (conditionally visible when economy enabled)
- Economy stats on faction dashboard: Treasury balance, next upkeep, and personal wallet cards (conditionally visible)
- Treasury info on admin faction info page: Balance display in stats grid, "Adjust Balance" and "View Treasury" quick action buttons in Economy Management section
- Treasury balance on faction info page: Gold-colored treasury card visible to all players when economy is enabled
- Economy configuration (
economy.json): Starting balance, treasury limits (deposit/withdraw min/max/daily), transfer fees, upkeep settings, fee rates - VaultUnlocked integration: Player wallet operations (balance check, deposit, withdraw) via VaultUnlocked economy API
- Faction permissions for economy:
DEPOSIT,WITHDRAW,TRANSFER,MANAGE_TREASURYpermission flags per role hyperfactions.admin.economypermission node for admin economy operationsECONOMYdebug category withLogger.debugEconomy()— togglable via/f admin debug toggle economyanddebug.jsonconfigUiUtilshared utility class for CustomUI text sanitization and amount parsing
Player Info & Membership History (#32)
- Player info page (
/f who [player]): Full GUI page with faction membership, power stats, combat stats (kills/deaths/KDR), and membership history - Membership history tracking: Records all faction joins, leaves, kicks, and disbands with timestamps, highest role achieved, and leave reason
- Player data expansion: New
PlayerDatamodel withfirstJoined,lastOnline, kills, deaths, username caching, and membership history — backwards-compatible with existing player JSON files - "View Profile" button on members page to navigate to player info
/f admin clearhistory <player>command to clear a player's membership history- Upgrade migration: Existing faction members automatically get an active membership record on first startup, using their actual faction join date and current role
- First joined / last online tracking displayed on the player info page header
maxMembershipHistoryconfig option (default: 10) to cap history records per player
Admin Power Management (#34)
- Admin power command (
/f admin power): Full admin control over player power — set, adjust, reset, per-player max override, power loss bypass, claim decay exemption - Admin Player Info page: GUI page accessible from admin member list with power controls, bypass toggles, and kick/promote/demote actions
- Faction bulk power operations: Reset All / +/-1/5 All buttons on AdminFactionInfoPage
ADMIN_POWERlog type for faction activity logshyperfactions.admin.powerpermission node
Terrain Map Mode (#30)
- Terrain map mode for territory GUI: Territory map now renders actual terrain imagery behind claim overlays using
ChunkWorldMap, making it much easier to orient yourself and identify terrain features when claiming (rivers, biomes, elevation) - Dynamic terrain image asset delivery via
ChunkMapAsset— generates a composite PNG from chunk world map data and sends it to the player's client at runtime - Static placeholder
Map.pngsent immediately on page open, with terrain loading asynchronously in the background - Semi-transparent claim color overlays on top of terrain: own (green), ally (blue), enemy (red), other (gold), safe zone (teal), war zone (purple), wilderness (transparent)
- Clickable cells for claim/unclaim actions in terrain mode (officers only)
- Centered "+" player marker via dedicated
chunk_map_marker.uitemplate - Compact 2-row legend showing all territory types and player marker
terrainMapEnabledconfig toggle in GUI section (default:true) — set tofalseto revert to the flat colored grid
Admin GUI Improvements
- Admin players page (
/f admin players): New admin page for browsing all known server players with search, sort (Name/Faction/Power/Last Online), expandable entries with power stats, faction membership, and quick actions (View Profile, View Faction, Teleport) - Admin search on all list pages: Added search bars to admin factions, admin faction members, and admin zones pages matching the faction browser search pattern
- Admin zone sort dropdown: Zones can now be sorted by Name, Type, Chunks, or World (previously name-only)
- Admin faction members overhaul: Upgraded from read-only list to full admin tool with search, sort dropdown (Role/Online/Name/Power), pagination (8 per page), and 700x500 container matching the admin factions page layout
getAllPlayerUuids()storage method for admin player list enumeration
Relations Redesign
- Relations page redesign: Merged three tabs (Allies/Enemies/Pending) into two tabs (Relations/Pending) with collapsible row entries showing faction name, leader, relation badge, member count, power stats, and inline quick actions (View, Set Neutral, Set Enemy, Request Ally, Accept, Decline, Cancel)
Faction-Aware Map & Compass Visibility (#31)
- Player visibility filtering on world map and compass: Only faction members and allies are visible by default — enemies, neutrals, and factionless players are hidden from the map and compass
- Configurable per-relation visibility:
showOwnFaction,showAllies,showNeutrals,showEnemies,showFactionlessPlayers,showFactionlessToFactionlessinworldmap.jsonunderplayerVisibility - Master toggle (
playerVisibility.enabled) to disable filtering entirely (vanilla behavior: all players visible) hyperfactions.bypass.mapfilterpermission — player can see all others on map regardless of faction filterhyperfactions.bypass.mapvisibilitypermission — player is always visible to everyone on the map- Filters update automatically on faction join/leave/kick/disband and relation changes
Fixed
- Zone power loss flag ignored on death —
PlayerDeathSystempassed already-converted chunk coordinates togetZoneAt()(which expects world coordinates), causing a double conversion that looked up the wrong chunk. Zone flags likepower_loss=falsewere never applied. Changed togetZone()which accepts chunk coordinates directly. - Zone flags reset on server restart: WarZone migration code ran on every startup and unc...
HyperFactions v0.7.4
Added
power_losszone flag: Controls whether players lose faction power on death in a zone (default:falsefor both SafeZone and WarZone — no power loss in admin zones)- Config migration v4→v5: Removes deprecated
warzonePowerLossconfig option (replaced by per-zonepower_lossflag) - Zone settings GUI now shows Power Loss toggle in the Death category
- HytaleNative permission provider: Automatic compatibility with any permission plugin that registers with Hytale's native PermissionsModule (LuckPerms, PermissionsPlus, etc.)
- LuckPerms permission discovery: All 53 HyperFactions permission nodes register with LuckPerms' PermissionRegistry on boot for web editor autocomplete
- Lazy initialization for permission providers: LuckPerms and VaultUnlocked providers now retry initialization on first use if they failed at startup
- Integration detail commands:
/f admin integration luckperms,vaultunlocked, andnativenow provide detailed status - Console support for admin commands: All admin commands that don't require player context now work from the server console
- LuckPerms and VaultUnlocked declared as SoftDependencies in manifest.json
Fixed
- Fluid protection via interaction codecs: Liquid placement and fluid pickup now blocked in protected zones and faction territory via
PlaceFluidandRefillContainercodec replacements (no mixin dependency) - WarZone denial message: Zone-denied actions in WarZones now show "You cannot do that in a WarZone." instead of the generic fallback
- LuckPerms prefix/suffix not showing in chat: Lazy init ensures the LuckPerms provider retries on first chat message when LuckPerms is loaded
- VaultUnlocked provider using wrong class paths: Corrected class paths, method names, and Optional unwrapping
- Admin commands crashing on world thread assertion: Restructured to dispatch player commands back to world thread
- WiFlow PlaceholderAPI NoClassDefFoundError: Wrapped in try-catch for NoClassDefFoundError
- PermissionRegistrar silent failure: Changed to private field access for LuckPerms plugin field
- World-specific permissions not working with HyperPerms: HyperPermsProviderAdapter now calls context-aware hasPermission with auto-resolved player contexts
Full Changelog: https://github.com/HyperSystemsDev/HyperFactions/blob/main/CHANGELOG.md
HyperFactions v0.7.3
Fixed
- Startup crash when GravestonePlugin is outdated:
GravestoneIntegration.init()threwNoSuchMethodErrorwhen an older Gravestones version was installed without the v2 API (getInstance()). Now catchesLinkageError(covers both missing plugin and missing methods) so HyperFactions starts cleanly regardless of Gravestones version.
HyperFactions v0.7.2
[0.7.2] - 2026-02-11
Added
Integration Flags GUI Sub-Page
- New Admin Zone Integration Flags page for configuring integration-specific zone flags
- Accessible via "Integration Flags" button in Zone Settings footer
- Shows
gravestone_accessflag with clear description - Dedicated Reset to Defaults button (only clears integration flags)
- Integration flags disabled with "(no plugin)" indicator when not installed
Expanded Admin Integrations Command
/f admin integrationsnow shows all 7 integrations organized by category/f admin integration <name>detail views for all integrations
Fixed
- GUI crash on promotion: Players with the faction GUI open would crash when another player promoted/demoted a member, due to stale ActivePageTracker entries
- World map empty after teleport: Batch refresh was using nuclear wipe instead of surgical chunk invalidation
- Placeholders not resolving for factionless players: Both PAPI and WiFlow expansions returned null instead of empty defaults
- Set Relation search interrupting typing: Modal reopened on every keystroke instead of using partial updates
GravestonePlugin Integration
Note: The gravestone integration requires a new release of GravestonePlugin that includes the v2 API with AccessChecker and events. This is pending review in zurkubusiness/gravestones#2. Until that PR is merged and released, the integration will detect the plugin but the AccessChecker will not be registered.
- Reflection-based soft dependency on Zurku's GravestonePlugin for faction-aware gravestone protection
- Faction-aware access control for gravestone break and collection events
- Admin bypass and
hyperfactions.gravestone.bypasspermission support - Death location announcements for faction members
- New
/f admin gravestonecommand andconfig/gravestones.jsonmodule config
Changed
- Zone flag
gravestone_accessdisplay name changed to "Others Loot Graves" for clarity - Placeholder expansions (PAPI + WiFlow) now return empty strings/defaults for factionless players instead of null
HyperFactions v0.7.1
What's New in 0.7.0 → 0.7.1
Added
Faction & Alliance Chat Overhaul (0.7.1)
- Persistent chat history with per-faction JSON storage and debounced disk writes
- Chat history GUI page with Faction/Ally tabs, scrollable message list, and send-from-GUI input
- Toggle-only chat command:
/f ccycles modes,/f c f,/f c a,/f c off - Configurable colors and prefixes per channel in
config/chat.json - Ally tab merges all allied faction messages into a chronological timeline
- Automatic retention cleanup and real-time GUI push for new messages
Dashboard Chat Mode Button (0.7.1)
- Unified chat toggle replacing separate F-Chat/A-Chat buttons
- Cycles Public → Faction → Ally with color-coded labels
Server-Wide Faction Announcements (0.7.0)
- Broadcasts for faction creation, disbands, leadership transfers, overclaims, wars, and alliances
- Per-event toggles in
announcements.json
Create Faction Page Redesign (0.7.0)
- Single two-column wizard with preview, color picker, and permission defaults
Permission-Based GUI Filtering (0.7.0)
- Nav bar, dashboard buttons, and action buttons auto-hide when the player lacks permission
Real-Time GUI Updates (0.7.0)
- All GUI pages refresh automatically when data changes (claims, members, relations, invites)
PlaceholderAPI & WiFlow Integration (0.7.0 + 0.7.1)
- 30+ placeholders for scoreboards, holograms, and menus
- Refactored for cleaner resolution and consistent null handling
Other Additions
- GUI map player position now shows "+" marker instead of solid white cell
- Configurable
allowWithoutPermissionModfor servers without a permission plugin - Backup retention with automatic cleanup
- Admin faction list quick-action buttons (Members, Settings)
Changed
- Chat command no longer supports one-shot
/f c <message>(use toggle mode) - War zone color changed from red to purple on GUI maps
- Non-faction players now see the correct new player nav bar
- Admin faction settings unified with normal settings layout
- GUI button styles migrated to custom
$S.@ButtonStyle, ALL CAPS → Title Case
Fixed
- Shadow JAR clobbering in multi-project builds
- Overclaim/teleport messages now use configured prefix
- Faction member events properly published for promote/demote
- Non-faction nav bar routing
Full Changelog: https://github.com/HyperSystemsDev/HyperFactions/blob/main/CHANGELOG.md
HyperFactions v0.7.0
Closes Issues
- #7 — Announcement system for major faction events
- #16 — Add data import from ElbaphFactions
- #18 — Integrate with Better Scoreboard for faction placeholders
- #22 — Hide GUI buttons when player lacks permission
- #23 — Add Placeholders for scoreboards, holograms, and menus
Added
Server-Wide Faction Announcements
- New
announcements.jsonmodule config with master toggle and per-event toggles - Broadcasts to all online players for: faction created/disbanded, leadership transfer, overclaim, war declared, alliance formed/broken
- Admin actions and auto-disbands do not trigger announcements
Create Faction Page Redesign
- Single two-column page with preview card, name/tag/description inputs, color picker, territory permission toggles, and PvP toggle
Permission-Based GUI Filtering
- Nav bar entries and action buttons respect server permissions
Real-Time GUI Updates
- GUI pages refresh automatically when data changes (members, relations, claims, invites)
PlaceholderAPI Integration
- Soft dependency on PlaceholderAPI and WiFlow PlaceholderAPI for scoreboards and chat
ElbaphFactions Data Importer
- Import factions, claims, and zones from ElbaphFactions
Configuration
allowWithoutPermissionModboolean for servers without a permission mod- Configurable faction permissions with lock/override support (config v3→v4 migration)
- Configurable backup retention, combat tag duration, power gain/loss
GUI Map Improvements
- Player position shows white "+" marker overlaid on chunk color
Changed
- Admin faction settings layout unified with boxed sections
- GUI Native UI Audit: custom button styles, Title Case text, cleaned up styles.ui
- War zone color changed from red to purple on all GUI maps
- Non-faction players now see the new player nav bar on shared pages
Fixed
- Overclaim notification and teleport messages use configured prefix instead of hardcoded "HyperFactions"
- Faction member events properly published for promote/demote
- Non-faction players seeing wrong nav bar
Full Changelog: https://github.com/HyperSystemsDev/HyperFactions/blob/main/CHANGELOG.md