Repository navigation
FactionPlugin v5.14.2 — Accès aux coffres préservé pendant la dissolution 🧳🔓
🧳 Accès aux coffres préservé pendant la dissolution
Cette release ferme un trou important laissé par la v5.14.0 : la dissolution différée d'une heure laisse désormais un accès garanti à ses coffres et claims, même si l'on quitte la faction pendant l'heure de grâce (volontairement ou par exclusion). Elle ajoute aussi un nettoyage automatique des claims orphelins au démarrage du serveur.
Avant / Après
| Situation | En v5.14.0 / v5.14.1 | En v5.14.2 |
|---|---|---|
Tu fais /faction disband, attends 30 min, puis /faction leave pour rejoindre une autre faction |
❌ Tes coffres & claims deviennent inaccessibles pendant les 30 min restantes — tu perds ton propre butin | ✅ Tes coffres & claims restent accessibles jusqu'à la fin du compte à rebours |
Un chef te fait /faction kick pendant l'heure de grâce |
✅ Tu gardes l'accès jusqu'à la libération effective | |
| Le serveur redémarre pendant l'heure | ✅ Reprise correcte | ✅ Identique, plus nettoyage des claims orphelins au démarrage |
factions.yml hérité d'une version < 5.14.0 avec des chunks encore marqués par une faction qui n'existe plus |
✅ Libérés automatiquement au démarrage | |
purgeGhostFactions toutes les 30 min (v5.14.1) |
✅ Factions vides nettoyées | ✅ Identique, plus purgeOrphanedClaims en parallèle |
🧳 Le problème que ça corrige
La v5.14.0 introduit une dissolution différée d'une heure — le temps de tout récupérer. Mais il y avait un trou temporel embêtant : un membre qui changeait d'avis (rejoindre une faction rivale, être exclu par un chef qui change de stratégie, etc.) se faisait littéralement voler ses coffres au milieu du délai censé le protéger. Aucune action ne permettait de les rouvrir, alors que la faction existait encore techniquement et que les claims n'étaient pas libérés.
🔧 La solution
- Au moment du
scheduleDisband(...)(la demande de dissolution), le plugin ajoute chaque membre actuel à la liste des joueurs autorisés sur tous les claims de la faction, via la nouvelle méthodeClaimManager.allowPlayerOnAllClaims(factionName, uuid). - Cette autorisation est attachée au claim, pas à l'appartenance : elle ne disparaît pas quand le joueur quitte la faction — elle disparaît seulement quand le claim est réellement libéré (à la fin du compte à rebours, ou lors d'un
removeAllClaims(...)). - Le joueur peut donc quitter, être exclu, rejoindre une autre faction, voyager, mourir — ses anciens coffres et claims l'attendent toujours, jusqu'à la libération effective des claims.
🧹 Bonus : purgeOrphanedClaims
La v5.14.1 traitait déjà les factions fantômes (0 membre). La v5.14.2 ajoute un autre cas pathologique possible : des claims orphelins — des chunks encore marqués comme claimés par une faction qui n'existe plus (dissoute avant que la libération automatique des claims n'existe, ou à cause d'un autre bug historique).
Ces claims orphelins étaient deux problèmes :
- Le chunk restait « claimé » par personne — son contenu était inutilisable par qui que ce soit, sans qu'aucune faction n'en soit propriétaire.
- Le coffre que tu y avais mis n'était plus accessible à personne.
La v5.14.2 ajoute :
- Au démarrage du serveur, une passe
purgeOrphanedClaims()identifie toutes les factions propriétaires de claims qui n'existent plus dansfactions.yml, et libère leurs claims. - Toutes les 30 minutes (en parallèle de
purgeGhostFactions), la même vérification est effectuée pour rattraper le cas où une faction serait supprimée par un autre chemin.
ℹ️ Aucune action requise côté admin — la purge s'exécute toute seule.
🔧 Petits correctifs complémentaires
WebMapSync.java: correction d'une erreur de syntaxe JSON ({"cx":...mal échappé, ce qui empêchait la compilation sous Paper 1.21.4).Contract.java: import manquantfr.faction.village.PostType(utilisé sans import) — désormais corrigé.DisbandManager.resumePendingDisbands(): rejoue correctement la dissolution différée après un redémarrage et réautorise les membres viaallowPlayerOnAllClaimssi la dissolution avait été demandée avant la mise à jour vers la v5.14.2 (cas d'une mise à jour pendant le délai d'1 h).
📦 Installation & migration
- Aucune action requise côté admin : remplacer le
.jaret redémarrer suffit. - Aucune migration de données :
purgeOrphanedClaimsfait le ménage dans les chunks orphelins au démarrage, s'il y en a. - Les YAML des versions ≥ v5.0.0 restent compatibles.
📥 Téléchargements
FactionPlugin-5.14.2.jar(≈ 475 KB) — à déposer dansplugins/de votre serveur Paper 1.21.4+FactionPlugin-v5.14.2-source.zip(≈ 251 KB) — code source complet (Maven)
Cette release ne modifie aucune autre commande ou comportement du plugin — uniquement le cas particulier de l'accès aux coffres/claims pendant la dissolution différée, plus le nettoyage automatique des claims orphelins.