# GFactions Plugin Changelog
**Version:** (e.g., v1.2.1 / Internal Update)
**Date:** May 18, 2025
This update introduces new controls for claiming land in different dimensions and includes several enhancements for stability and functionality.
---
## ✨ New Features
### 1. Dimension-Specific Claiming Control
- **Nether Claiming:** Added a configuration option (`claiming.allow_nether_claiming`) to enable or disable faction land claiming in The Nether.
- Default: `false` (Disabled)
- **End Claiming:** Added a configuration option (`claiming.allow_end_claiming`) to enable or disable faction land claiming in The End.
- Default: `false` (Disabled)
- **Implementation:**
- Checks are now performed in `GFactionsPlugin.createFactionAndReturn()` when a faction is first created (for the initial home claim).
- Checks are also performed in `GFactionsPlugin.claimChunk()` for all subsequent land claims, including those for outpost creation.
- Players will receive an informative message if they attempt to claim land in a dimension where claiming is disabled.
---
## ️ Improvements & Bug Fixes
### Core Plugin (`GFactionsPlugin.java`)
- **Configuration Handling:**
- Successfully loads the new `allow_nether_claiming` and `allow_end_claiming` settings from `config.yml`.
- **Claiming & Faction Creation Logic:**
- Centralized dimension claiming rule enforcement within core plugin methods.
- Improved the system for identifying the relevant player to receive feedback messages during claim operations.
- Added a clear success message to the `claimChunk` operation.
- Enhanced `unclaimChunkPlayer` to provide feedback on both success and failure.
- Integrated a spawn protection check directly into `createFactionAndReturn` for the faction's initial claim.
- **Ally System:**
- Players attempting to send an ally request via `sendAllyRequest` will now receive feedback if a request is already pending to or from the target faction.
- **Data Loading (`loadFactionsData()`):**
- Made `ownerUUID` parsing more robust with improved error logging for invalid UUIDs.
- Enhanced handling of faction home locations (`homeLocation`): if a home location's world is not loaded on startup, a warning is logged, and the home may need to be reset.
- Ensured that all claims specifically associated with an `Outpost` are correctly registered in the faction's global claim list and the plugin-wide `claimedChunks` map during the data loading process.
- Standardized `enemyDeclareTimestamps` keys to be loaded in lowercase to prevent case-sensitivity issues.
- Added checks for `null` item stacks within faction vaults during loading and will log a warning for any invalid items found.
- **Data Saving (`saveFactionsData()`):**
- Improved the saving mechanism for `homeLocation` to be more cautious if the world associated with the location is null (a warning will be logged).
- Standardized `enemyDeclareTimestamps` keys to be saved in lowercase.
- The `pendingMemberInvites` and `pendingAllyRequests` sections in `factions.yml` will now only be written if they actually contain pending invites/requests, leading to a cleaner data file.
- **Utility Methods & Stability:**
- Added necessary null checks to `getFactionOwningChunk(Chunk chunk)` to prevent errors if the chunk or its world is unexpectedly null.
- Introduced a new helper method: `getFactionOwningChunkAsFaction(Chunk chunk)`.
- Implemented various minor logging improvements and additional null checks throughout the plugin to enhance overall stability and aid in troubleshooting.
- Removed several unused import statements from the class.
---
## ⚙️ Configuration Changes (`config.yml`)
The following settings were added to the `claiming:` section of the `config.yml` file:
```yaml
claiming:
# ... other claiming settings ...
allow_nether_claiming: false # Set to true to allow claiming in The Nether
allow_end_claiming: false # Set to true to allow claiming in The End
File Modifications Summary
- Config.txt (representing config.yml):
- Updated to include the new allow_nether_claiming and allow_end_claiming options.
- GFactionsPlugin.java:
- Implemented the core logic for dimension-specific claiming.