Documentation

# 🔧 Items Customs

# 📝 Introduction

Le systÚme de shops et blackmarkets d'Horizons supporte l'utilisation d'items custom provenant de plugins externes. Cela vous permet d'ajouter des items personnalisés avec leurs propres modÚles 3D, textures et comportements dans vos boutiques.

# 🔌 Plugins SupportĂ©s

# ItemsAdder

# Oraxen

Statut: Implémenté et testé

Le plugin ItemsAdder et Oraxen sont actuellement les seuls provider d'items custom supportĂ©. D'autres providers peuvent ĂȘtre ajoutĂ©s Ă  l'avenir.

# 📋 Format de Configuration

# Format de Clé d'Item Custom

Les items custom sont identifiés par leur format de clé unique. Le format est obligatoire et doit contenir exactement 3 parties séparées par : :

Format obligatoire: provider:namespace:item_id

Exemples:

  • itemsadder:iaalchemy:demoniac_pickaxe
  • itemsadder:myitems:ruby_sword
  • itemsadder:weapons:magic_staff
  • oraxen:demoniac_sword

# Identification Automatique

Un item est automatiquement reconnu comme custom si :

  • La clĂ© contient au moins deux caractĂšres : (format provider:namespace:item_id)
  • OU le flag custom_item: true est prĂ©sent dans la configuration

⚠️ Important: Le format provider:item_id (2 parties) n'est PAS supportĂ©. Vous devez toujours utiliser le format complet avec namespace.

# 🛒 Configuration dans les Shops

# Syntaxe de Base

shop:
  Forgeron:
    display_name: "&c&lForgeron"
    entity_type: "VILLAGER"
    profession: "WEAPONSMITH"
    villager_type: "PLAINS"
    Position:
      world: "world"
      x: 100
      y: 64
      z: 200
    gui_title: "&4Boutique d'Armement"
    items:
      # Item vanilla (comme avant)
      DIAMOND_SWORD:
        pricing:
          type: "STATIC"
          base_price: 1000
      
      # Item custom avec prix statique
      "itemsadder:myitems:ruby_sword":
        pricing:
          type: "STATIC"
          base_price: 1500
      
      # Item custom avec prix dynamique (SUPPLY_DEMAND)
      "itemsadder:iaalchemy:demoniac_pickaxe":
        custom_item: true  # Optionnel mais recommandé
        pricing:
          type: "DYNAMIC"
          base_price: 2000
          min_price: 1500
          max_price: 3000
          adjustment:
            type: "SUPPLY_DEMAND"
            demand_multiplier: 0.15
            supply_threshold: 50
            cooldown_rate: 0.03
      
      # Item custom avec prix dynamique (FIXED_PERCENTAGE)
      "itemsadder:weapons:magic_staff":
        pricing:
          type: "DYNAMIC"
          base_price: 3000
          min_price: 2000
          max_price: 5000
          adjustment:
            type: "FIXED_PERCENTAGE"
            change_rate: 0.05
            supply_threshold: 30

# 🏴‍☠️ Configuration dans les MarchĂ©s Noirs

# Syntaxe de Base

blackmarket:
  TraderNoir:
    display_name: "&8&lMarchand Noir"
    entity_type: "VILLAGER"
    profession: "NONE"
    villager_type: "DESERT"
    Position:
      world: "world"
      x: 200
      y: 64
      z: 300
    gui_title: "&8Marché Noir"
    items:
      # Item vanilla
      DIAMOND:
        stock: 5
        price: 1000
      
      # Item custom avec namespace complet
      "itemsadder:darkmagic:necromancer_staff":
        stock: 1
        price: 10000

# Format de Clé

  • Le format provider:namespace:item_id est obligatoire pour les items custom (exactement 3 parties)
  • Les clĂ©s doivent ĂȘtre entre guillemets dans le YAML si elles contiennent des caractĂšres spĂ©ciaux
  • Le provider doit ĂȘtre installĂ© et chargĂ© pour que les items fonctionnent
  • Le format provider:item_id (2 parties) n'est PAS supportĂ©

# Prix Dynamiques

Les items custom supportent tous les types de prix (STATIC, DYNAMIC avec SUPPLY_DEMAND ou FIXED_PERCENTAGE), exactement comme les items vanilla.

Les prix dynamiques sont mis Ă  jour automatiquement selon l'offre et la demande, et les tendances de prix (↑↓→) sont affichĂ©es dans l'interface du shop, au mĂȘme titre que pour les items vanilla.

# 🔍 DĂ©pannage

# L'item n'apparaĂźt pas dans le shop

  1. Vérifier que le plugin provider est installé (ex: ItemsAdder)
  2. Vérifier que l'item existe dans le provider
  3. VĂ©rifier le format de la clĂ© : doit ĂȘtre provider:namespace:item_id (exactement 3 parties sĂ©parĂ©es par :)
  4. Vérifier les logs : des messages d'erreur détaillés sont affichés dans la console

# Erreur "Invalid custom item"

Cela signifie que :

  • Le provider n'est pas installĂ©
  • L'item n'existe pas dans le provider
  • Le format de la clĂ© est incorrect

Solution : Vérifiez les logs de la console pour le message d'erreur détaillé.

# 🛠️ Commande de Debug

Horizons fournit une commande dédiée pour tester et gérer les items custom : /customitems

# Commandes disponibles

  • /customitems providers - Liste les providers d'items custom chargĂ©s
  • /customitems test <provider:namespace:item_id> - Teste si un item custom existe
  • /customitems give <provider:namespace:item_id> [amount] - Donne un item custom
  • /customitems identify - Identifie l'item tenu en main

Alias: /ci, /citems, /citem

Permission: horizons.command.customitems

# Plus de détails disponibles sur la page de la commande

# Cas d'utilisation

Trouver l'ID d'un item custom :

  1. Tenez l'item en main
  2. Exécutez /customitems identify
  3. Utilisez l'ID complet affiché dans votre configuration

Tester un item avant de l'ajouter Ă  un shop :

/customitems test itemsadder:namespace:item_name

Vérifier que ItemsAdder est chargé :

/customitems providers

Pour plus de détails, consultez la documentation complÚte de la commande.