HomePlugin 0.7.9 – TPA System Integration & Improvements Latest
## ✨ New Features & Enhancements
✅ **New TPA System (Teleport Requests)**
- Added `/tpa`, `/tpaccept`, `/tpdeny` with full tab-completion support.
- Requests are now stored via an abstraction `TpaRequestStore` with two implementations:
- **LocalTpaRequestStore** (in-memory, fast for single-server setups)
- **RedisTpaRequestStore** (shared across multiple servers, ideal for networks)
- Players can only teleport once the target accepts the request.
- Added configurable **TPA timeout** (`Config.Tpa.Tpa-duration`, default: 30 seconds).
✅ **Improved Tab Completion**
- `/tpaccept <player>` and `/tpdeny <player>` now suggest only valid requesters.
- Dynamically pulls data from cache/Redis for real-time accuracy.
✅ **CacheManager Integration**
- Centralized access for all active TPA requests.
- Supports both Redis and Local modes seamlessly.
---
## Internal Changes
- Refactored `TpaRequestStore` to unify Redis & Local implementations.
- Added `getAllTpaSenders()` + `getTpaTarget(UUID)` to simplify request lookups.
- Safer cleanup of expired or invalid TPA requests.
- Enhanced Redis handling with UUID-safe storage and retrieval.
---
## Language Updates
Added new language entries in `french.yml`, `english.yml`, and `custom.yml`:
- `Tpa.Request-Sent` → "You have sent a teleport request to {player}"
- `Tpa.Request-Received` → "{player} has sent you a teleport request. Use /tpaccept or /tpdeny."
- `Tpa.Request-Expired` → "Your teleport request to {player} has expired."
- `Tpa.No-Pending` → "You have no pending TPA requests."
---
## Notes
- ⚙️ If running in a **networked setup**, enable Redis in `config.yml`.
- All changes remain backward-compatible.
- Update language files manually with `/lang update`.