/
Version 1.2.0
Date: May 17, 2025
This changelog outlines the significant features, improvements, and bug fixes implemented for the GFactions plugin, reflecting the evolution from earlier designs to a more robust system.
Faction Home & Territory System (Formerly Spawnblock):
/f create). This initial claim is free of power cost./f claim) requires adjacency to the faction's main home territory or one of its outpost territories. Connectivity to a spawn point (home or outpost) is crucial for maintaining territory integrity.Outpost System:
/f outpost subcommands for establishing and managing secondary claim areas, distinct from the main faction home territory./f outpost create: Allows creation of an outpost in a wilderness chunk, establishing a new, independent claim anchor. This has a configurable power cost and a server-wide limit per faction./f outpost sethome [id]: Designates or relocates the specific teleportation point (home) within an existing outpost's claimed territory. The target location must be within a chunk already claimed by that specific outpost./f outpost home [id]: Allows faction members to teleport to the designated home point of a specified outpost./f outpost delete [id]: Removes a specified outpost and unclaims all land specifically associated with it.Faction Chat:
/f chat (alias /f c) to toggle a private chat channel exclusively for faction members.goatedfactions.admin.spy permission can silently view all faction chat messages.config.yml.Server Spawn Claim Protection:
goatedfactions.admin.bypassspawnprotection permission.config.yml.Claiming & Overclaiming:
power.cost.overclaim_chunk)./f create is free. Subsequent claims via /f claim have a configurable power cost.Territory Entry Notifications:
config.yml (e.g., messages.entering_wilderness, messages.entering_faction_territory), allowing for dynamic color-coding based on relation.Dynmap Integration:
stroke_color for the merged polygon borders and neutral_claim_color for factions that are not self, allied, or enemy.Faction Home Management:
/f sethome is now exclusively used to set or relocate the main faction home point within the faction's primary claimed territory (not outpost land)./f unclaim is prevented on the chunk containing the main faction home if it's the last piece of main territory land; the home must be relocated first using /f sethome in another valid chunk, or the faction disbanded. Similar protection exists for the last claim of an outpost's spawn chunk.Configuration (config.yml):
power.cost.create_outpost: Power cost to create a new outpost.faction_details.max_outposts: Maximum number of outposts a faction can own.faction_details.faction_chat_format: Customizable format for faction chat messages.claiming.prevent_claim_near_spawn and claiming.spawn_protection_radius: For server spawn protection.messages.entering_wilderness and messages.entering_faction_territory: For customizable territory entry chat messages.stroke_color and neutral_claim_color.Commands & User Experience:
/f who [faction_name] now displays information about a faction's outposts, including their IDs and locations./f outpost subcommands, suggesting outpost IDs where applicable./f help, /f outpost help) now include power costs for relevant commands.FactionCommand.java, AdminFactionCommand.java, and listener classes by ensuring correct method implementations, parameter matching, proper imports, and correct variable scoping (e.g., Player player casting in FactionCommand)./f create, outpost creation, unclaims), relation changes, or disbands. Ensured updateFactionClaimsVisual and updateFactionRelations are called appropriately.NullPointerExceptions in PlayerClaimBoundaryListener by ensuring default message strings are always loaded from config or hardcoded safely, and by adding null checks for world objects.FactionCommand.java for handling the return values and side-effects of core plugin methods (e.g., ensuring power is deducted only on successful operations for faction creation, claiming, declaring relations).OfflinePlayer name handling in commands like /f who and /f list to gracefully manage cases where a player's name might not be resolvable, using UUID fallbacks or "Unknown" placeholders.GFactionsPlugin.java and Outpost.java to correctly save and load outpost data, including their specific claim sets and spawn locations./f outpost delete might not have fully cleaned up all associated claims from both the faction's internal list and the global claim map, or could error if an outpost was in an inconsistent state.ChatColor objects and integers by ensuring explicit string conversion (e.g., String.valueOf()) in user-facing messages within FactionCommand.java.Faction.java's broadcastMessage method was correctly implemented and utilized by FactionCommand.java.Faction#relocateHomeToRandomClaim) to better handle scenarios with no remaining main territory and the conversion of outposts.Faction#removeClaim to correctly handle consequences for home and outpost spawn chunks.Faction#lateInitPluginReference is consistently called after loading factions to correctly initialize transient plugin-dependent fields and re-validate data like outpost IDs and world references./f create (the faction's home chunk) is now explicitly free of any power cost. Subsequent claims incur costs as defined.onEnable sequence in GFactionsPlugin.java now includes more detailed logging for each initialization step (config loading, spawn location, data loading, command/listener registration, tasks, Dynmap) to aid in diagnosing any startup issues.config.yml and factions.yml (or your faction data file). This allows the plugin to generate new files with all the current options and default values, preventing potential conflicts or missing settings, especially for new message formats, outpost configurations, and spawn protection.PlayerClaimBoundaryListener now uses a configurable cooldown (titles.display_cooldown_seconds) for sending on-screen titles to prevent spam, but chat messages for territory changes are still sent.