---
title: Effets
type: docs
weight: 10
---

Les effets visuels dans Hytale incluent les particules, les lumières dynamiques et les effets de statut d'entité.

{{< cards >}}
  {{< card link="particles" title="Particules" subtitle="Générer et configurer les systèmes de particules" >}}
  {{< card link="dynamic-lights" title="Lumières Dynamiques" subtitle="Effets de lueur sur les entités" >}}
  {{< card link="entity-effects" title="Effets d'Entité" subtitle="Effets de statut avec visuels" >}}
{{< /cards >}}

## Aperçu

Hytale fournit trois systèmes d'effets visuels complémentaires :

| Système | Objectif | Cas d'Usage |
|---------|----------|-------------|
| **Particules** | Atmosphère visuelle et feedback | Explosions, traînées, effets ambiants |
| **Lumières Dynamiques** | Effets de lueur sur les entités | Objets lumineux, auras magiques |
| **Effets d'Entité** | Effets de statut avec visuels | Buffs, debuffs, indicateurs de statut |

## Démarrage Rapide

### Générer des Particules

```java
import com.hypixel.hytale.server.core.universe.world.ParticleUtil;

// Générer des particules à une position
ParticleUtil.spawnParticleEffect(
    "explosion_small",           // ID du système de particules
    position,                    // Position Vector3d
    componentAccessor
);
```

### Ajouter une Lumière Dynamique

```java
import com.hypixel.hytale.protocol.ColorLight;
import com.hypixel.hytale.server.core.modules.entity.component.DynamicLight;

// Créer une lumière colorée (rayon, R, V, B)
ColorLight light = new ColorLight(
    (byte) 15,   // Rayon
    (byte) 255,  // Rouge
    (byte) 100,  // Vert
    (byte) 50    // Bleu
);

// Ajouter à l'entité
DynamicLight dynamicLight = new DynamicLight(light);
componentAccessor.putComponent(entityRef, DynamicLight.getComponentType(), dynamicLight);
```

### Appliquer des Effets d'Entité

```java
import com.hypixel.hytale.server.core.entity.effect.EffectControllerComponent;

// Obtenir le contrôleur d'effets
EffectControllerComponent controller = store.getComponent(
    entityRef,
    EffectControllerComponent.getComponentType()
);

// Appliquer l'effet
EntityEffect effect = EntityEffect.getAssetMap().getAsset("fire_resistance");
controller.addEffect(entityRef, effect, componentAccessor);
```

## Classes Principales

| Classe | Package | Objectif |
|--------|---------|----------|
| `ParticleUtil` | server.core.universe.world | Générer des particules |
| `ParticleSystem` | asset.type.particle.config | Configuration du système |
| `DynamicLight` | modules.entity.component | Effets de lueur d'entité |
| `ColorLight` | protocol | Données couleur/rayon de lumière |
| `EntityEffect` | asset.type.entityeffect.config | Définition d'effet de statut |

## Considérations Réseau

{{< callout type="info" >}}
**Détails Réseau :**
- Les particules sont envoyées dans un rayon de 75 blocs par défaut (`DEFAULT_PARTICLE_DISTANCE`)
- Les changements de DynamicLight se synchronisent automatiquement quand marqués obsolètes
- Les effets d'entité se synchronisent via `EffectControllerComponent`
{{< /callout >}}
