Files
Documentation/content/world/interactions/_index.fr.md
2026-01-20 20:33:59 +01:00

8.0 KiB

title, type, weight
title type weight
Système d'Interactions docs 8

Le système d'Interactions est le puissant framework de comportements piloté par les données de Hytale. Il définit comment les objets, blocs et entités se comportent lorsqu'ils sont utilisés ou activés.

Vue d'Ensemble

Les interactions sont principalement configurées via des fichiers d'assets plutôt que du code Java. Elles forment des chaînes d'opérations qui s'exécutent lorsqu'un joueur effectue des actions comme cliquer, attaquer ou utiliser des objets.

{{< cards cols="2" >}} {{< card link="interaction-types" title="Types d'Interactions" subtitle="100+ types d'interactions intégrés" icon="lightning-bolt" >}} {{< card link="selectors" title="Sélecteurs" subtitle="Cibler entités et blocs" icon="cursor-click" >}} {{< card link="combat" title="Combat" subtitle="Calcul de dégâts et knockback" icon="fire" >}} {{< /cards >}}

Concepts Clés

Assets d'Interaction

Les interactions sont des assets chargés depuis les data packs. Les assets sont stockés dans une map indexée - vous devez d'abord obtenir l'index, puis récupérer l'asset :

import com.hypixel.hytale.server.core.modules.interaction.interaction.config.Interaction;
import com.hypixel.hytale.assetstore.map.IndexedLookupTableAssetMap;

// Obtenir la map d'assets
IndexedLookupTableAssetMap<String, Interaction> assetMap = Interaction.getAssetMap();

// Obtenir l'index depuis l'ID string
int index = assetMap.getIndex("my_interaction");

// Obtenir l'interaction par index
Interaction interaction = assetMap.getAsset(index);

// Ou combiné (mais vérifiez null !)
if (index != Integer.MIN_VALUE) {
    Interaction myInteraction = assetMap.getAsset(index);
}

{{< callout type="warning" >}} Important : getAsset() prend un int index, pas un String. Utilisez getIndex() d'abord pour convertir l'ID string en index. Retourne Integer.MIN_VALUE si non trouvé. {{< /callout >}}

Contexte d'Interaction

Quand les interactions s'exécutent, elles reçoivent un InteractionContext avec :

  • Référence d'entité - L'entité effectuant l'interaction
  • Objet tenu - L'objet utilisé
  • Bloc/entité cible - Ce qui est ciblé
  • Suivi d'état - Informations de progression et timing

États d'Interaction

Package : com.hypixel.hytale.protocol

public enum InteractionState {
    Finished(0),     // Terminé avec succès
    Skip(1),         // Ignoré par l'utilisateur
    ItemChanged(2),  // Annulé suite à changement d'objet
    Failed(3),       // Échec d'exécution
    NotFinished(4);  // Toujours en cours
}
État Valeur Description
Finished 0 Interaction terminée avec succès
Skip 1 L'utilisateur a demandé d'ignorer
ItemChanged 2 Annulé car l'objet tenu a changé
Failed 3 L'interaction a échoué
NotFinished 4 Toujours en cours, pas encore terminé

Catégories d'Interactions

Interactions de Blocs

Opérations sur les blocs :

Interaction Description
PlaceBlockInteraction Placer un bloc
BreakBlockInteraction Casser un bloc
DestroyBlockInteraction Détruire sans drops
ChangeBlockInteraction Changer le type de bloc
UseBlockInteraction Interagir avec un bloc
PlaceFluidInteraction Placer un fluide

Interactions d'Objets

Opérations avec les objets :

Interaction Description
AddItemInteraction Ajouter un objet à l'inventaire
EquipItemInteraction Équiper un objet
ModifyInventoryInteraction Modifier le contenu de l'inventaire

Interactions d'Entités

Opérations sur les entités :

Interaction Description
UseEntityInteraction Interagir avec une entité
RemoveEntityInteraction Supprimer une entité
ApplyEffectInteraction Appliquer un effet de statut
ClearEntityEffectInteraction Supprimer les effets

Interactions de Combat

Dégâts et combat :

Interaction Description
DamageCalculator Calculer les dégâts
DamageEffects Appliquer les effets de dégâts
Knockback Appliquer le knockback
DirectionalKnockback Knockback directionnel
ForceKnockback Knockback basé sur la force

Interactions UI

Interface utilisateur :

Interaction Description
OpenContainerInteraction Ouvrir l'UI de conteneur
OpenPageInteraction Ouvrir une page
OpenCustomUIInteraction Ouvrir une UI personnalisée
SendMessageInteraction Envoyer un message au joueur

Interactions de Structures

Modification du monde :

Interaction Description
SpawnPrefabInteraction Faire apparaître un prefab/structure
LaunchProjectileInteraction Lancer un projectile

Flux de Contrôle

Interactions de chaînage et conditions :

Interaction Description
SerialInteraction Exécuter les interactions en séquence
ParallelInteraction Exécuter les interactions simultanément
SelectInteraction Choisir entre les interactions
ConditionInteraction Exécution conditionnelle
RepeatInteraction Répéter une interaction
CancelChainInteraction Annuler la chaîne

Interactions de Stats

Statistiques d'entités :

Interaction Description
ChangeStatInteraction Modifier une stat
StatsConditionInteraction Vérifier les conditions de stats

Propriétés d'Interaction

Propriétés communes à toutes les interactions :

# Exemple de configuration d'interaction
MyInteraction:
  Type: PlaceBlock
  RunTime: 0.5               # Durée en secondes
  ViewDistance: 96.0          # Distance de visibilité
  HorizontalSpeedMultiplier: 1.0
  CancelOnItemChange: true
  Effects:
    WaitForAnimationToFinish: true
    ItemAnimationId: "swing"
  Rules:
    # Règles d'activation

InteractionEffects

Effets visuels et audio :

  • ItemAnimationId - Animation à jouer
  • WaitForAnimationToFinish - Attendre l'animation
  • Effets sonores
  • Effets de particules

InteractionRules

Contrôle quand les interactions peuvent s'exécuter :

  • Restrictions de mode de jeu
  • Exigences d'état
  • Vérifications de cooldown

Sélecteurs

Les sélecteurs déterminent quelles entités ou blocs sont ciblés :

Sélecteur Description
RaycastSelector Lancer un rayon depuis la caméra
AOECircleSelector Zone d'effet circulaire
AOECylinderSelector Zone d'effet cylindrique
StabSelector Estoc à courte portée
HorizontalSelector Balayage horizontal

Accéder aux Interactions

Depuis les Objets

Les objets définissent leurs interactions dans les fichiers d'assets. À l'exécution :

ItemStack item = player.getInventory().getActiveItem();
Item itemAsset = item.getItem();
// L'objet définit ses interactions primaires/secondaires

Depuis les Blocs

Les blocs définissent les interactions d'utilisation :

BlockType blockType = world.getBlockType(position);
// Le bloc définit son interaction d'utilisation

Bonnes Pratiques

{{< callout type="info" >}} Directives d'Interaction :

  • Les interactions sont principalement pilotées par les données via les assets
  • Utilisez les types d'interaction existants quand possible
  • Chaînez les interactions pour des comportements complexes
  • Utilisez les sélecteurs pour cibler de manière appropriée
  • Considérez le mode de jeu dans les règles {{< /callout >}}

{{< callout type="warning" >}} Note de Performance : Les chaînes d'interaction complexes avec de nombreuses opérations parallèles peuvent impacter les performances. Gardez les chaînes efficaces. {{< /callout >}}

Lectures Complémentaires

Pour des informations détaillées sur les types d'interaction spécifiques, consultez les sous-pages.