⚙️ Funcionamiento Base

Los estados en Hytale son componentes lógicos que se aplican a las entidades para modificar su comportamiento, apariencia o estadísticas durante un tiempo determinado. Se definen mediante archivos JSON en el servidor y se sincronizan con el cliente para la representación visual.

Componente Descripción
Definición JSON Controla la lógica, duración y efectos visuales.
StatusEffectIcon Ruta al icono PNG que aparecerá en el HUD del jugador.
ApplicationEffects Efectos visuales como tintes de modelo, partículas y Screen Effects.
OverlapBehavior Determina qué pasa si se aplica el mismo efecto dos veces (Extend, Reset, Stack).

🧪 Anatomía de un Estado (Ejemplo: Poison)

A continuación se muestra un desglose de un archivo de estado típico:

{
  // Efectos visuales al aplicarse
  "ApplicationEffects": {
    "EntityBottomTint": "#000000",
    "EntityTopTint": "#008000",
    "EntityAnimationId": "Hurt",
    "Particles": [{ "SystemId": "Effect_Poison" }]
  },
  
  // Lógica de daño o beneficio
  "DamageCalculator": {
    "BaseDamage": { "Poison": 10 }
  },
  
  "Debuff": true,
  "StatusEffectIcon": "UI/StatusEffects/Poison.png",
  "Duration": 16,
  "Infinite": false
}

📂 Categorías de Estados

Hytale clasifica los estados en varias carpetas dentro de Assets/Server/Entity/Effects/:

  • Status: Efectos clásicos como Poison, Burn, Freeze, Stun.
  • Movement: Modificadores de velocidad, saltos o inmovilización (Root).
  • Food/Potion: Estados temporales derivados de ingerir consumibles.
  • GameMode: Estados persistentes según el modo de juego (ej. Invulnerabilidad en Creativo).

🛠️ Implementación en Mods

Para crear un nuevo estado en un mod (como el estado "Sucio" de PlayerPoop):

  1. Crear el icono en src/main/resources/Common/UI/StatusEffects/mi_estado.png.
  2. Definir el JSON en src/main/resources/Server/Entity/Effects/Status/MiEstado.json.
  3. Aplicar el efecto mediante código usando el StatusEffectComponent de la entidad.
⚠️
Nota sobre Iconos
Los iconos deben tener un fondo transparente y ser legibles en tamaños pequeños para el HUD.