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.

Ecurie

Plugin PaperMC de gestion des chevaux 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.

---

Prérequis

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.

---

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`

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

`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

/ecurie wand [on|off]

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

Étables

/ecurie stable create <nom> [type]    — Crée l'étable ET scanne automatiquement les boxes. Type: STABLE, TERRESTRE, AQUATIQUE, VOLIERE.
/ecurie stable delete <id>            — Supprime une étable
/ecurie stable setnpc <stable_id>     — Lie le NPC Citizens le plus proche (≤5 blocs) à l'étable
/ecurie stable list                   — Liste toutes les étables

Boxes

/ecurie box list <stable_id>          — Liste les boxes d'une étable
/ecurie box delete <box_id>           — Supprime une box
/ecurie show [on|off]                 — Affiche les boxes en surbrillance (particules colorées : vertes=libre, rouges=occupée)

Détection : chaque stalle doit contenir un bloc spécifique configuré dans `config.yml` (`box-blocks`). Par défaut :

  • `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

/ecurie horse free <horse_id>         — Libère un cheval de la DB (urgence admin)

Divers

/ecurie reload                        — Recharge config.yml et le cache ShowManager

---

Commandes joueurs

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

/ecurie gui [dialog|inventory]        — Change votre type d'interface (persistant via PDC)

---

Workflow admin — Créer une étable

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

/ecurie show on
  • Particules vertes = box libre
  • Particules rouges = box occupée

Désactiver l'affichage :

/ecurie show off

---

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

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

---

Permissions

Permission Description Défaut
`ecurie.admin` Accès aux commandes d'administration `/ecurie` op
`ecurie.use` Interaction avec les PNJ et `/ecurie gui` true

---

Notes techniques

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

---

Build

./gradlew shadowJar
# Sortie : build/libs/Ecurie-<version>.jar

Requiert Java 21. La compilation locale sous Java 26+ peut échouer (incompatibilité Groovy/ASM) — utiliser la CI GitLab.

---

Changelog

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 cheval 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.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.2.0 2026-06-11 inventory]` sauvegardé par PDC. Affichage ostensible des tarifs et gestion asynchrone sécurisée.
Les témoins (''cookies'') nous aident à fournir nos services. En utilisant nos services, vous acceptez notre utilisation de témoins.