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

De Nefald
Hiob (discussion | contributions)
Aucun résumé des modifications
Hiob (discussion | contributions)
docs: mise à jour terminologie RP, NPC Maître/Palefrenier, TextDisplay, config npc/groom, changelog 1.3.0, infobox (via update-page on MediaWiki MCP Server)
Ligne 1 : Ligne 1 :
= Ecurie =
{{SHORTDESC:Gestion des écuries RP}}


{{Infobox Plugin
|nom=Écurie
|type=gameplay
|dev=[[Scriptomancien|Nefald]]
|status=Installé
|grade=[[Pérégrin]]
|sources=https://git.nefald.fr/minecraft/plugins/ecurie
|dépendance=[[Plugin:Vault|Vault]] (optionnel), [[Plugin:Banco|Banco]] (optionnel, recommandé), [[Plugin:Citizens|Citizens]] (optionnel), [[Plugin:PlaceholderAPI|PlaceholderAPI]] (optionnel), [[Plugin:MyPet|MyPet]] (optionnel)
}}


= Ecurie =


Plugin PaperMC de gestion des chevaux RP pour le serveur Nefald.
Plugin PaperMC de gestion des compagnons RP pour le serveur Nefald.


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


---
---
Ligne 47 : Ligne 57 :
database:
database:
   file: "ecurie.db"          # Chemin relatif au dossier du plugin
   file: "ecurie.db"          # Chemin relatif au dossier du plugin
# Interface GUI par défaut (modifiable par joueur via /ecurie gui)
# 'dialog'    = Interface textuelle native Paper (1.21.6+, recommandé)
# 'inventory' = Menu d'inventaire classique
gui-type: "dialog"


transfer:
transfer:
   base-delay-seconds: 600    # Délai de base pour un transfert (10 min)
   base-delay-seconds: 600    # Délai de base pour un acheminement (10 min)
   delay-per-100-blocks: 30  # Délai additionnel par 100 blocs de distance
   delay-per-100-blocks: 30  # Délai additionnel par 100 blocs de distance
  animation-distance: 15.0  # Distance (blocs) pour l'animation de départ/arrivée


routes:
routes:
   on-road-speed: 0.35        # Vitesse cheval sur route (vanilla ≈ 0.225)
   on-road-speed: 0.35        # Vitesse cheval sur route (vanilla ≈ 0.225)
   enabled: false            # Routes RP (désactivé en V1)
   enabled: false            # Routes RP (désactivé en V1)
# Tarifs des services en écus/sols (0 = gratuit)
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 stable setnpc)
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
groom:
  default-name: "Palefrenier"
  default-skin-value: "<base64 skin>"
  default-skin-signature: "<signature>"


phantom-horse:
phantom-horse:
   health: 20.0              # PV du cheval fantôme en box
   health: 20.0              # PV du compagnon fantôme en box
 
box-blocks:
  # Blocs de ciblage (wand) selon le type d'écurie
  STABLE: WATER_CAULDRON
  TERRESTRE: WATER_CAULDRON
  AQUATIQUE: PRISMARINE
  VOLIERE: DAYLIGHT_DETECTOR
</syntaxhighlight>
</syntaxhighlight>


Ligne 101 : Ligne 148 :
* `VOLIERE` : '''DAYLIGHT_DETECTOR'''
* `VOLIERE` : '''DAYLIGHT_DETECTOR'''
La commande `stable create` détecte automatiquement tous ces blocs dans la région wand et enregistre les boxes immédiatement.
La commande `stable create` détecte automatiquement tous ces blocs dans la région wand et enregistre les boxes immédiatement.
=== Chevaux ===
=== Chevaux ===


<syntaxhighlight lang="text">
<syntaxhighlight lang="text">
/ecurie horse free <horse_id>        — Libère un cheval de la DB (urgence admin)
/ecurie horse free <horse_id>        — Libère un compagnon de la DB (urgence admin)
</syntaxhighlight>
</syntaxhighlight>


Ligne 129 : Ligne 177 :
=== Étapes ===
=== Étapes ===


1. '''Construire l'étable''' — poser le bloc cible de la box (ex: `WATER_CAULDRON`, `PRISMARINE`) dans chaque stalle.
1. '''Construire l'étable''' — poser le bloc cible dans chaque stalle (ex: `WATER_CAULDRON` pour TERRESTRE, `PRISMARINE` pour AQUATIQUE).
2. '''Activer le wand''' : `/ecurie wand on` → clic gauche (point A) + clic droit (coin B) pour délimiter la région
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`).
3. '''Créer et scanner''' : `/ecurie stable create <nom> [type]` — crée l'étable ET enregistre automatiquement les boxes détectées.
4. '''(Optionnel) Lier un NPC''' : placer un Citizens devant l'étable, s'en approcher à < 5 blocs : `/ecurie stable setnpc <stable_id>`
4. '''(Optionnel) Lier un NPC''' : placer un Citizens devant l'étable, s'en approcher à < 5 blocs : `/ecurie stable setnpc <stable_id>`


Ligne 152 : Ligne 200 :
== Workflow joueur — Interagir avec une étable ==
== 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) :
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)''' : Une fenêtre de dialogue textuelle native (Paper 1.21.6+). Immersif et orienté RPG.
* '''Dialog (par défaut)''' : 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.
* '''Inventory''' : Inventaire classique sous forme de coffre.


Une GUI s'ouvre avec les actions suivantes :
Une GUI s'ouvre avec les actions suivantes :


=== Stocker un cheval ===
=== Mettre en pension ===
1. Amener le cheval à côté ou le monter
1. Amener le compagnon à côté ou le monter
2. Cliquer '''Stocker mon cheval''' dans la GUI
2. Cliquer '''Mettre en pension''' 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
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 cheval a déjà un nom custom''' → stockage direct sans nommage
4. '''Si le compagnon a déjà un nom custom''' → mise en pension directe sans nommage
5. Coût : `price-in` de l'étable en sols
5. Coût : `prices.store` en sols


=== Récupérer un cheval ===
=== Reprendre un compagnon ===
1. Cliquer '''Récupérer un cheval'''
1. Cliquer '''Reprendre un compagnon'''
2. Choisir le cheval dans la liste
2. Choisir le compagnon dans la liste
3. Coût : `price-out` de l'étable
3. Coût : `prices.retrieve` en sols


=== Transférer ou Rapatrier un cheval ===
=== Demander un acheminement ===
Le transfert peut être initié depuis l'écurie de départ ou de destination :
L'acheminement peut être initié depuis l'écurie de départ ou d'arrivée :
* '''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'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 '''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.
* '''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 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).
* '''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).


=== Renommer un cheval ===
=== Modifier le registre ===
1. Cliquer '''Renommer un cheval'''
1. Cliquer '''Modifier le registre'''
2. Choisir le cheval dans la liste
2. Choisir le compagnon dans la liste
3. Une enclume s'ouvre pré-remplie avec le nom actuel — modifier ou confirmer
3. Une enclume s'ouvre pré-remplie avec le nom actuel — modifier ou confirmer
4. Coût : `rename-price` en sols (défaut 50)
4. Coût : `prices.rename` en sols (défaut 50)


=== Mes chevaux ===
=== Mes compagnons ===
Vue globale de tous les chevaux du joueur, toutes étables confondues.
Vue globale de tous les compagnons du joueur, toutes étables confondues.


---
---
Ligne 194 : Ligne 242 :
! Placeholder !! Valeur
! Placeholder !! Valeur
|-
|-
| `%ecurie_horses_count%` || Nombre de chevaux en pension du joueur
| `%ecurie_horses_count%` || Nombre de compagnons en pension du joueur
|-
|-
| `%ecurie_horse_name_<n>%` || Nom du n-ième cheval (1-indexé, trié par nom)
| `%ecurie_horse_name_<n>%` || Nom du n-ième compagnon (1-indexé, trié par nom)
|-
|-
| `%ecurie_horse_stable_<n>%` || Nom de l'étable du n-ième cheval
| `%ecurie_horse_stable_<n>%` || Nom de l'étable du n-ième compagnon
|-
|-
| `%ecurie_horse_health_<n>%` || Santé (ex : `18.0/20.0`)
| `%ecurie_horse_health_<n>%` || Santé (ex : `18.0/20.0`)
Ligne 220 : Ligne 268 :


* '''Stockage''' : SQLite embarqué (shadowed, pas de dépendance runtime)
* '''Stockage''' : SQLite embarqué (shadowed, pas de dépendance runtime)
* '''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é.
* '''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).
* '''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.
* '''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 `/ecurie stable setnpc`. Sert d'interface pour toutes les interactions joueur. Nom et skin configurables dans `npc` (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 `groom` (config.yml).
* '''Mort en box''' : perte définitive, slot libéré
* '''Mort en box''' : perte définitive, slot libéré
* '''Banco''' : intégré par réflexion pure (aucun jar requis à la compilation)
* '''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'''.
* '''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`.
* '''Typage des écuries (RPG)''' : Les familiers aquatiques ne peuvent aller que dans une écurie `AQUATIQUE`. Les familiers volants dans une `VOLIERE`. Les familiers terrestres dans une `TERRESTRE` ou `STABLE`.
* '''MyPet''' : Ecurie stocke correctement le `UUID` du MyPet et s'assure qu'il est révoqué automatiquement pour éviter les doublons lors du stockage.
* '''MyPet''' : Le plugin stocke correctement l'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
* '''Transferts''' : vérifiés toutes les 10 secondes en async


Ligne 253 : Ligne 303 :
| 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.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)
| 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 ; 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
| 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 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.
| 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 : 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.
| 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 `/ecurie gui` 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).
|}
|}
[[Catégorie:Plugin développé pour Nefald]]
[[Catégorie:Plugin installé]]
Les témoins (''cookies'') nous aident à fournir nos services. En utilisant nos services, vous acceptez notre utilisation de témoins.