Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

« Plugin:Écurie » : différence entre les versions

Mets tes montures et compagnons en pension auprès des Maîtres d'Écurie et fais-les voyager entre les étables de Nefald
Hiob (discussion | contributions)
Aucun résumé des modifications
Hiob (discussion | contributions)
Remplace Modèle:Info par Modèle:Bandeau (type=info)
 
(14 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
= Ecurie =
{{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
| nom = Écurie
| image = Logo_Ecurie.png
| type = roleplay
| dev = Nefald
| status = installé
| grade = Architecte
| 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''' 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.


Plugin PaperMC de gestion des chevaux RP pour le serveur Nefald.
== Où trouver une écurie ==


Permet aux joueurs de mettre leurs chevaux en pension dans des étables gérées par des NPCs Citizens. Supporte les transferts inter-étables, la tarification en écus (Banco/Vault), et expose des placeholders PlaceholderAPI.
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.


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


== Prérequis ==
== Mettre un compagnon en pension ==


{| class="wikitable"
# Amène ton compagnon à côté de toi (ou monte-le).
! Dépendance !! Rôle !! Type
# 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. S'il a déjà un nom, le Maître d'Écurie te demande si tu veux le garder ou le changer.
| PaperMC 1.21.x || Serveur || Obligatoire
# Le coût affiché couvre la mise en pension '''et''' le bail prépayé (voir ci-dessous) — tout est réglé en une fois.
|-
| 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.
 
---
 
== Installation ==
 
1. Déposer `Ecurie-<version>.jar` dans `plugins/`
2. Redémarrer le serveur
3. Éditer `plugins/Ecurie/config.yml` et `lang.yml`
4. Créer les étables via les commandes admin (voir ci-dessous)
 
---
 
== Configuration ==
 
=== `config.yml` ===
 
<syntaxhighlight lang="yaml">
database:
  file: "ecurie.db"          # Chemin relatif au dossier du plugin
 
transfer:
  base-delay-seconds: 600    # Délai de base pour un transfert (10 min)
  delay-per-100-blocks: 30  # Délai additionnel par 100 blocs de distance
 
routes:
  on-road-speed: 0.35        # Vitesse cheval sur route (vanilla ≈ 0.225)
  enabled: false            # Routes RP (désactivé en V1)
 
phantom-horse:
  health: 20.0              # PV du cheval fantôme en box
</syntaxhighlight>
 
=== `lang.yml` ===
 
Tous les messages joueurs. Supporte les balises MiniMessage (`<red>`, `<gold>`, etc.).
Variables disponibles selon le message : `{name}`, `{amount}`, `{dest}`, `{time}`, `{count}`, `{stable_id}`, `{n}`, `{x}`, `{y}`, `{z}`.
 
---
 
== Commandes admin ==
 
Permission requise : `ecurie.admin` (op par défaut). Alias : `/ec`


=== Wand — sélection de région ===
Ton compagnon est alors gardé dans une box de l'étable, en parfaite sécurité, jusqu'à ce que tu viennes le récupérer.


<syntaxhighlight lang="text">
{{Bandeau|type=info|Ton compagnon n'est pas figé dans sa box : il bouge la tête, la queue, flotte comme un ghast ailé... comme s'il t'attendait. Et si tu le confies encore jeune (poulain, bébé...), il aura grandi à ta prochaine visite — le temps ne s'arrête pas pour lui en pension.}}
/ecurie wand [on|off]
</syntaxhighlight>


Active/désactive le wand bâton. Clic gauche = point 1, clic droit = point 2. Utilisé pour scanner les boxes d'une étable.
== Le bail de la box ==


=== Étables ===
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="text">
* Le bail est '''prolongeable''' à tout moment depuis le menu de récupération.
/ecurie stable create <nom> [type]    Crée l'étable ET scanne automatiquement les boxes. Type: STABLE, TERRESTRE, AQUATIQUE, VOLIERE.
* 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.
/ecurie stable delete <id>            — Supprime une étable
* 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).
/ecurie stable setnpc <stable_id>    — Lie le NPC Citizens le plus proche (≤5 blocs) à l'étable
* 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.
/ecurie stable list                  — Liste toutes les étables
</syntaxhighlight>


=== Boxes ===
== Récupérer un compagnon ==


<syntaxhighlight lang="text">
# Clique-droit sur le Maître d'Écurie, choisis '''Pension & récupération'''.
/ecurie box list <stable_id>          — Liste les boxes d'une étable
# Sélectionne ton compagnon dans la liste.
/ecurie box delete <box_id>          — Supprime une box
# Le tarif dépend de son état : récupération normale, ou tarif majoré s'il est En Réserve.
/ecurie show [on|off]                — Affiche les boxes en surbrillance (particules colorées : vertes=libre, rouges=occupée)
</syntaxhighlight>


Détection : chaque stalle doit contenir un bloc spécifique configuré dans `config.yml` (`box-blocks`). Par défaut :
== Demander un acheminement ==
* `STABLE` / `TERRESTRE` : '''WATER_CAULDRON'''
* `AQUATIQUE` : '''PRISMARINE'''
* `VOLIERE` : '''DAYLIGHT_DETECTOR'''
La commande `stable create` détecte automatiquement tous ces blocs dans la région wand et enregistre les boxes immédiatement.
=== Chevaux ===


<syntaxhighlight lang="text">
Besoin de retrouver ta monture ailleurs sur Fendral ? Le Maître d'Écurie peut organiser un '''acheminement''' vers une autre étable :
/ecurie horse free <horse_id>        — Libère un cheval de la DB (urgence admin)
</syntaxhighlight>


=== Divers ===
* '''Depuis l'étable de départ''' : choisis '''Demander un acheminement''', sélectionne ton compagnon, puis l'étable de destination.
* '''Depuis l'étable d'arrivée''' : le Maître d'Écurie te propose directement de faire venir un compagnon stationné ailleurs.


<syntaxhighlight lang="text">
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.
/ecurie reload                        Recharge config.yml et le cache ShowManager
</syntaxhighlight>


---
== Modifier le registre ==


== Commandes joueurs ==
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.


Permission requise : `ecurie.use` (true par défaut).
== Mes compagnons ==


<syntaxhighlight lang="text">
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.
/ecurie gui [dialog|inventory]        — Change votre type d'interface (persistant via PDC)
</syntaxhighlight>


---
== Compagnons acceptés ==


== Workflow admin — Créer une étable ==
É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 :
 
=== Étapes ===
 
1. '''Construire l'étable''' — poser le bloc cible de la box (ex: `WATER_CAULDRON`, `PRISMARINE`) dans chaque stalle.
2. '''Activer le wand''' : `/ecurie wand on` → clic gauche (point A) + clic droit (coin B) pour délimiter la région
3. '''Créer et scanner''' : `/ecurie stable create <nom> [type]` — crée l'étable ET enregistre automatiquement les boxes détectées (selon le type `TERRESTRE`, `AQUATIQUE` ou `VOLIERE`).
4. '''(Optionnel) Lier un NPC''' : placer un Citizens devant l'étable, s'en approcher à < 5 blocs : `/ecurie stable setnpc <stable_id>`
 
=== 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 :
<syntaxhighlight lang="text">
/ecurie show off
</syntaxhighlight>
 
---
 
== Workflow joueur — Interagir avec une étable ==
 
Le joueur interagit via clic droit sur le NPC Citizens de l'étable. Le plugin propose deux types d'interfaces, configurables librement par chaque joueur (la préférence est persistante) :
* '''Dialog (par défaut)''' : Une fenêtre de dialogue textuelle native (Paper 1.21.6+). Immersif et orienté RPG.
* '''Inventory''' : Un inventaire classique sous forme de coffre pour les habitués.
 
Une GUI s'ouvre avec les actions suivantes :
 
=== Stocker un cheval ===
1. Amener le cheval à côté ou le monter
2. Cliquer '''Stocker mon cheval''' dans la GUI
3. '''Si le cheval n'a pas de nom custom''' (nom "Horse" ou absent) → une enclume s'ouvre pour nommer le cheval
4. '''Si le cheval a déjà un nom custom''' → stockage direct sans nommage
5. Coût : `price-in` de l'étable en sols
 
=== Récupérer un cheval ===
1. Cliquer '''Récupérer un cheval'''
2. Choisir le cheval dans la liste
3. Coût : `price-out` de l'étable
 
=== Transférer ou Rapatrier un cheval ===
Le transfert peut être initié depuis l'écurie de départ ou de destination :
* '''Depuis l'écurie d'origine (Transfert sortant) :''' Cliquer '''Transférer vers...''', sélectionner le cheval, puis choisir l'écurie de destination.
* '''Depuis l'écurie d'arrivée (Rapatriement entrant) :''' Cliquer '''Transférer vers...''', le plugin liste vos chevaux situés dans d'autres étables. Cliquer sur l'un d'eux lance directement le rapatriement vers l'écurie actuelle.
* '''Calcul de distance :''' Le délai de transfert et le coût en écus s'ajustent dynamiquement selon la distance réelle (calculée en blocs 3D) entre les deux étables (délai/coût de base + ajustement par tranche de 100 blocs).
 
=== Renommer un cheval ===
1. Cliquer '''Renommer un cheval'''
2. Choisir le cheval dans la liste
3. Une enclume s'ouvre pré-remplie avec le nom actuel — modifier ou confirmer
4. Coût : `rename-price` en sols (défaut 50)
 
=== Mes chevaux ===
Vue globale de tous les chevaux du joueur, toutes étables confondues.
 
---
 
== Placeholders (PlaceholderAPI) ==
 
Requiert PlaceholderAPI installé.


{| class="wikitable"
{| class="wikitable"
! Placeholder !! Valeur
! Type d'étable !! Compagnons acceptés
|-
|-
| `%ecurie_horses_count%` || Nombre de chevaux en pension du joueur
| Terrestre || Chevaux, chameaux, cochons, familiers terrestres
|-
|-
| `%ecurie_horse_name_<n>%` || Nom du n-ième cheval (1-indexé, trié par nom)
| Aquatique || Familiers/montures aquatiques
|-
|-
| `%ecurie_horse_stable_<n>%` || Nom de l'étable du n-ième cheval
| Aérien || Familiers volants (perroquet, ghast ailé, etc.)
|-
| `%ecurie_horse_health_<n>%` || Santé (ex : `18.0/20.0`)
|}
|}


---
{{Bandeau|type=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.}}


== 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
|-
| `ecurie.admin` || Accès aux commandes d'administration `/ecurie` || op
|-
| `ecurie.use` || Interaction avec les PNJ et `/ecurie gui` || true
|}


---
{{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.}}


== Notes techniques ==
== Voir aussi ==


* '''Stockage''' : SQLite embarqué (shadowed, pas de dépendance runtime)
* [[MyPet]] — familiers combattants
* '''Chevaux fantômes''' : entités invulnérables, sans gravité ni IA, représentant le cheval en box. Toute monte ou interaction (inventaire du cheval, etc.) est strictement bloquée pour des raisons de sécurité.
* [[Grades]] — accès et permissions selon ton rang
* '''Double étiquette de nom''' : Le nom du cheval (ligne 1, blanc) et le pseudo du propriétaire (ligne 2, gris italique) s'affichent au-dessus du cheval en box grâce à un Armor Stand passager invisible (`Marker`), nettoyé automatiquement lors du despawn.
* '''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 (Dauphin, Calamar MyPet, etc.) ne peuvent aller que dans une écurie de type `AQUATIQUE`. Les familiers volants (Perroquet, Phantom, etc.) dans une `VOLIERE`. Les familiers terrestres dans une `TERRESTRE`.
* '''MyPet''' : Ecurie stocke correctement le `UUID` du MyPet et s'assure qu'il est révoqué automatiquement pour éviter les doublons lors du stockage.
* '''Transferts''' : vérifiés toutes les 10 secondes en async


---
== Sur la carte ==


== Build ==
Chaque étable apparaît comme marqueur sur la [https://map.nefald.fr carte interactive], calque « Écuries » pratique pour repérer d'un coup d'œil où déposer ou récupérer un compagnon. L'icône du marqueur change selon le type d'étable :
 
<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"
{| class="wikitable"
! Version !! Date !! Notes
! Type d'étable !! Icône
|-
| 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 cheval déjà nommé au stockage ; fix renommage (slot résultat pré-rempli)
| Terrestre || Cheval
|-
|-
| 1.0.4 || 2026-06-11 || Fix validation renommage ; noms fantômes 2 lignes (ArmorStand passager) ; blocage monte ; correction calcul distance transferts ; possibilité d'initier un transfert (rapatriement) depuis l'écurie de destination ; animations de départ et d'arrivée des chevaux avec PNJ montés via pathfinding local ; attribution automatique de nom/skin configurables par défaut pour les NPCs d'écurie lors du setnpc
| Aquatique || Dauphin
|-
|-
| 1.1.0 || 2026-06-11 || Support de tous les familiers montables et des MyPet, configuration des prix en jeu depuis config.yml, ajout des types d'écuries (AQUATIQUE, VOLIERE, TERRESTRE) avec blocs de ciblage wand configurables et validations RPG pour le stockage.
| Aérien || Poule
|-
| 1.2.0 || 2026-06-11 || Architecture GUI hybride : intégration de l'API native Paper Dialog (1.21.6+) en interface par défaut, et maintien d'InventoryFramework en fallback. Choix laissé aux joueurs via `/ecurie gui [dialog|inventory]` sauvegardé par PDC. Affichage ostensible des tarifs et gestion asynchrone sécurisée.
|}
|}
Le popup du marqueur affiche le nombre de boxes libres avant de t'y rendre.

Dernière version du 15 août 2026 à 23:05


Écurie
Type
Roleplay
Développeur
Nefald
Statut
Grade requis
Architecte
Ressources
Code source
Compatibilité
Dépendance(s)
Plugin:NefaldCore (obligatoire), Plugin:Citizens (softdep, requis en pratique — seul point d'entrée joueur), Plugin:PlaceholderAPI (softdep), Plugin:MyPet (softdep)


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

Où trouver une écurie

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.

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

Mettre un compagnon en pension

  1. Amène ton compagnon à côté de toi (ou monte-le).
  2. Clique-droit sur le Maître d'Écurie, puis choisis Mettre en pension.
  3. S'il n'a pas encore de nom, une enclume s'ouvre pour le baptiser avant de le confier. S'il a déjà un nom, le Maître d'Écurie te demande si tu veux le garder ou le changer.
  4. Le coût affiché couvre la mise en pension et le bail prépayé (voir ci-dessous) — tout est réglé en une fois.

Ton compagnon est alors gardé dans une box de l'étable, en parfaite sécurité, jusqu'à ce que tu viennes le récupérer.

Le bail de la box

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.

  • Le bail est prolongeable à tout moment depuis le menu de récupération.
  • 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.
  • 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).
  • 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.

Récupérer un compagnon

  1. Clique-droit sur le Maître d'Écurie, choisis Pension & récupération.
  2. Sélectionne ton compagnon dans la liste.
  3. Le tarif dépend de son état : récupération normale, ou tarif majoré s'il est En Réserve.

Demander un acheminement

Besoin de retrouver ta monture ailleurs sur Fendral ? Le Maître d'Écurie peut organiser un acheminement vers une autre étable :

  • Depuis l'étable de départ : choisis Demander un acheminement, sélectionne ton compagnon, puis l'étable de destination.
  • Depuis l'étable d'arrivée : le Maître d'Écurie te propose directement de faire venir un compagnon stationné ailleurs.

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.

Modifier le registre

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.

Mes compagnons

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.

Compagnons acceptés

É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 :

Type d'étable Compagnons acceptés
Terrestre Chevaux, chameaux, cochons, familiers terrestres
Aquatique Familiers/montures aquatiques
Aérien Familiers volants (perroquet, ghast ailé, etc.)

Tarifs

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.

Voir aussi

  • MyPet — familiers combattants
  • Grades — accès et permissions selon ton rang

Sur la carte

Chaque étable apparaît comme marqueur sur la carte interactive, calque « Écuries » — pratique pour repérer d'un coup d'œil où déposer ou récupérer un compagnon. L'icône du marqueur change selon le type d'étable :

Type d'étable Icône
Terrestre Cheval
Aquatique Dauphin
Aérien Poule

Le popup du marqueur affiche le nombre de boxes libres avant de t'y rendre.

Les témoins (''cookies'') nous aident à fournir nos services. En utilisant nos services, vous acceptez notre utilisation de témoins.