« Plugin:Écurie » : différence entre les versions
De Nefald
Autres actions
Aucun résumé des modifications |
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 : | ||
{{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 | Plugin PaperMC de gestion des compagnons RP pour le serveur Nefald. | ||
Permet aux joueurs de mettre leurs | 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 | 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 | 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 | /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 | 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 | 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 ( | 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)''' : | * '''Dialog (par défaut)''' : Fenêtre de dialogue textuelle native (Paper 1.21.6+). Immersif et orienté RPG. | ||
* '''Inventory''' : | * '''Inventory''' : Inventaire classique sous forme de coffre. | ||
Une GUI s'ouvre avec les actions suivantes : | Une GUI s'ouvre avec les actions suivantes : | ||
=== | === Mettre en pension === | ||
1. Amener le | 1. Amener le compagnon à côté ou le monter | ||
2. Cliquer ''' | 2. Cliquer '''Mettre en pension''' dans la GUI | ||
3. '''Si le | 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 | 4. '''Si le compagnon a déjà un nom custom''' → mise en pension directe sans nommage | ||
5. Coût : ` | 5. Coût : `prices.store` en sols | ||
=== | === Reprendre un compagnon === | ||
1. Cliquer ''' | 1. Cliquer '''Reprendre un compagnon''' | ||
2. Choisir le | 2. Choisir le compagnon dans la liste | ||
3. Coût : ` | 3. Coût : `prices.retrieve` 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 ( | * '''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 ( | * '''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 | * '''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 ''' | 1. Cliquer '''Modifier le registre''' | ||
2. Choisir le | 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 | 4. Coût : `prices.rename` en sols (défaut 50) | ||
=== Mes | === Mes compagnons === | ||
Vue globale de tous les | Vue globale de tous les compagnons du joueur, toutes étables confondues. | ||
--- | --- | ||
| Ligne 194 : | Ligne 242 : | ||
! Placeholder !! Valeur | ! Placeholder !! Valeur | ||
|- | |- | ||
| `%ecurie_horses_count%` || Nombre de | | `%ecurie_horses_count%` || Nombre de compagnons en pension du joueur | ||
|- | |- | ||
| `%ecurie_horse_name_<n>%` || Nom du n-ième | | `%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 | | `%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) | ||
* ''' | * '''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 `/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 | * '''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''' : | * '''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 | | 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 ; | | 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 | | 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 : | | 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é]] | |||