GFactions Plugin Changelog Version 1.1.0 (Major Overhaul & Feature Release)
Date: May 17, 2025
This is a significant update to GFactions, introducing core systems like Spawnblocks and Outposts, refining existing mechanics, expanding configuration options, and addressing various bugs.
✨ New Features & Systems
Core Spawnblock System:
Factions are now centered around a "Spawnblock" (their primary home location). This is mandatory.
/f create: Now automatically claims the chunk the player is in and sets their current location as the faction's initial Spawnblock.
Spawnblock Relocation: If the chunk containing a faction's Spawnblock is overclaimed, the Spawnblock automatically relocates to a random, valid surface location within another of the faction's claimed chunks.
Claim Adjacency & Connectivity:
Newly claimed chunks (not outposts) must be adjacent to existing faction claims.
Furthermore, these new claims must be part of a contiguous landmass connected to either the main Spawnblock or an Outpost Spawnblock. Disconnected claim "islands" (not outposts) cannot be expanded from.
Outpost System:
Allows factions to establish secondary bases and claim areas not directly connected to their main territory.
/f outpost create: Creates a new outpost in the player's current (wilderness) chunk, establishing it as an Outpost Spawnblock. Costs power.
/f outpost sethome [id]: Sets the specific teleport location for a designated outpost.
/f outpost home [id]: Teleports the player to the specified outpost's home location (with warmup).
/f outpost delete [id]: Deletes a specified outpost and unclaims its chunk.
Configuration:
faction_details.max_outposts: Configurable limit on how many outposts a faction can have (Default: 1).
power.cost.create_outpost: Configurable power cost to create an outpost (Default: 50).
Faction Chat:
/f chat (or /f c): Toggles a faction-specific chat channel for members.
Messages are prefixed with the faction name and are only visible to faction members and online server operators with the goatedfactions.admin.spy permission.
claiming.prevent_claim_near_spawn: (Default: true) Prevents factions from claiming land or establishing their initial Spawnblock too close to the server's global spawn point.
claiming.spawn_protection_radius: (Default: 50 blocks) Defines this protected radius.
goatedfactions.admin.bypassspawnprotection: New permission allows admins to bypass this restriction.
Enhancements & Changes to Existing Features
Claiming & Overclaiming:
Overclaiming Cost: power.cost.overclaim_chunk is now a distinct configuration (Default: 20), separate from the regular claim cost.
Overclaiming a faction's last claim or their Spawnblock chunk now has more defined consequences (e.g., Spawnblock relocation).
Territory Entry Notifications (Titles & Chat):
Title Overwrite: When moving between different territories (Wilderness, Faction X, Faction Y), the on-screen title message will now immediately update/overwrite the previous one.
Private Chat Message: Players will also receive a private chat message (e.g., "Now entering Wilderness", "Now entering [FactionRelationColor][FactionName]") when crossing into new territories. Configurable via messages.entering_wilderness and messages.entering_faction_territory.
Title display cooldown (titles.display_cooldown_seconds) potentially reduced to facilitate quicker updates.
Dynmap Integration:
Seamless Borders: Reworked claim rendering to group contiguous chunks of a faction into single, seamless polygons on the Dynmap, similar to Towny-style maps, rather than showing individual chunk borders within a faction's territory.
Configurable Colors: Added dynmap.style.neutral_claim_color for neutral factions and dynmap.style.stroke_color for the outline of the merged polygons.
Dynmap updates are now more targeted or full refreshes (updateAllFactionClaimsVisuals) are triggered appropriately after claim changes, disbands, etc.
Faction Home (/f home, /f sethome):
These commands now exclusively manage the main faction Spawnblock.
/f sethome requires the location to be within an already claimed chunk of the faction. If set in an existing outpost chunk, that chunk loses its outpost status and becomes the main Spawnblock.
Directly unclaiming the main Spawnblock chunk via /f unclaim is blocked; it must be relocated first via /f sethome or the faction disbanded.
Commands & User Experience:
/f who [faction]: Now displays information about a faction's outposts.
Tab-completion for commands, especially those involving outpost IDs, has been improved.
Help messages (/f help, /f outpost help) updated to reflect new commands and changes.
Configuration File (config.yml):
Numerous new configuration options added (as detailed above for outposts, spawn protection, chat, costs, messages, Dynmap styles).
Default value for power.cost.overclaim_chunk changed.
Permissions:
Added goatedfactions.admin.spy (to see faction chat).
Added goatedfactions.admin.bypassspawnprotection (to claim near server spawn).
Bug Fixes & Code Refinements
Resolved numerous "Cannot resolve method" and "Cannot resolve symbol" errors in command classes (FactionCommand.java, AdminFactionCommand.java) by ensuring all handler methods were fully implemented with correct signatures and variable names.
Added toStringShort() method to ChunkWrapper.java for concise display of chunk coordinates.
Corrected method calls in AdminFactionCommand.java for Dynmap refresh actions (e.g., using updateAllFactionClaimsVisuals).
Improved handling of OfflinePlayer objects to reduce potential for NullPointerExceptions, especially when retrieving names.
Addressed various IDE warnings related to empty if statements, redundant initializers, and @NotNull annotations by refining logic and structure.
Ensured necessary imports (e.g., java.util.Collections) were present.