Shops
Dernière mise à jour
Dernière mise à jour
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. 🛠️
Cette section concerne les paramètres de configuration dans config.yml
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:
s
pour secondes
m
pour minutes
h
pour heures
À 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.
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.mysql
Les 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.
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.
Les prix sont affichés dans l'interface avec une tendance indiquant leur évolution :
📈 Augmentation : ↑
📉 Diminution : ↓
➡️ Stable : →
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.
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.
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
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
Chaque item du shop est configuré dans la section items
avec l'identifiant Minecraft de l'item comme clé.
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.5
Plus 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_multiplier
et du nombre d'achats par rapport au supply_threshold
Quand aucun achat n'est effectué, les prix remontent lentement selon le cooldown_rate
FIXED_PERCENTAGE
(Pourcentage Fixe)Les prix augmentent régulièrement selon le change_rate
si peu de ventes sont effectués
Quand les ventes dépassent le supply_threshold
, les prix diminuent proportionnellement selon la formule :
priceChange = -changeRate * (salesCount/supplyThreshold)^1.2
La diminution s'intensifie de manière exponentielle lorsque le nombre de ventes dépasse largement le seuil
Les prix des boutiques sont mis à jour automatiquement selon l'intervalle défini dans la configuration principale du plugin (shops.price_update_interval
).