|
|
| (3 versions intermédiaires par le même utilisateur non affichées) |
| Ligne 1 : |
Ligne 1 : |
| {{SHORTDESC:Gestion des écuries RP}} | | {{SHORTDESC:Mets tes montures et compagnons en pension auprès des Maîtres d'Écurie et fais-les voyager entre les étables de Nefald}} |
|
| |
|
| {{Infobox Plugin | | {{Infobox Plugin |
| |nom=Écurie | | | nom = Écurie |
| |type=roleplay | | | image = Logo_Ecurie.png |
| |dev=[[Scriptomancien|Nefald]] | | | type = roleplay |
| |status=Installé | | | dev = Nefald |
| |grade=[[Pérégrin]] | | | status = installé |
| |sources=https://git.nefald.fr/minecraft/plugins/ecurie | | | grade = Architecte |
| |dépendance=[[Plugin:Vault|Vault]] (optionnel), [[Plugin:Banco|Banco]] (optionnel, recommandé), [[Plugin:Citizens|Citizens]] (optionnel), [[Plugin:PlaceholderAPI|PlaceholderAPI]] (optionnel), [[Plugin:MyPet|MyPet]] (optionnel) | | | sources = [https://git.nefald.fr/minecraft/plugins/ecurie Gitlab] |
| | | dépendance = [[Plugin:NefaldCore]] (obligatoire), [[Plugin:Citizens]] (softdep, requis en pratique — seul point d'entrée joueur), [[Plugin:PlaceholderAPI]] (softdep), [[Plugin:MyPet]] (softdep) |
| }} | | }} |
|
| |
|
| '''Écurie''' est un plugin PaperMC de gestion des compagnons RP pour le serveur Nefald. | | '''Écurie''' te permet de mettre tes montures et familiers en pension auprès d'un '''Maître d'Écurie''', un PNJ posté devant chaque étable du monde. Ton compagnon est gardé en sécurité, à l'abri des mobs et des voleurs, et tu peux le faire voyager d'une étable à l'autre sans avoir à parcourir toi-même la distance. |
|
| |
|
| Permet aux joueurs de mettre leurs montures en pension dans des étables gérées par des NPCs Citizens. Supporte les transferts inter-étables (''acheminements''), la tarification en écus (Banco/Vault), et expose des placeholders PlaceholderAPI.
| | == Où trouver une écurie == |
|
| |
|
| == Prérequis ==
| | Les étables sont construites par l'Intendance dans les principales cités et zones de Fendral. Chacune est tenue par un '''Maître d'Écurie''' : clique-droit sur lui pour ouvrir le registre de l'étable. |
|
| |
|
| {| class="wikitable"
| | À ton tout premier clic sur un Maître d'Écurie donné, il t'explique son service en détail. Les fois suivantes, il t'accueille d'une phrase différente à chaque passage — et te remercie après chaque service rendu. |
| ! Dépendance !! Rôle !! Type
| |
| |-
| |
| | PaperMC 1.21.x || Serveur || Obligatoire
| |
| |-
| |
| | Vault || API économie || Optionnel (fallback si Banco absent)
| |
| |-
| |
| | Banco || Économie item-based (écus) || Optionnel (recommandé)
| |
| |-
| |
| | Citizens || NPCs d'interface || Optionnel
| |
| |-
| |
| | PlaceholderAPI || Placeholders || Optionnel
| |
| |-
| |
| | MyPet || Détection familiers || Optionnel
| |
| |}
| |
|
| |
|
| Le plugin charge sans aucune de ces dépendances optionnelles.
| | == Mettre un compagnon en pension == |
|
| |
|
| == Installation ==
| | # Amène ton compagnon à côté de toi (ou monte-le). |
| | # Clique-droit sur le Maître d'Écurie, puis choisis '''Mettre en pension'''. |
| | # S'il n'a pas encore de nom, une enclume s'ouvre pour le baptiser avant de le confier. |
| | # Le coût affiché couvre la mise en pension '''et''' le bail prépayé (voir ci-dessous) — tout est réglé en une fois. |
|
| |
|
| 1. Déposer <code>Ecurie-<version>.jar</code> dans <code>plugins/</code>
| | Ton compagnon est alors gardé dans une box de l'étable, en parfaite sécurité, jusqu'à ce que tu viennes le récupérer. |
| 2. Redémarrer le serveur
| |
| 3. Éditer <code>plugins/Ecurie/config.yml</code> et <code>lang.yml</code>
| |
| 4. Créer les étables via les commandes admin (voir ci-dessous)
| |
|
| |
|
| == Configuration == | | == Le bail de la box == |
|
| |
|
| === config.yml ===
| | Chaque pension inclut un '''bail prépayé''' : la box est louée pour une durée fixe dès la mise en pension. Tant que le bail court, ton compagnon reste sur place sans rien à payer de plus. |
|
| |
|
| <syntaxhighlight lang="yaml">
| | * Le bail est '''prolongeable''' à tout moment depuis le menu de récupération. |
| database:
| | * Si le bail expire — ou si tu désertes le serveur trop longtemps — le Maître d'Écurie ne peut plus garantir la box : ton compagnon est mis '''En Réserve''' pour libérer la place. |
| # 'sqlite' ou 'mysql'
| | * Un compagnon '''En Réserve''' n'est pas perdu : il reste récupérable auprès du PNJ, moyennant une pénalité de stockage longue durée (tarif de récupération majoré par rapport à une récupération normale). |
| type: "sqlite"
| | * Tu peux activer le '''renouvellement automatique''' depuis le menu de récupération : le loyer est alors prélevé directement sur ton compte, même hors ligne, pour éviter que ton compagnon ne finisse En Réserve. |
|
| |
| # Configuration SQLite
| |
| sqlite:
| |
| file: "ecurie.db"
| |
|
| |
| # Configuration MySQL / MariaDB (HikariCP)
| |
| mysql:
| |
| host: "localhost"
| |
| port: 3306
| |
| database: "ecurie"
| |
| username: "root"
| |
| password: "password"
| |
| pool:
| |
| maximum-pool-size: 10
| |
| minimum-idle: 2
| |
|
| |
|
| # Interface GUI par défaut (modifiable par joueur via /ecurie gui)
| | == Récupérer un compagnon == |
| # 'dialog' = Interface textuelle native Paper (1.21.6+, recommandé)
| |
| # 'inventory' = Menu d'inventaire classique
| |
| gui-type: "dialog"
| |
|
| |
|
| transfer:
| | # Clique-droit sur le Maître d'Écurie, choisis '''Pension & récupération'''. |
| base-delay-seconds: 600 # Délai de base pour un acheminement (10 min)
| | # Sélectionne ton compagnon dans la liste. |
| delay-per-100-blocks: 30 # Délai additionnel par 100 blocs de distance
| | # Le tarif dépend de son état : récupération normale, ou tarif majoré s'il est En Réserve. |
| animation-distance: 15.0 # Distance (blocs) pour l'animation de départ/arrivée
| |
|
| |
|
| # Tarifs des services en écus/sols (0 = gratuit)
| | == Demander un acheminement == |
| prices:
| |
| store: 10 # Mise en pension
| |
| retrieve: 5 # Récupération d'un compagnon
| |
| rename: 50 # Modification du registre (renommage)
| |
| transfer-base: 20 # Coût de base d'un acheminement
| |
| transfer-per-100: 5 # Coût additionnel par tranche de 100 blocs
| |
| # Formule : coût total = transfer-base + (distance / 100) * transfer-per-100
| |
|
| |
|
| # NPC "Maître d'Écurie" : PNJ d'interface lié à l'étable (via /ecurie setnpc)
| | Besoin de retrouver ta monture ailleurs sur Fendral ? Le Maître d'Écurie peut organiser un '''acheminement''' vers une autre étable : |
| npc:
| |
| default-name: "Maître d'Écurie"
| |
| default-skin-value: "<base64 skin>" # Valeur de texture NameMC
| |
| default-skin-signature: "<signature>" # Signature de la texture
| |
| animation:
| |
| enabled: false # Animation périodique du bras (secouage)
| |
| delay-ticks: 300
| |
|
| |
|
| # NPC "Palefrenier" : PNJ temporaire, spawné uniquement pour l'animation de départ/arrivée
| | * '''Depuis l'étable de départ''' : choisis '''Demander un acheminement''', sélectionne ton compagnon, puis l'étable de destination. |
| groom:
| | * '''Depuis l'étable d'arrivée''' : le Maître d'Écurie te propose directement de faire venir un compagnon stationné ailleurs. |
| default-name: "Palefrenier"
| |
| default-skin-value: "<base64 skin>"
| |
| default-skin-signature: "<signature>"
| |
|
| |
|
| phantom-horse:
| | Le délai et le coût du voyage dépendent de la distance réelle entre les deux étables — plus c'est loin, plus c'est long et cher. Un '''Palefrenier''' (PNJ temporaire) anime le départ et l'arrivée de ton compagnon. |
| health: 20.0 # PV du compagnon fantôme en box
| |
|
| |
|
| # Si vrai, restreint le stockage et le transfert selon le type du compagnon et de l'écurie
| | == Modifier le registre == |
| # Compagnon aquatique -> Écurie AQUATIQUE uniquement
| |
| # Compagnon volant -> Écurie VOLIERE uniquement
| |
| # Compagnon terrestre -> Écurie TERRESTRE/STABLE uniquement
| |
| restrict-stable-types: true
| |
|
| |
|
| box-blocks:
| | Envie de rebaptiser ton compagnon ? Choisis '''Modifier le registre''' dans le menu du Maître d'Écurie : une enclume s'ouvre, pré-remplie avec le nom actuel — modifie-le ou confirme tel quel. |
| # Blocs de ciblage (wand) selon le type d'écurie
| |
| STABLE: WATER_CAULDRON
| |
| TERRESTRE: WATER_CAULDRON
| |
| AQUATIQUE: PRISMARINE
| |
| VOLIERE: DAYLIGHT_DETECTOR
| |
| </syntaxhighlight>
| |
|
| |
|
| === lang.yml === | | == Mes compagnons == |
|
| |
|
| Tous les messages joueurs. Supporte les balises MiniMessage (<code><red></code>, <code><gold></code>, etc.).
| | Cette entrée du menu te donne une vue d'ensemble de '''tous''' tes compagnons en pension, toutes étables confondues — pratique pour savoir où se trouve chacun avant de demander un acheminement. |
| Variables disponibles selon le message : <code>{name}</code>, <code>{amount}</code>, <code>{dest}</code>, <code>{time}</code>, <code>{count}</code>, <code>{stable_id}</code>, <code>{n}</code>, <code>{x}</code>, <code>{y}</code>, <code>{z}</code>.
| |
|
| |
|
| == Commandes == | | == Compagnons acceptés == |
|
| |
|
| === Commandes joueurs ===
| | Écurie accepte toutes les montures classiques (chevaux, chameaux, cochons sellés, striders) ainsi que tous les familiers [[MyPet]]. Selon le type d'étable, seuls certains compagnons sont acceptés : |
|
| |
|
| {| class="wikitable" | | {| class="wikitable" |
| ! Commande !! Description !! Permission | | ! Type d'étable !! Compagnons acceptés |
| |-
| |
| | <code>/ecurie gui [dialog/inventory]</code> || Modifie le type d'interface préféré du joueur (sauvegardé en PDC) || <code>ecurie.use</code>
| |
| |}
| |
| | |
| === Commandes d'administration ===
| |
| | |
| {| class="wikitable"
| |
| ! Commande !! Description !! Permission | |
| |-
| |
| | <code>/ecurie wand [on/off]</code> || Active ou désactive le wand (bâton de sélection pour délimiter les étables) || <code>ecurie.admin</code>
| |
| |-
| |
| | <code>/ecurie create <nom> [type]</code> || Crée une étable dans la sélection wand et scanne automatiquement les boxes. Types : <code>STABLE</code>, <code>RELAY</code>, <code>TERRESTRE</code>, <code>AQUATIQUE</code>, <code>VOLIERE</code>. || <code>ecurie.admin</code>
| |
| |-
| |
| | <code>/ecurie delete <id></code> || Supprime l'étable spécifiée (rend ses compagnons orphelins) || <code>ecurie.admin</code>
| |
| |-
| |
| | <code>/ecurie setnpc <stable_id></code> || Lie le NPC Citizens le plus proche (≤5 blocs) à l'étable en lui attribuant son nom/skin par défaut || <code>ecurie.admin</code>
| |
| |-
| |
| | <code>/ecurie list</code> || Liste toutes les étables enregistrées || <code>ecurie.admin</code>
| |
| |- | | |- |
| | <code>/ecurie tp <stable_id/nom></code> || Téléporte le joueur en face du NPC de l'étable spécifiée (sécurité anticollision intégrée) || <code>ecurie.admin</code> | | | Terrestre || Chevaux, chameaux, cochons, familiers terrestres |
| |- | | |- |
| | <code>/ecurie box scan <stable_id></code> || Relance la détection des blocs cibles (box) dans la sélection wand pour cette étable || <code>ecurie.admin</code> | | | Aquatique || Familiers/montures aquatiques |
| |- | | |- |
| | <code>/ecurie box list <stable_id></code> || Liste les coordonnées de toutes les boxes de l'étable spécifiée || <code>ecurie.admin</code> | | | Volière || Familiers volants |
| |-
| |
| | <code>/ecurie box delete <box_id></code> || Supprime définitivement la box spécifiée || <code>ecurie.admin</code>
| |
| |-
| |
| | <code>/ecurie show [on/off]</code> || Active ou désactive l'affichage de particules colorées sur les blocs de box (vert=libre, rouge=occupé) || <code>ecurie.admin</code>
| |
| |-
| |
| | <code>/ecurie horse free <horse_id></code> || Supprime définitivement un compagnon de la base de données || <code>ecurie.admin</code>
| |
| |-
| |
| | <code>/ecurie horse orphans</code> || Liste tous les compagnons orphelins (sans écurie suite à une suppression) || <code>ecurie.admin</code>
| |
| |-
| |
| | <code>/ecurie horse reassign <horse_id> <stable_id></code> || Réassigne un compagnon orphelin à une box libre de l'étable spécifiée || <code>ecurie.admin</code>
| |
| |-
| |
| | <code>/ecurie reload</code> || Recharge les fichiers de configuration <code>config.yml</code> et de traduction <code>lang.yml</code> || <code>ecurie.admin</code>
| |
| |} | | |} |
|
| |
|
| Les blocs cibles de boxes détectés par défaut selon le type d'écurie sont :
| | {{Info|Un familier [[MyPet]] mis en pension est automatiquement rappelé pour éviter qu'il ne traîne en double dans le monde. Il te sera rendu dans son état actuel à la récupération.}} |
| * <code>STABLE</code> / <code>TERRESTRE</code> : '''WATER_CAULDRON'''
| |
| * <code>AQUATIQUE</code> : '''PRISMARINE'''
| |
| * <code>VOLIERE</code> : '''DAYLIGHT_DETECTOR'''
| |
|
| |
|
| == Permissions == | | == Tarifs == |
|
| |
|
| {| class="wikitable"
| | Tous les tarifs sont réglés en sols, prélevés directement sur ton compte au moment du service. Les montants exacts (mise en pension + bail, récupération, récupération En Réserve, renommage, acheminement) sont fixés par l'Intendance et peuvent varier d'une étable à l'autre — le Maître d'Écurie t'affiche toujours le prix avant confirmation. |
| ! Permission !! Description !! Défaut
| |
| |-
| |
| | <code>ecurie.admin</code> || Accès complet aux commandes d'administration <code>/ecurie</code> || op
| |
| |-
| |
| | <code>ecurie.use</code> || Interaction avec les NPCs Maître d'Écurie et utilisation de <code>/ecurie gui</code> || true
| |
| |}
| |
| | |
| == Workflow admin — Créer une étable ==
| |
| | |
| === Étapes ===
| |
| | |
| 1. '''Construire l'étable''' — poser le bloc cible dans chaque stalle (ex: <code>WATER_CAULDRON</code> pour TERRESTRE, <code>PRISMARINE</code> pour AQUATIQUE).
| |
| 2. '''Activer le wand''' : <code>/ecurie wand on</code> → clic gauche (point A) + clic droit (coin B) pour délimiter la région
| |
| 3. '''Créer et scanner''' : <code>/ecurie create <nom> [type]</code> — crée l'étable ET enregistre automatiquement les boxes détectées.
| |
| 4. '''Lier un NPC''' : placer un Citizens devant l'étable, s'en approcher à < 5 blocs : <code>/ecurie setnpc <stable_id></code> (le nom et le skin par défaut sont appliqués automatiquement).
| |
| | |
| === Visualiser les boxes ===
| |
| | |
| Après création, afficher les boxes avec particules colorées :
| |
| <syntaxhighlight lang="text">
| |
| /ecurie show on
| |
| </syntaxhighlight>
| |
| * Particules '''vertes''' = box libre
| |
| * Particules '''rouges''' = box occupée
| |
|
| |
|
| Désactiver l'affichage :
| | {{Bandeau|type=important|Un compagnon mort en box est perdu définitivement. Prends soin de venir le récupérer ou de renouveler son bail à temps.}} |
| <syntaxhighlight lang="text">
| |
| /ecurie show off
| |
| </syntaxhighlight>
| |
|
| |
|
| == Workflow joueur — Interagir avec une étable == | | == Voir aussi == |
| | |
| Le joueur interagit via clic droit sur le '''Maître d'Écurie''' (NPC Citizens de l'étable). Le plugin propose deux types d'interfaces, configurables librement par chaque joueur (préférence persistante) :
| |
| * '''Dialog (par défaut)''' : Fenêtre de dialogue textuelle native (Paper 1.21.6+). Immersif et orienté RPG.
| |
| * '''Inventory''' : Inventaire classique sous forme de coffre.
| |
| | |
| Une GUI s'ouvre avec les actions suivantes :
| |
| | |
| === Mettre en pension ===
| |
| 1. Amener le compagnon à côté ou le monter
| |
| 2. Cliquer '''Mettre en pension''' dans la GUI
| |
| 3. '''Si le compagnon n'a pas de nom custom''' (nom générique ou absent) → une enclume s'ouvre pour le nommer
| |
| 4. '''Si le compagnon a déjà un nom custom''' → mise en pension directe sans nommage
| |
| 5. Coût : <code>prices.store</code> en sols
| |
| | |
| === Reprendre un compagnon ===
| |
| 1. Cliquer '''Reprendre un compagnon'''
| |
| 2. Choisir le compagnon dans la liste
| |
| 3. Coût : <code>prices.retrieve</code> en sols
| |
| | |
| === Demander un acheminement ===
| |
| L'acheminement peut être initié depuis l'écurie de départ ou d'arrivée :
| |
| * '''Depuis l'écurie d'origine (envoi sortant) :''' Cliquer '''Demander un acheminement''', sélectionner le compagnon, puis choisir l'écurie de destination.
| |
| * '''Depuis l'écurie d'arrivée (rapatriement entrant) :''' Cliquer '''Demander un acheminement''', le plugin liste vos compagnons situés dans d'autres étables. Cliquer sur l'un d'eux lance directement le rapatriement.
| |
| * '''Calcul de distance :''' Le délai et le coût s'ajustent dynamiquement selon la distance réelle (calculée en blocs 3D) entre les deux étables (base + ajustement par tranche de 100 blocs).
| |
| | |
| === Modifier le registre ===
| |
| 1. Cliquer '''Modifier le registre'''
| |
| 2. Choisir le compagnon dans la liste
| |
| 3. Une enclume s'ouvre pré-remplie avec le nom actuel — modifier ou confirmer
| |
| 4. Coût : <code>prices.rename</code> en sols (défaut 50)
| |
| | |
| === Mes compagnons ===
| |
| Vue globale de tous les compagnons du joueur, toutes étables confondues.
| |
| | |
| == Placeholders (PlaceholderAPI) ==
| |
| | |
| Requiert PlaceholderAPI installé.
| |
| | |
| {| class="wikitable"
| |
| ! Placeholder !! Valeur
| |
| |-
| |
| | <code>%ecurie_horses_count%</code> || Nombre de compagnons en pension du joueur
| |
| |-
| |
| | <code>%ecurie_horse_name_<n>%</code> || Nom du n-ième compagnon (1-indexé, trié par nom)
| |
| |-
| |
| | <code>%ecurie_horse_stable_<n>%</code> || Nom de l'étable du n-ième compagnon
| |
| |-
| |
| | <code>%ecurie_horse_health_<n>%</code> || Santé (ex : <code>18.0/20.0</code>)
| |
| |}
| |
| | |
| == Notes techniques ==
| |
| | |
| * '''Stockage''' : SQLite embarqué (local) ou base de données MySQL / MariaDB via HikariCP.
| |
| * '''Compagnons fantômes''' : entités invulnérables, sans gravité ni IA, représentant le compagnon en box. Toute monte ou interaction est strictement bloquée. Spawné à côté du bloc de box (pas dessus).
| |
| * '''Affichage du nom''' : Le nom du compagnon (ligne 1, blanc) et le pseudo du propriétaire (ligne 2, gris italique) s'affichent via un '''TextDisplay''' passager, nettoyé automatiquement lors du despawn.
| |
| * '''Maître d'Écurie''' : NPC Citizens permanent lié à l'étable via <code>/ecurie setnpc</code>. Sert d'interface pour toutes les interactions joueur. Nom et skin configurables dans <code>npc</code> (config.yml).
| |
| * '''Palefrenier''' : NPC Citizens temporaire spawné uniquement pendant l'animation de départ ou d'arrivée d'un acheminement. Nom et skin configurables dans <code>groom</code> (config.yml).
| |
| * '''Mort en box''' : perte définitive, slot libéré
| |
| * '''Banco''' : intégré par réflexion pure (aucun jar requis à la compilation)
| |
| * '''Stockage universel''' : Supporte tous les familiers montables (Chevaux, Chameaux, Cochons, Striders) ainsi que tous les familiers '''MyPet'''.
| |
| * '''Typage des écuries (RPG)''' : Les familiers aquatiques ne peuvent aller que dans une écurie <code>AQUATIQUE</code>. Les familiers volants dans une <code>VOLIERE</code>. Les familiers terrestres dans une <code>TERRESTRE</code> ou <code>STABLE</code>. Les restrictions sont activables via l'option <code>restrict-stable-types</code>.
| |
| * '''MyPet''' : Le plugin révoque automatiquement le MyPet lors de la mise en pension (via <code>/petsendaway</code>) pour éviter les doublons dans le monde, et restaure correctement ses états.
| |
| * '''Transferts''' : vérifiés toutes les 10 secondes en async
| |
| | |
| == Build ==
| |
| | |
| <syntaxhighlight lang="bash">
| |
| ./gradlew shadowJar
| |
| # Sortie : build/libs/Ecurie-<version>.jar
| |
| </syntaxhighlight>
| |
| | |
| Requiert Java 21. La compilation locale sous Java 26+ peut échouer (incompatibilité Groovy/ASM) — utiliser la CI GitLab.
| |
| | |
| == Changelog ==
| |
| | |
| {| class="wikitable"
| |
| ! Version !! Date !! Notes
| |
| |-
| |
| | 1.0.0 || 2026-05-15 || V1 : pension, récupération, transfert, GUI
| |
| |-
| |
| | 1.0.1 || 2026-05-16 || PlaceholderAPI + garde MyPet
| |
| |-
| |
| | 1.0.2 || 2026-05-18 || Détection boxes : WATER_CAULDRON remplace HAY_BLOCK+Sign, scan+création fusionnés en une commande
| |
| |-
| |
| | 1.0.3 || 2026-05-19 || Nommage : skip enclume si compagnon déjà nommé au stockage ; fix renommage (slot résultat pré-rempli)
| |
| |-
| |
| | 1.0.4 || 2026-06-11 || Fix validation renommage ; noms fantômes 2 lignes (ArmorStand passager) ; blocage monte ; correction calcul distance transferts ; rapatriement depuis l'écurie de destination ; animations de départ/arrivée via pathfinding ; attribution automatique de nom/skin pour les NPCs lors du setnpc
| |
| |-
| |
| | 1.1.0 || 2026-06-11 || Support de tous les familiers montables et des MyPet, configuration des prix depuis config.yml, ajout des types d'écuries (AQUATIQUE, VOLIERE, TERRESTRE) avec blocs de ciblage configurables et validations RPG
| |
| |-
| |
| | 1.2.0 || 2026-06-11 || Architecture GUI hybride : API native Paper Dialog (1.21.6+) en interface par défaut, InventoryFramework en fallback. Choix joueur via <code>/ecurie gui</code> sauvegardé par PDC. Affichage des tarifs et gestion asynchrone sécurisée.
| |
| |-
| |
| | 1.3.0 || 2026-06-12 || Terminologie RP : "Mettre en pension", "Acheminement", "Compagnon" ; séparation Maître d'Écurie (interface) / Palefrenier (animation) avec skins distincts ; TextDisplay remplace ArmorStand passager pour les noms en box ; correction spawn fantôme à côté du cauldron (non dessus).
| |
| |-
| |
| | 1.4.0 || 2026-06-13 || Ajout de la commande /ecurie tp, support de MySQL / MariaDB via HikariCP, correction de la persistance de l'activité MyPet, et restrictions par type d'écurie.
| |
| |}
| |
|
| |
|
| [[Catégorie:Plugin développé pour Nefald]] | | * [[MyPet]] — familiers combattants |
| [[Catégorie:Plugin installé]] | | * [[Grades]] — accès et permissions selon ton rang |