Skip to content

FactionPlugin v5.14.2 — Accès aux coffres préservé pendant la dissolution 🧳🔓

Choose a tag to compare

@herocraftlol herocraftlol released this 14 Sep 18:05
· 1 commit to release-v5.14.2 since this release

🧳 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 perdais l'accès à tes coffres le temps qu'il reste ✅ 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 ⚠️ Restait bloqué ✅ 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éthode ClaimManager.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 :

  1. Le chunk restait « claimé » par personne — son contenu était inutilisable par qui que ce soit, sans qu'aucune faction n'en soit propriétaire.
  2. 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 dans factions.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 manquant fr.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 via allowPlayerOnAllClaims si 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 .jar et redémarrer suffit.
  • Aucune migration de données : purgeOrphanedClaims fait 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 dans plugins/ 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.