🛍️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:

  • s pour secondes

  • m pour minutes

  • h pour 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.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.

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

  1. 🎵 Le son configuré est joué.

  2. 🛍️ Le shop correspondant s'ouvre automatiquement.

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

Paramètre
Description
Obligatoire

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)

  • 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

Mode 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

🔢 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: 5 et 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