🛍️Shops
Ce document détaille la configuration du système de shop dans le plugin Horizons.
📌 Note: Pour utiliser les boutiques, assurez-vous que le plugin Citizens soit installé sur le serveur. 🛠️
🛒 Configuration des Shops
Cette section concerne les paramètres de configuration dans config.yml
⚙️ Paramètres de Configuration
🕐 Fréquence de mise à jour
Cette option configure l'intervalle à laquelle les prix des articles dans les shops sont automatiquement mis à jour. La valeur par défaut est "15m" (15 minutes).
Le format accepte différentes unités de temps:
spour secondesmpour minuteshpour heures
💡 Exemple d'utilisation
shops:
# Intervalle de mise à jour des prix (format: 15m, 1h, etc.)
# Contrôle la fréquence à laquelle les prix de tous les shops sont mis à jour
price_update_interval: "15m"À chaque intervalle, le système exécute la méthode pour tous les shops configurés, recalculant les prix selon les paramètres de prix dynamiques définis pour chaque article.
🔊 Sons de l'Interface
💬 Messages d'Interaction
💡 Exemple complet
💾 Système de Sauvegarde des Prix des shops
Le plugin Horizons propose deux méthodes de stockage pour les prix des shops permettant une persistance des prix après rechargement du plugin.
📄 Stockage JSON
Les prix sont sauvegardés dans des fichiers JSON dans le dossier
plugins/Horizons/data/shop_prices/Chaque shop a son propre fichier (ex:
example_shop::Forgeron.json)Avantages: simple, pas de dépendance externe
Configuration par défaut, ne nécessite aucune configuration supplémentaire
🗃️ Stockage MySQL (optionnel)
Les prix sont sauvegardés dans une base de données MySQL
Idéal pour les serveurs multi-instances ou avec beaucoup de shops
Nécessite une configuration dans la section
shops.storage.mysqlLes tables sont créées automatiquement lors du premier démarrage
Permet une synchronisation des prix en temps réel entre plusieurs serveurs
⏱️ Les prix sont automatiquement sauvegardés:
À intervalles réguliers (configurable via
price_update_interval)Lors de la désactivation du plugin
Lors du rechargement des configurations
Pour changer le mode de stockage, modifiez simplement shops.storage.type dans la configuration principale.
🎮 Interactions avec les Shops
Les shop gèrent les interactions suivantes :
🖱️ Clic gauche sur un item : Vend une unité de cet item au prix actuel.
🖱️ Clic droit sur un item : Vend tous les items du même type dans l'inventaire du joueur.
🔄 Clic sur une flèche : Permet de naviguer entre les pages du shop.
⬅️ Flèche gauche (emplacement 45) : Page précédente.
➡️ Flèche droite (emplacement 53) : Page suivante.
💰 Format d'Affichage des Prix
Les prix sont affichés dans l'interface avec une tendance indiquant leur évolution :
📈 Augmentation :
↑📉 Diminution :
↓➡️ Stable :
→
🏪 Association avec les NPCs
Les shops sont automatiquement associés à des NPCs Citizens par leur ID. Lorsqu'un joueur fait un clic droit sur un NPC :
🎵 Le son configuré est joué.
🛍️ Le shop correspondant s'ouvre automatiquement.
📦 L'interface s'affiche avec les items disponibles.
📝 Structure des Shops
Les shops sont configurés dans des fichiers YAML situés dans le dossier plugins/Horizons/shops/. Chaque fichier représente une ou plusieurs boutiques avec un ou plusieurs NPCs.
🏪 Configuration des NPCs
⚙Configuration des NPCs
Options Disponibles
display_name
Nom affiché du NPC (supporte les codes couleur)
Oui
entity_type
Type d'entité (VILLAGER, PLAYER, etc.)
Oui
Position
Section contenant les coordonnées
Oui
gui_title
Titre de l'interface du shop
Oui
Types d'Entités Spécifiques
Villageois
Professions disponibles : ARMORER, BUTCHER, CARTOGRAPHER, CLERIC, FARMER, FISHERMAN, FLETCHER, LEATHERWORKER, LIBRARIAN, MASON, NITWIT, NONE, SHEPHERD, TOOLSMITH, WEAPONSMITH
Types de villageois : DESERT, JUNGLE, PLAINS, SAVANNA, SNOW, SWAMP, TAIGA
Joueur avec Skin
⚙ Configuration des Items
Chaque item du shop est configuré dans la section items avec l'identifiant Minecraft de l'item comme clé.
Système de Prix
Prix Statique
Prix Dynamique (Offre et Demande)
💡Exemple Complet
Fonctionnement des Prix Dynamiques
Mode SUPPLY_DEMAND (Offre et Demande)
SUPPLY_DEMAND (Offre et Demande)Les prix diminuent à mesure que les joueurs vendent des items (demande élevée)
Le calcul des prix est basé sur la formule :
priceChange = -demandMultiplier * (salesCount/supplyThreshold)^1.5Plus le nombre de ventes (salesCount) s'approche ou dépasse le seuil (supplyThreshold), plus la baisse est importante
Le taux de baisse dépend du
demand_multiplieret du nombre d'achats par rapport ausupply_thresholdQuand aucun achat n'est effectué, les prix remontent lentement selon le
cooldown_rate
Mode FIXED_PERCENTAGE (Pourcentage Fixe)
FIXED_PERCENTAGE (Pourcentage Fixe)Les prix augmentent régulièrement selon le
change_ratesi peu de ventes sont effectuésQuand les ventes dépassent le
supply_threshold, les prix diminuent proportionnellement selon la formule :priceChange = -changeRate * (salesCount/supplyThreshold)^1.2La diminution s'intensifie de manière exponentielle lorsque le nombre de ventes dépasse largement le seuil
🔢 Système de quantités
⚙Configuration des quantités
Chaque item dans un shop peut avoir une quantité configurée qui détermine combien d'items sont vendus par transaction :
🤖Fonctionnement des quantités
🖱️ Clic gauche (Vente de quantité configurée)
Vend exactement la quantité configurée d'items
Le prix affiché est pour la quantité complète
Exemple : avec
quantity: 5et un prix de vente à 1000, un clic gauche vend 5 items pour 1000 points
🖱️ Clic droit (Vente maximale)
Vend le maximum possible en multiples de la quantité configurée
Le prix est multiplié par le nombre de sets vendus
Exemple : avec 12 items,
quantity: 4, et un prix de vente à 1000 → vend 3 sets (12 items) pour 3000 points
Mis à jour