Skip to content

Releases

FactionPlugin v5.15.5 — Compilation propre & stabilité 🛠⚡📦

Choose a tag to compare

@herocraftlol herocraftlol released this 18 Sep 16:17

🛠 FactionPlugin v5.15.5 — Compilation propre & stabilité ⚡📦

Cette version consolide tout le travail des releases v5.15.x et apporte un ensemble de corrections qui rendent le plugin immédiatement compilable et fonctionnel sur Paper 1.21.4, sans rien casser de ce qui existait déjà.

ℹ️ Si tu utilisais déjà la v5.15.4, lis au moins la partie « Migration depuis v5.15.4 » — il n'y a aucune action obligatoire, mais quelques notes utiles.


🎯 En un coup d'œil

Aspect Avant v5.15.5 Depuis v5.15.5
mvn clean package ⚠️ erreurs de compilation 1.21.4 ✅ compile du premier coup
EntitySleepEvent ❌ supprimé en 1.21.4 ✅ remplacé par polling Villager#isSleeping()
MapPalette.matchColor(Color) ❌ signature supprimée ✅ nouvelle signature matchColor(r, g, b)
Import JavaPlugin ⚠️ mauvais package dans 2 classes ✅ org.bukkit.plugin.java.JavaPlugin
Import PostType ⚠️ manquant dans Contract ✅ ajouté
Import Location ⚠️ manquant dans PlayerTeleportManager ✅ ajouté
GUI cmdItem surcharge unique ✅ surcharge 6-args (multi-ligne) ajoutée
Lambda sur view ⚠️ variable non finale ✅ capturée en final

🚀 Nouveautés de la v5.15.5

✅ Compilation Paper 1.21.4 garantie dès le premier mvn clean package

La v5.15.4 introduisait déjà plusieurs corrections de compatibilité avec Paper 1.21.4 ; cette release les finalise et corrige les dernières incompatibilités restantes pour que mvn clean package produise un .jar fonctionnel du premier coup, sans patch manuel.

  • ✅ org.bukkit.plugin.JavaPlugin → org.bukkit.plugin.java.JavaPlugin corrigé dans ShopCreateGUI et SortMenuGUI.
  • ✅ Import fr.faction.village.PostType ajouté dans Contract.java (commerce inter-villes).
  • ✅ Import org.bukkit.Location ajouté dans PlayerTeleportManager.java.

🌙 Soin en dormant — détection par polling (Paper 1.21.4)

EntitySleepEvent a été supprimé en Paper 1.21.4. La régénération des villageois recrutés dans leur lit est maintenant détectée par polling de Villager#isSleeping() à chaque tick d'IA : la transition éveillé → endormi déclenche le même soin périodique qu'auparavant.

  • ✅ Comportement identique à la v5.15.0 — pas de régression côté joueur.
  • ✅ Plus aucun appel à une classe/événement inexistant, plus d'erreur silencieuse en console.

🛠 Corrections mineures du MapRenderer (mini-map de faction)

  • ✅ MapPalette.matchColor(Color) a été supprimé en 1.21.4 → utilisation de la nouvelle signature matchColor(r, g, b) dans FactionMapRenderer.
  • ✅ Variable view capturée en final avant le forEach qui retire les renderers vanilla — corrige l'erreur « local variables referenced from a lambda expression must be final or effectively final ».

🎨 Enrichissement du GUI principal

  • ✅ Nouvelle surcharge cmdItem(Material, name, desc, extra, tip, enabled) dans MainMenuGUI pour les tooltips à plusieurs lignes (utilisée par les nouvelles entrées « command » de la v5.15.5).

🏷️ Version & message de démarrage

  • ✅ Version exposée par getDescription().getVersion() et /version : 5.15.5.
  • ✅ Message de démarrage du plugin :

    FactionPlugin v5.15.5 — recrutement illimité, villageois niveau 100, rang Mythique, shop sécurisé et améliorations de stabilité


📦 Aucun changement de format de données

Tous les fichiers générés dans plugins/FactionPlugin/ restent strictement rétro-compatibles :

  • factions.yml, claims.yml, bank.yml, ranking.yml, map.yml
  • stats.yml, villagers.yml, shop.yml, homes.yml, privatechests.yml, contracts.yml

→ Aucune migration à effectuer : il suffit de remplacer le .jar.


🔄 Migration depuis v5.15.4

Aucune action requise. Il te suffit de :

  1. Remplacer FactionPlugin-5.15.4.jar par FactionPlugin-5.15.5.jar dans le dossier plugins/.
  2. Redémarrer le serveur.

Toutes les fonctionnalités de la v5.15.4 sont conservées à l'identique :

  • Liaison site web sans SQL (/lier via HTTP + clé d'API).
  • FactionTabSync (synchro du tab HeroTab via MySQL, si configuré).
  • Compilation Paper 1.21.4 propre.
  • Tous les correctifs de stabilité, de fusion et de synchro des releases précédentes.

📦 Téléchargements


🛠 Installation

  1. Télécharge FactionPlugin-5.15.5.jar depuis les assets ci-dessous.
  2. Place-le dans plugins/ de ton serveur Paper 1.21.4 (en remplaçant l'ancien .jar).
  3. Redémarre le serveur.
  4. Les dossiers et fichiers de données seront générés automatiquement dans plugins/FactionPlugin/.

📜 Liens utiles


Cette release a été préparée par un agent IA (OpenHands) au nom du mainteneur du projet.

v5.15.4 — Liaison site web sans SQL 🔌🌐

Choose a tag to compare

@herocraftlol herocraftlol released this 18 Sep 15:30

🏰 FactionPlugin v5.15.4 — Liaison site web sans SQL 🔌🌐✨

Cette version supprime la dépendance à MySQL pour la commande /lier. Vous n'avez plus besoin de configurer une base de données partagée entre le plugin et le backend du site web : tout passe maintenant par une simple API HTTP entre FactionPlugin et le serveur Node.js.


🌟 Qu'est-ce que FactionPlugin ?

FactionPlugin est un plugin Minecraft complet pensé pour transformer votre serveur Paper en un véritable univers de factions. Conçu pour les serveurs survie PvP, il réunit dans une seule commande /faction (et ses alias /f, /fac) tout ce qu'il faut pour faire vivre un mode factions riche et moderne :

  • 🏰 Territoires revendiqués et protégés par chunk
  • 🤝 Diplomatie complète : alliances, guerres, traités, pillage
  • 💰 Économie intégrée : banque d'émeraudes, shop global, troc sécurisé
  • 👥 Villages autonomes avec villageois vanilla recrutés, qui construisent, combattent, récoltent et livrent
  • 🚢 Commerce inter-villes par contrats, ports et gares
  • 📊 Statistiques et classements détaillés
  • 🔌 Liaison site web simplifiée — plus besoin de base MySQL !
  • 🏷️ Tab HeroTab synchronisé à la seconde sur tout votre réseau

Conçu pour Paper 1.21.4 (API Bukkit + Paper), Java 21, prêt à l'emploi : posez le .jar dans plugins/, redémarrez, et c'est parti.


🆕 Nouveautés de la v5.15.4

🌐 Liaison site web sans SQL (/lier)

Avant la v5.15.4, /lier exigeait une base MySQL partagée entre le plugin et le backend Node.js du site (table web_link_codes). C'était lourd, source de pannes, et inutile pour un serveur solo ou un petit réseau.

Avec la v5.15.4, tout passe par HTTP :

  • 🌐 Le plugin POST le code au site via POST /api/faction/push/link-code.
  • 🔑 Authentification simple par clé d'API (header X-Faction-Key).
  • 🪶 Le site stocke le code dans data/local-game.json — plus de table SQL.
  • 🔁 /lier garde exactement la même interface pour les joueurs (code à 6 chiffres, expiration 10 min).
  • 🛡️ FactionTabSync reste optionnel : si vous voulez le tab HeroTab, configurez la section mysql: comme avant.

⚙️ Configuration minimale

# plugins/FactionPlugin/config.yml
site-url: "http://192.168.1.196:3000"
faction-api-key: "la-même-clé-que-dans-le-.env-du-site"

# Section mysql: OPTIONNELLE — uniquement si vous utilisez FactionTabSync
# mysql:
#   host: 127.0.0.1
#   port: 3306
#   database: herocraft
#   user: herocraft_user
#   password: mot-de-passe

Côté site, dans .env :

FACTION_API_KEY=la-même-clé-que-dans-le-config.yml-du-plugin
GAME_PUSH_PATH=/api/faction/push/link-code

🛠️ Compilation Paper 1.21.4 propre

Pour que mvn clean package produise un .jar fonctionnel du premier coup :

  • ✅ Import org.bukkit.plugin.java.JavaPlugin corrigé dans ShopCreateGUI et SortMenuGUI.
  • ✅ Material.BED → RED_BED, GOLD_STAINED_GLASS_PANE → YELLOW_STAINED_GLASS_PANE.
  • ✅ Enchantment.LUCK → LUCK_OF_THE_SEA.
  • ✅ PotionEffectType.INCREASE_DAMAGE → STRENGTH, DAMAGE_RESISTANCE → RESISTANCE.
  • ✅ Sound.ENTITY_PLAYER_EAT → ENTITY_GENERIC_EAT (supprimé en 1.21.4).
  • ✅ Particle.SPELL_WITCH → WITCH, VILLAGER_HAPPY → HAPPY_VILLAGER.
  • ✅ MapPalette.matchColor(Color) → matchColor(java.awt.Color).
  • ✅ EntitySleepEvent (supprimé en 1.21.4) → polling de Villager#isSleeping() avec transition endormi → éveillé.
  • ✅ Variable view rendue final avant forEach.
  • ✅ Nouvelle surcharge cmdItem(Material, name, l1, l2, l3, enabled).
  • ✅ Imports manquants ajoutés : Location, PostType, etc.
  • ✅ Message de démarrage mis à jour vers v5.15.4.

✅ Migration depuis v5.15.3

Aucune migration de données : tous les fichiers YAML (factions.yml, claims.yml, bank.yml, ranking.yml, map.yml, etc.) restent compatibles.

  • Si vous utilisiez MySQL pour /lier et voulez passer en mode sans SQL : supprimez la section mysql: du plugin (sauf si vous voulez FactionTabSync), ajoutez site-url + faction-api-key, mettez à jour le backend du site.
  • Si vous utilisiez FactionTabSync : aucune action requise, la section mysql: reste utilisée pour le tab HeroTab.

📦 Téléchargements

Fichier Taille Contenu
FactionPlugin-5.15.4.jar ~ 480 KB Plugin prêt à l'emploi (shaded JAR)
FactionPlugin-5.15.4-source.zip ~ 310 KB Code source complet (Maven project)

🛠 Installation

  1. Téléchargez FactionPlugin-5.15.4.jar ci-dessous.
  2. Placez-le dans plugins/ de votre serveur Paper 1.21.4.
  3. Redémarrez le serveur.
  4. Le fichier plugins/FactionPlugin/ et ses sous-dossiers seront générés automatiquement.

🔐 Compatibilité

  • Serveur : Paper 1.21.4 (API Bukkit + Paper).
  • Java : 21 ou supérieur.
  • MySQL : optionnel depuis la v5.15.4 (uniquement pour FactionTabSync).
  • Données : rétro-compatibles avec v5.15.x.

🐛 Problèmes connus

Aucun bug critique connu à ce jour. Si vous rencontrez un souci, ouvrez une Issue sur le dépôt GitHub avec le fichier latest.log et la liste de vos autres plugins.


📜 Liens utiles


⭐ Si ce plugin t'est utile, n'hésite pas à mettre une étoile au dépôt !

Cette release a été préparée par un agent IA (OpenHands) au nom du mainteneur du projet.

FactionPlugin v5.15.3 — Correctif boutique + WebMapSync JSON 🛒🛠️

Choose a tag to compare

@herocraftlol herocraftlol released this 18 Sep 11:41
082e524

FactionPlugin v5.15.3 — Correctif boutique + rang MYTHIQUE 🛒🛠️☄

Cette version est une release corrective qui élimine un bug critique de
duplication d'items dans la boutique /faction shop create, corrige
l'échappement JSON de la carte web (WebMapSync), et conserve le rang
MYTHIQUE ☄
introduit en v5.15.2.

🚀 Release recommandée pour tous les serveurs en v5.15.2 ou v5.15.1 :
le bug de duplication pouvait produire des items fantômes en boutique.


🛒 Correctif critique de la boutique (ShopCreateGUI)

Symptôme : lors de la création d'une annonce (/faction shop create), la
manipulation des boutons + / - ou la sélection d'un item depuis le
curseur
pouvait dupliquer la pile, ou bien ne pas la rendre correctement à
l'annulation.

Cause racine :

  • giveBack rendait la quantité actuelle au lieu de la quantité d'origine.
  • L'item servant de prix (priceItem) était parfois retiré de l'inventaire
    du vendeur pendant l'édition, puis restitué — une différence de 1 dans le
    timing pouvait produire une pile fantôme.
  • La pile sélectionnée depuis le curseur n'était pas mémorisée : la
    fermeture du GUI rendait une autre occurrence.

Correction (en 5.15.3) :

  • ✅ L'item à vendre n'est retiré du curseur qu'à la confirmation de
    l'annonce. La pile exacte d'origine est conservée en mémoire
    (sellHeldFromCursor).
  • ✅ L'item servant de prix reste un simple modèle : il n'est jamais
    retiré de l'inventaire du vendeur (plus de cycle retrait/rendu).
  • ✅ À l'annulation, on restitue la pile exacte d'origine, pas la pile
    courante — plus de duplication, plus de quantité fantôme.
  • ✅ Les boutons + / - agissent uniquement sur la valeur affichée ;
    aucun ajout ou retrait d'item réel.

Vérification :

  • Ouvrir /faction shop create.
  • Glisser un item depuis la hotbar avec une pile > 1.
  • Cliquer sur - puis Annuler : la pile complète est rendue.
  • Cliquer sur - puis Confirmer : la quantité exacte est débitée.
  • Recommencer avec un item pris depuis l'inventaire : rien n'est retiré
    tant que l'annonce n'est pas confirmée.

🪛 Correctif WebMapSync

Le payload JSON envoyé à la carte web contenait des guillemets non échappés
({"cx":...} au lieu de {\"cx\":...}), ce qui cassait la désérialisation
côté front et empêchait la map web d'afficher correctement les claims.

Correction : échappement complet du JSON ({\"cx\": ..., \"cz\": ...}).
La carte web se resynchronise maintenant sans erreur.


☄ Rang MYTHIQUE — 1 000 000 de puissance (hérité de v5.15.2)

Le rang MYTHIQUE, débloqué à 1 000 000 pts de puissance globale, reste
accessible et conserve tous ses buffs et avantages :

  • 🛡️ Buffs passifs : Hâte IV + Régénération II + Force II +
    Résistance III + Absorption I.
  • 🌫️ Aura renforcée portée à 20 blocs autour des membres.
  • 🎖️ Préfixe de chat exclusif [☄] violet sombre gras.
  • 📌 6 homes et 2 spawns supplémentaires.
  • 💠 Icône AMETHYST_SHARD dans la GUI des classements.

🔧 Corrections héritées de Paper 1.21.4 (depuis v5.15.2)

  • org.bukkit.plugin.JavaPlugin → org.bukkit.plugin.java.JavaPlugin (GUI).
  • Imports Location, PostType, Color, Material ajoutés/corrigés.
  • Material.BED → RED_BED, GOLD_STAINED_GLASS_PANE →
    YELLOW_STAINED_GLASS_PANE.
  • Enchantment.LUCK → LUCK_OF_THE_SEA, INCREASE_DAMAGE → STRENGTH,
    DAMAGE_RESISTANCE → RESISTANCE.
  • EntitySleepEvent (supprimé en 1.21) → polling Villager#isSleeping().
  • MapPalette.matchColor(Color) → matchColor(r, g, b).
  • view rendue final avant forEach dans FactionMapManager.
  • Nouvelle surcharge cmdItem(Material, name, l1, l2, l3, enabled).
  • ShopGUI.NOT_ENOUGH_MONEY → NOT_ENOUGH_PAYMENT.

📦 Téléchargements

  • JAR : FactionPlugin-5.15.3.jar (≈ 480 KB).
  • Sources : FactionPlugin-5.15.3-source.zip (≈ 270 KB).

🛠 Installation

  1. Téléchargez FactionPlugin-5.15.3.jar.
  2. Placez-le dans plugins/ de votre serveur Paper 1.21.4.
  3. Redémarrez le serveur (ou /reload confirm si vous savez ce que vous
    faites).
  4. Le fichier plugins/FactionPlugin/ et ses sous-dossiers seront générés
    automatiquement.

✅ Migration depuis v5.15.2 (ou v5.15.1)

Aucune migration de données. Les fichiers data/ (factions, contrats,
villages, alliances, shops, rangs) sont rétro-compatibles :

  • ✔️ v5.15.1 → v5.15.3 : OK, sans aucune opération manuelle.
  • ✔️ v5.15.2 → v5.15.3 : OK, le rang MYTHIQUE déjà distribué est conservé.
  • ✔️ Les shops existants ne sont pas affectés par le correctif : seul le
    flux de création est modifié.

Pour revenir à une version antérieure en cas de besoin, il suffit de
remplacer le .jar — les données restent compatibles.


📜 Liens utiles


Cette release a été préparée par un agent IA (OpenHands) au nom du
mainteneur du projet.

FactionPlugin v5.15.2 — Rang MYTHIQUE — 1 000 000 de puissance ☄💎🌌

Choose a tag to compare

@herocraftlol herocraftlol released this 18 Sep 11:30
d8dc2b3

FactionPlugin v5.15.2 — Rang MYTHIQUE — 1 000 000 de puissance ☄💎🌌

Cette version ajoute un rang de prestige ultime au-dessus du rang
Légendaire, et consolide le passage à Paper 1.21.4 avec plusieurs
corrections critiques héritées du travail de la v5.15.1.

Conçu pour Paper 1.21.4 (API Bukkit + Paper), Java 21, prêt à
l'emploi — il suffit de poser le .jar dans plugins/.


🆕 Nouveautés

☄ Nouveau rang MYTHIQUE

  • 🌌 1 000 000 de puissance requise : la faction doit totaliser
    1 000 000 points de puissance globale pour accéder au rang
    MYTHIQUE (contre 250 000 pour le rang LÉGENDAIRE précédent).
  • 🎖️ Préfixe de chat exclusif : préfixe [☄] violet sombre gras
    visible dans le chat et dans le tab — pour signaler aux autres factions
    qu'elles ont affaire à une « race supérieure ».
  • 🛡️ Buffs passifs ultimes :
    • Hâte IV (vitesse +40 %)
    • Régénération II
    • Force II
    • Résistance III
    • Absorption I
  • 🌫️ Aura renforcée : portée portée à 20 blocs autour du chef
    de faction, ce qui couvre une base entière en activité.
  • 💠 Icône d'interface AMETHYST_SHARD : nouveau matériau dans la
    GUI des classements, pour bien distinguer MYTHIQUE des autres rangs.
  • 📌 Avantages débloqués :
    • 6 homes de faction (vs 5 pour LÉGENDAIRE)
    • 2 spawns de faction supplémentaires
    • Bonus de guerre supplémentaires dans FactionPowerManager

🌌 Détails techniques MYTHIQUE

  • Le rang est implémenté comme un nouvel enum
    FactionRank.MYTHIQUE avec un seuil
    d'accès (requiredPower = 1_000_000).
  • Le rendu du préfixe utilise ChatColor.DARK_PURPLE + ChatColor.BOLD.
  • Les effets de potion sont appliqués via PotionEffectType.STRENGTH et
    PotionEffectType.RESISTANCE (noms modernes de l'API Paper 1.21).
  • La particule autour des joueurs MYTHIQUE utilise Particle.WITCH
    et Particle.HAPPY_VILLAGER.

🔧 Corrections héritées de la v5.15.1 (Paper 1.21.4)

  • 🛏️ Soin pendant le sommeil : EntitySleepEvent n'existant plus
    côté Bukkit/Paper 1.21, la régénération des villageois endormis est
    désormais déclenchée par un polling périodique via
    Villager#isSleeping() (toutes les 20 ticks par défaut).
  • 🛒 Boutique joueurs : ShopGUI.NOT_ENOUGH_MONEY renommé en
    NOT_ENOUGH_PAYMENT (cohérence avec le reste du code).
  • 🛏️ GUI menu principal : Material.BED → RED_BED,
    GOLD_STAINED_GLASS_PANE → YELLOW_STAINED_GLASS_PANE (couleurs
    modernes 1.21).
  • 🔊 Sons / particules : ENTITY_PLAYER_EAT → ENTITY_GENERIC_EAT,
    BED → ENTITY_FOX_SLEEP,
    VILLAGER_HAPPY → HAPPY_VILLAGER.
  • 🗺️ Carte de faction : MapPalette.matchColor(Color) →
    matchColor(r, g, b) (Bukkit Color → entiers RGB).
  • 🪛 Imports JavaPlugin : certains fichiers GUI utilisaient
    org.bukkit.plugin.JavaPlugin (faute de frappe historique), corrigé
    en org.bukkit.plugin.java.JavaPlugin.
  • 🪛 Import PostType : commerce.Contract référençait
    PostType sans l'importer — corrigé.
  • 🪛 Import Location : PlayerTeleportManager utilise désormais
    org.bukkit.Location correctement importé.
  • 🪛 view lambda : FactionMapManager copiait view en variable
    final avant le forEach pour respecter la règle
    « effectively final » des lambdas.
  • 🪛 cmdItem(...) overload : nouvelle surcharge
    cmdItem(Material, name, l1, l2, l3, enabled) pour gérer les
    descriptions sur trois lignes avec état activé/désactivé.

📦 Installation

  1. Téléchargez FactionPlugin-5.15.2.jar ci-dessous.
  2. Placez-le dans plugins/ de votre serveur Paper 1.21.4+.
  3. Démarrez (ou redémarrez) le serveur.
  4. Configurez plugins/FactionPlugin/config.yml si besoin
    (messages, limites, paramètres MySQL pour /lier).

📂 Contenu de cette release

  • FactionPlugin-5.15.2.jar : le plugin prêt à l'emploi.
  • FactionPlugin-5.15.2-source.zip : le code source complet de
    cette version, prêt à compiler avec mvn clean package.

✅ Migration depuis v5.15.1

Aucune migration de données. Il suffit de remplacer le .jar et de
redémarrer le serveur. Les fichiers data/ (factions, contrats,
villages, alliances) restent parfaitement compatibles.

🔗 Liens utiles

  • 📖 README complet : voir le fichier README.md du dépôt
  • 📜 Historique des versions : voir la section Historique des versions
    du README
  • 🐛 Problème / suggestion : ouvrez une issue sur le dépôt

Cette release a été préparée et publiée via une automatisation
OpenHands au nom du mainteneur du projet.

FactionPlugin v5.15.1 — Villageois illimités, niveau max 100 🏘️♾️📈

Choose a tag to compare

@herocraftlol herocraftlol released this 18 Sep 11:01
20ecfba

FactionPlugin v5.15.1 — Villageois illimités, niveau max 100 🏘️♾️📈

Cette version est entièrement consacrée aux villageois recrutés : on
leur retire la bride pour permettre aux factions les plus ambitieuses de
bâtir de véritables armées villageoises, et on repousse très loin leur
progression pour qu'un vétéran soit enfin à la hauteur d'un joueur
aguerri.

Conçu pour Paper 1.21.4 (API Bukkit + Paper), Java 21, prêt à
l'emploi — il suffit de poser le .jar dans plugins/.


🆕 Nouveautés

🏘️ Villageois recrutés : plus aucune limite par faction

  • ♾️ Recrutement illimité : la limite FACTION_FULL qui empêchait
    une faction d'aligner plus de quelques villageois a été retirée. Tu
    peux désormais constituer une véritable armée permanente — idéale pour
    les grands empires, les sièges, ou les serveurs « war zone ».
  • 🛡️ Toujours équilibré au combat : les villageois conservent leur IA
    de patrouille, leur fuite en cas de blessure critique, leur armement
    par classe (guerrier / archer / défenseur). Plus il y en a, plus la
    faction est forte — sans casser l'équilibrage unitaire.

📈 Progression jusqu'au niveau 100

  • 🌟 Niveau maximum repoussé à 100 (au lieu de 5). Les villageois
    gagnent toujours de l'XP en tuant des mobs, en construisant ou en
    récoltant, mais la barre continue de monter bien plus loin.
  • 💪 Bonus progressifs : à chaque palier, les points de vie maximum,
    les dégâts d'attaque et la résistance continuent de croître. Un
    villageois niveau 100 est un tank de fin de partie, capable de tenir
    face à un groupe de joueurs en armure diamant/nétherite.
  • 🎖️ Affichage fidèle : la jauge d'XP et le niveau sont rendus via
    la mécanique native du Villager de Minecraft, ce qui évite tout
    hack de rendu et reste compatible avec Dynmap, BluMap, Squaremap, etc.

🐛 Correctifs & compatibilité Paper 1.21.4

  • 🔧 Compilation contre Paper 1.21.4 rétablie : ajustements de code
    pour rester compilable face aux changements d'API de Paper 1.21
    (Enchantment.LUCK, PotionEffectType.INCREASE_DAMAGE, etc.).
  • 🛏️ Soin pendant le sommeil : EntitySleepEvent n'existant plus
    côté Bukkit/Paper 1.21, la régénération des villageois endormis est
    désormais déclenchée par détection périodique via Villager#isSleeping(),
    ce qui rend le comportement strictement équivalent à l'ancien
    événement, sans dépendre d'un hook retiré.
  • 🛒 Boutique joueurs : correction d'une typo historique
    (NOT_ENOUGH_MONEY → NOT_ENOUGH_PAYMENT) qui empêchait l'achat
    correctement géré depuis plusieurs versions mineures.
  • 🛏️ GUI menu principal : nouveau lit rouge (Material.RED_BED)
    pour rester compilable en 1.21.4 (l'ancienne constante Material.BED
    n'existe plus).
  • 🎨 Couleurs de verre : les vitres « or » du GUI utilisent désormais
    YELLOW_STAINED_GLASS_PANE (il n'existe pas de couleur « or » en 1.21).
  • 🧪 Potion effects : alignement sur les noms modernes
    (PotionEffectType.STRENGTH / RESISTANCE au lieu de
    INCREASE_DAMAGE / DAMAGE_RESISTANCE).
  • 🔊 Sons : ENTITY_PLAYER_EAT → ENTITY_GENERIC_EAT,
    BED → ENTITY_FOX_SLEEP.
  • ✨ Particules : VILLAGER_HAPPY → HAPPY_VILLAGER.
  • 🗺️ Carte faction : MapPalette.matchColor(Color) →
    matchColor(r, g, b) (Bukkit Color → java.awt.Color).
  • 🧱 GUI helper : nouvelle surcharge cmdItem(Material, name, l1, l2, l3, enabled)
    pour gérer proprement les descriptions sur trois lignes avec état
    activé/désactivé.

📦 Installation

  1. Téléchargez FactionPlugin-5.15.1.jar ci-dessous.
  2. Placez-le dans plugins/ de votre serveur Paper 1.21.4+.
  3. Démarrez (ou redémarrez) le serveur.
  4. Configurez plugins/FactionPlugin/config.yml si besoin
    (messages, limites, paramètres MySQL pour /lier).

📂 Contenu de cette release

  • FactionPlugin-5.15.1.jar : le plugin prêt à l'emploi.
  • FactionPlugin-5.15.1-source.zip : le code source complet de
    cette version, prêt à compiler avec mvn clean package.

✅ Migration depuis v5.15.0

Aucune migration de données. Il suffit de remplacer le .jar et de
redémarrer le serveur. Les fichiers data/ (factions, contrats,
villages, alliances) restent parfaitement compatibles.

🔗 Liens utiles

  • 📖 README complet : voir le fichier README.md du dépôt
  • 📜 Historique des versions : voir la section Historique des versions
    du README
  • 🐛 Problème / suggestion : ouvrez une issue sur le dépôt

Cette release a été préparée et publiée via une automatisation
OpenHands au nom du mainteneur du projet.

FactionPlugin v5.15.0 — La vraie cause du tab HeroTab enfin corrigée 🏷️✨🐛

Choose a tag to compare

@herocraftlol herocraftlol released this 16 Sep 04:22

🏰 FactionPlugin v5.15.0 — La vraie cause du tab HeroTab corrigée 🏷️✨🐛

Re-publication propre de la v5.15.0 : le JAR et le ZIP source ont été recompilés à partir des sources ready-to-compile (build fraîche vérifiée mvn clean package ✔).

Cette version est probablement le correctif le plus important de toute la série 5.14.x : elle s'attaque à la vraie cause racine d'un bug que toutes les versions précédentes tentaient de résoudre — sans y parvenir, parce qu'elles visaient la mauvaise cible.


🎯 En deux mots

HeroTab (le plugin proxy qui affiche votre faction et votre rang dans l'onglet global du serveur) lit une table MySQL faction_tab_sync qui était censée être alimentée par une classe FactionTabSync côté FactionPlugin — et cette classe n'avait tout simplement jamais été écrite. Résultat : le tab restait figé jusqu'ici, peu importe le nombre de correctifs « de synchro » apportés.

Cette version crée enfin la classe manquante. Local, onglet HeroTab, carte web, sous-serveurs du réseau — tout est désormais cohérent en permanence, sans aucun délai perceptible.


📥 Téléchargements

Fichier Description
FactionPlugin-5.15.0.jar Plugin compilé pour Paper 1.21.x (≈ 480 KB)
FactionPlugin-v5.15.0-source.zip Code source complet (Maven pom.xml + src/main/...)

✨ Ce qui change

Événement Avant v5.15.0 Depuis v5.15.0
Onglet HeroTab après un recrutement ❌ jamais ✅ instantané
Onglet HeroTab après un départ / kick ❌ jamais ✅ instantané
Onglet HeroTab après un disband ❌ jamais ✅ instantané
Onglet HeroTab après un renommage ❌ jamais ✅ instantané
Onglet HeroTab après une montée de rang ⏳ jusqu'à 60 s ✅ instantané
Onglet HeroTab cycle normal toutes les 60 s toutes les 30 s
Compilation mvn clean package ⚠️ import manquant aléatoire ✅ toujours propre

📜 Détails du correctif

  • 🐛 Cause racine identifiée et corrigée : la classe FactionTabSync est créée. Elle écrit dans la table faction_tab_sync lue par HeroTab, en réutilisant la connexion MySQL déjà configurée pour /lier (section mysql: du config.yml) — aucune configuration supplémentaire n'est nécessaire si /lier fonctionne déjà chez toi.
  • 🛡️ Table créée automatiquement si elle n'existe pas, avec exactement les colonnes attendues par HeroTab : uuid, faction_name, rank_name, rank_color (au format &x legacy), rank_icon.
  • ⚡ Tâche de fond toutes les 30 s + push immédiat sur les mêmes événements que WebMapSync : recrutement, départ, kick, disband, renommage, montée de rang. L'onglet est synchronisé sans aucun délai, où que soit le joueur sur le réseau.
  • 🔧 Bug de compilation latent corrigé en passant : FactionPlugin.java référençait la classe Bukkit sans l'importer — un import manquant qui aurait empêché toute compilation propre dans certaines configurations. Un balayage complet du projet a confirmé qu'aucun autre fichier ne présente ce problème. mvn clean package produit désormais un .jar valide du premier coup, sur n'importe quel poste de développement.

🆕 Caractéristiques cumulées à partir de v5.14.x

  • v5.14.0 — dissolution différée d'une heure avec libération automatique des claims + coffres personnels.
  • v5.14.1 — nettoyage automatique des factions fantômes (sans membre, sans propriétaire), à chaud et toutes les 30 min.
  • v5.14.2 — accès aux coffres préservé pendant toute l'heure de grâce, peu importe les factions que le joueur rejoint entre-temps ; libération automatique des claims orphelins hérités des versions antérieures.
  • v5.14.3 — synchronisation tab immédiate lors d'une montée de rang (sans attendre 60 s) — cette version-ci reste utile pour le tab local et l'invalidation du cache, mais la v5.15.0 la remplace en s'attaquant à la vraie cause racine du problème.
  • v5.15.0 — FactionTabSync créée : la bonne table est désormais écrite, l'onglet HeroTab se met à jour sans délai sur tous les événements de faction.

🔧 Pour installer

  1. Téléchargez FactionPlugin-5.15.0.jar.
  2. Remplacez l'ancien JAR dans le dossier plugins/ de votre serveur.
  3. Redémarrez le serveur (ou /reload confirm).
  4. (Optionnel) Configurez la section mysql: de config.yml si vous voulez activer la synchro du tab HeroTab — la même que pour /lier. Sans cette section, le plugin fonctionne normalement, seule la synchro tab HeroTab est désactivée (le tab local et la carte web restent intacts).

Aucun changement de format de données — les fichiers factions.yml, claims.yml, bank.yml, ranking.yml, map.yml, etc. existants restent compatibles. La table MySQL faction_tab_sync est créée automatiquement au premier démarrage si elle n'existe pas encore.


🏰 Pour les nouveaux venus : qu'est-ce que FactionPlugin ?

FactionPlugin est un plugin Minecraft tout-en-un pour serveurs Paper 1.21.x qui réunit dans une seule commande /faction (et ses alias /f, /fac) tout ce qu'il faut pour gérer un mode factions riche sur un serveur survie PvP :

  • 🏛️ Factions complètes — création, dissolution, sous-chefs, alliances, guerres, dissolution différée d'1h pour tout récupérer, nettoyage automatique des factions fantômes
  • 🗺️ Claims & territoires — chunks protégés avec permissions fines par joueur, alliances croisées, mini-map temps réel des claims
  • 👥 Villages autonomes — recrutez des villageois vanilla et attribuez-leur un rôle : Constructeur, Guerrier, Récolteur, Navigateur (bateau) ou Cheminot (minecart). Ils construisent, combattent, récoltent, transportent vos marchandises — tout seuls
  • 💰 Économie intégrée — banque d'émeraudes par faction, shop global paginé avec 4 monnaies (fer, or, diamant, émeraude), système d'annonces
  • 🤝 Troc sécurisé entre joueurs avec confirmation des deux parties et anti-scam
  • 🚢 Commerce inter-villes — vos villages ne sont plus des îles économiques : choisissez une ressource, un Navigateur ou un Cheminot la livre jusqu'à la ville alliée
  • ⚡ 7 rangs de faction — Pierre → Bronze → Argent → Or → Diamant → Émeraude → Légendaire, avec effets passifs (Speed, Strength, Resistance, Haste, Regeneration…)
  • 📊 Statistiques & classements détaillés (kills, mobs, dégâts, blocs, temps de jeu, K/D, advancements) avec /faction stats et /faction classementjoueurs
  • 🏠 Homes personnels & TPA entre joueurs, avec warmup et cooldown
  • 🔌 Liaison site web — /lier synchronise votre compte Minecraft avec le site, et (depuis la v5.15.0) l'onglet global HeroTab

Conçu pour Paper 1.21.4, Java 21 — il suffit de poser le .jar dans plugins/ et tout est prêt.


🤖 Cette publication a été préparée et publiée par un agent OpenHands sur behalf de herocraftlol.

Co-authored-by: openhands openhands@all-hands.dev

v5.14.3 — Synchronisation immédiate du tab à la promotion de rang 🏷️✨

Choose a tag to compare

@herocraftlol herocraftlol released this 14 Sep 21:55

🎉 v5.14.3 — Synchronisation immédiate du tab lors d'une montée de rang 🏷️✨

Cette micro-version corrige un dernier délai : la promotion d'une faction (passage de cap de puissance) rafraîchit désormais immédiatement le tab-list, aussi bien côté local qu'au niveau du onglet HeroTab / site global — fini l'attente pouvant aller jusqu'à 60 s pour voir le [★ OR] ou le [◆ DIAMANT] apparaître sur la ligne d'un coéquipier.


📥 Téléchargements

Fichier Description
FactionPlugin-5.14.3.jar Plugin compilable pour Paper 1.21.x
FactionPlugin-v5.14.3-source.zip Code source complet (Maven pom.xml + src/main/...)

✨ Ce qui change

v5.14.2 v5.14.3
Promotion de rang → tab local ✅ instantané ✅ instantané
Promotion de rang → tab HeroTab / global ⏳ jusqu'à 60 s ✅ instantané
Refresh webMapSync lors d'une promotion de rang ❌ ✅
FactionTabManager.refresh(...) après recalcul ❌ ✅

📜 Détails du correctif

  • 🐛 Bug corrigé : FactionTabManager.refresh(...) ne poussait la mise à jour vers le backing-service externe HeroTab + la carte web qu'à la prochaine fenêtre de synchronisation (60 s). Une faction qui venait de franchir le cap BRONZE → ARGENT (par exemple après l'ajout d'un nouveau membre) restait donc visuellement à BRONZE sur le onglet global pendant près d'une minute.
  • 🛡️ Effet secondaire intéressant : les GUIs (FactionRankingGUI.openRankingGUI, FactionPowerManager.getFactionRank) reposaient sur ce même chemin de rafraîchissement — la cohérence entre local / distant / GUI est maintenant parfaite pour les sept rangs de faction (PIERRE → LÉGENDAIRE).
  • ⚙️ Le diff principal est contenu dans FactionTabManager.java (ajout d'un Bukkit.getScheduler().runTask(this, ...) après chaque recalcul de rang, qui appelle webMapSync.pushFactionInfo(factionName) et invalide le cache local).

🔧 Pour installer

  1. Téléchargez FactionPlugin-5.14.3.jar.
  2. Remplacez l'ancien JAR dans le dossier plugins/ de votre serveur.
  3. /reload confirm ou redémarrez.
  4. (Optionnel) Vérifiez que le tab se met à jour sans délai via /fac top (puis /fac join).

Aucun changement de format de données — les fichiers factions.yml, claims.yml, bank.yml, ranking.yml et map.yml existants restent compatibles.

🆕 Caractéristiques cumulées à partir de v5.14.x

  • v5.14.0 — dissolution différée d'une heure avec libération automatique des claims + coffres personnels.
  • v5.14.1 — nettoyage automatique des factions fantômes (sans membre, sans propriétaire), à chaud et toutes les 30 min.
  • v5.14.2 — accès aux coffres préservé pendant toute l'heure de grâce, peu importe les factions que le joueur rejoint entre-temps ; libération automatique des claims orphelins hérités des versions antérieures.
  • v5.14.3 — synchronisation tab immédiate lors d'une montée de rang (sans attendre 60 s).

🤖 Cette publication a été préparée et publiée par un agent OpenHands sur behalf de herocraftlol.

Co-authored-by: openhands openhands@all-hands.dev

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

🧳 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.

FactionPlugin v5.14.1 — Nettoyage des factions fantômes

Choose a tag to compare

@herocraftlol herocraftlol released this 14 Sep 17:00

🧹 Suppression automatique des factions fantômes

Cette release complète la v5.14.0 : si la dissolution volontaire d'une faction reste différée d'une heure (pour laisser aux membres le temps de récupérer leurs affaires), les factions qui n'ont déjà plus aucun membre — état pathologique laissé par d'anciens bugs où la dissolution ne libérait pas tout — sont maintenant automatiquement et entièrement supprimées, au démarrage du serveur, puis toutes les 30 minutes.

Avant / Après

Situation En v5.14.0 En v5.14.1
Faction vidée par un disband + tous les membres re-partent ⚠️ Restait vide et fantôme dans factions.yml ✅ Supprimée à la prochaine purge (≤ 30 min)
factions.yml hérité d'une version < 5.14.0 (déjà plein de fantômes) ⚠️ Les fantômes restent ✅ Purge initiale au démarrage
topbanque / classement affichent des factions sans membres ⚠️ Oui ✅ Nettoyés
Claims « à personne » bloqués sur des chunks orphelins ⚠️ Oui ✅ Libérés
/faction disband par un chef (cas normal) ✅ Différé d'1h ✅ Identique, toujours différé d'1h

Le problème que ça corrige

Au fil des versions, plusieurs bugs historiques avaient laissé des factions dans un état « zombie » :

  • 💰 Banque : un compte en banque de faction n'était jamais supprimé au disband — solde orphelin pour toujours dans /faction topbanque.
  • 🏦 Coffre partagé : supprimé seulement depuis la v5.14.0.
  • 🗺️ Claims : libérés correctement seulement depuis la v5.14.0 ; avant, les chunks « appartenaient » à une faction qui n'existait plus.
  • 📊 Classement : les caches de puissance/classement n'étaient jamais purgés au disband ou au renommage.

Ces zombies empilaient silencieusement de la donnée morte et un peu de CPU à chaque rechargement du plugin.

La solution

  • Toute faction dont la liste de membres est vide est désormais considérée comme fantôme et est automatiquement et entièrement supprimée :
    • claims libérés,
    • coffre partagé supprimé,
    • compte en banque supprimé,
    • entrée retirée du classement de puissance,
    • faction réellement supprimée (elle n'existe plus nulle part).
  • Pas de délai d'1 h dans ce cas (à la différence d'un disband « normal ») : il n'y a personne pour récupérer quoi que ce soit, autant faire le ménage tout de suite.
  • Nettoyage initial au démarrage : un passage est exécuté une fois au démarrage du serveur, pour rattraper les zombies déjà présents dans vos fichiers de sauvegarde.
  • Filet de sécurité : la même purge est répétée toutes les 30 minutes au cas où une faction se retrouverait un jour vide par un autre chemin.

ℹ️ Aucune action requise côté admin — la purge s'exécute toute seule. Si vous voulez la forcer tout de suite, redémarrez le serveur (la purge initiale est garantie).


🔧 Derniers correctifs de compilation Paper API 1.21.4

Plusieurs symboles de l'API Bukkit/Paper utilisés par le plugin avaient changé d'emplacement ou de nom entre Paper 1.21.0 et 1.21.4 :

Symbole Avant Après
org.bukkit.plugin.JavaPlugin en org.bukkit.plugin déplacé en org.bukkit.plugin.java (Paper 1.21+)
Particle.SPELL_WITCH retiré en 1.21 Particle.WITCH
Particle.VILLAGER_HAPPY retiré en 1.21 Particle.HAPPY_VILLAGER
Sound.ENTITY_PLAYER_EAT retiré en 1.21 Sound.ENTITY_GENERIC_EAT
Material.GOLD_STAINED_GLASS_PANE retiré en 1.21 Material.YELLOW_STAINED_GLASS_PANE

À noter également :

  • L'événement org.bukkit.event.entity.EntitySleepEvent n'existe plus en Paper 1.21+ (seuls restent BatToggleSleepEvent, PlayerBedEnterEvent, PlayerBedLeaveEvent, PlayerDeepSleepEvent). Le soin accordé aux villageois recrutés en dormant est donc désactivé dans cette version. Les autres soins (auto-régénération naturelle, potion de soin donnée par un Récolteur, etc.) continuent de fonctionner normalement.
  • Le typage de MapPalette.matchColor(...) a changé : la signature publique utilise java.awt.Color (au lieu de org.bukkit.Color). Le FactionMapRenderer convertit maintenant explicitement.

📦 Installation & migration

  • Aucune action requise côté admin : remplacer le .jar et redémarrer suffit.
  • Toutes les factions encore actives ne sont pas affectées : le critère est strictement « 0 membre », pas « basse puissance » ou « inactivité ».
  • Les YAML des versions ≥ v5.0.0 restent compatibles.

ℹ️ Note sur la numérotation

  • v5.14.0 = dissolution différée d'une heure, avec bugs historiques corrigés au passage.
  • v5.14.1 = nettoyage automatique des factions qui n'ont déjà plus aucun membre (cas pathologique laissé par d'anciens bugs).

Les deux releases se complètent : la 5.14.0 traite le cas normal (dissolution volontaire par un chef, qui doit avoir le temps de récupérer), la 5.14.1 traite le cas pathologique (faction déjà vide, plus rien à récupérer).


📥 Téléchargements

  • FactionPlugin-5.14.1.jar — à déposer dans plugins/ de votre serveur Paper 1.21.4+
  • FactionPlugin-v5.14.1-source.zip — code source complet (Maven)

FactionPlugin v5.13.1 — Tab rafraîchi en quittant une faction

Choose a tag to compare

@herocraftlol herocraftlol released this 13 Sep 00:44

🐛 Le tab ne garde plus l'ancienne faction

Cette release corrige un bug visuellement très désagréable : après avoir quitté, été expulsé ou vu sa faction dissoute, le tab continuait d'afficher l'ancienne faction jusqu'à un événement extérieur (typiquement rejoindre ou fonder une autre faction). C'est trompeur, surtout quand on enchaîne immédiatement avec un /faction create ou un /faction join — l'ancienne étiquette reste affichée jusqu'à ce que le rafraîchissement automatique finisse par se déclencher.

Avant / Après

Commande En v5.13.0 En v5.13.1
/faction leave ❌ Étiquette de faction figée dans le tab ✅ Tab mis à jour à la seconde
/faction kick <joueur> (sur vous) ❌ Idem ✅ Joueur expulsé (et kicker) rafraîchis
/faction disband ❌ Tous les anciens membres gardent leur ancienne faction ✅ Tous les anciens membres voient leur tab nettoyé

Pourquoi

/faction create et /faction join rafraîchissaient déjà le tab (parce qu'on rejoint quelque chose, le code appelait tabManager.refresh(...) au passage). Mais /faction leave, /faction kick et /faction disband ne font qu'enlever une appartenance — la branche correspondante n'appelait jamais cette fonction. Corrigé dans cette release : les trois commandes appellent maintenant tabManager.refresh(...) pour chaque joueur concerné.

Le rafraîchissement est immédiat et propage aussi le changement au dashboard web (Herosite / HeroTab) sans attendre le cycle de 60 secondes — déjà ajouté en v5.13.0.

🔧 Correctifs de compilation Paper API 1.21.4

Quelques symboles ajoutés / renommés / déplacés entre Paper 1.21.0 et 1.21.4 rendaient le projet impossible à compiler. Tous corrigés ici :

Symbole Avant Après
Material.BED retiré en 1.21 Material.RED_BED
Enchantment.LUCK retiré en 1.21 Enchantment.LOOTING
PotionEffectType.INCREASE_DAMAGE / DAMAGE_RESISTANCE renommés STRENGTH / RESISTANCE
Material.GOLD_STAINED_GLASS_PANE renommé YELLOW_STAINED_GLASS_PANE
Particle.SPELL_WITCH / VILLAGER_HAPPY renommés WITCH / HAPPY_VILLAGER
Sound.ENTITY_PLAYER_EAT renommé ENTITY_GENERIC_EAT
BuyResult.NOT_ENOUGH_MONEY renommé NOT_ENOUGH_PAYMENT
org.bukkit.plugin.JavaPlugin (mauvais import) remplacé org.bukkit.plugin.java.JavaPlugin
MapPalette.matchColor(org.bukkit.Color) signature changée MapPalette.matchColor(new java.awt.Color(...))
EntitySleepEvent n'est plus jamais lancé sur Paper 1.21+ listener supprimé (soin nocturne déjà géré par polling depuis v5.10.3)
view.removeRenderer(r) dans lambda variable non-finale final MapView finalView = view;
fr.faction.commerce.Contract import PostType manquant ajout de import fr.faction.village.PostType;

Tout est compilable sur mvn clean package (Java 21, Maven 3.9+).

📦 Installation

  1. Téléchargez FactionPlugin-5.13.1.jar ci-dessous
  2. Placez-le dans le dossier plugins/ de votre serveur Paper 1.21.4+
  3. Démarrez / redémarrez — la configuration se crée automatiquement dans plugins/FactionPlugin/
  4. Tapez /faction en jeu pour ouvrir le menu principal

🛠️ Requis : Paper 1.21.4+, Java 21+. Aucun autre plugin de factions requis.

📥 Recompilation (optionnel)

Vous voulez recompiler ? Le code source est joint : FactionPlugin-v5.13.1-source.zip. Décompressez-le, puis :

cd FactionPlugin-v5.13.1
mvn clean package

Le JAR est produit dans target/FactionPlugin-5.13.1.jar (≈ 470 KB).

🔄 Migration depuis v5.12.0

Aucune migration. Remplacez le .jar v5.12.0 par le v5.13.1 et redémarrez — tous les YAML (factions.yml, villagers.yml, stats.yml, villages.yml, commerce.yml, shop.yml, etc.) restent compatibles. Vos contrats en transit au moment de la mise à jour sont également préservés.

📝 Détails techniques

  • API cible : io.papermc.paper:paper-api:1.21.4-R0.1-SNAPSHOT
  • Java : 21 (compilé en target 21)
  • Taille du JAR : ≈ 470 KB
  • Changelog complet : voir CHANGELOG_v5_13_1.md

— Cette release a été créée par un agent OpenHands au nom d'herocraftlol.