Skip to content

Interaction Types Reference

Quick reference for all Type values in interactions.

Run interactions in sequence.

{
"Type": "Serial",
"Interactions": ["First", "Second", "Third"]
}

Fields:

  • Interactions - Array of interaction IDs or inline interactions

Cycle through attacks (combo system).

{
"Type": "Chaining",
"ChainId": "MyCombo",
"ChainingAllowance": 2.0,
"Next": [
{ "Var": "Attack1", "DefaultValue": { "Interactions": ["Attack1"] } },
{ "Var": "Attack2", "DefaultValue": { "Interactions": ["Attack2"] } }
]
}

Fields:

  • ChainId - Shared counter name (optional)
  • ChainingAllowance - Seconds before combo resets
  • Next - Array of attack options
  • Flags - Named branches (optional)

Authority: Client decides which attack


Hold-to-charge with time-based branches.

{
"Type": "Charging",
"DisplayProgress": true,
"Next": {
"0": "QuickAttack",
"0.5": "MediumAttack",
"1.5": "FullyCharged"
}
}

Fields:

  • DisplayProgress - Show charge bar
  • Next - map of hold time to interaction

Authority: Client reports charge time


Branch based on state conditions.

{
"Type": "Condition",
"RequiredGameMode": "Adventure",
"Jumping": false,
"Crouching": true,
"Sprinting": false,
"Swimming": false,
"Next": "PassedInteraction",
"Failed": "FailedInteraction"
}

Fields:

  • RequiredGameMode - Required game mode
  • Jumping, Crouching, Sprinting, Swimming - State checks
  • Next - If conditions pass
  • Failed - If conditions fail

No logic, just timing and effects.

{
"Type": "Simple",
"RunTime": 0.5,
"Effects": { ... }
}

Fields:

  • RunTime - Duration in seconds
  • Effects - Visual/audio effects

Variable substitution (for InteractionVars).

{
"Type": "Replace",
"Var": "DamageOverride",
"DefaultOk": true,
"DefaultValue": { "Interactions": ["DefaultDamage"] }
}

Fields:

  • Var - Variable name to look up
  • DefaultOk - Use default if var not found
  • DefaultValue - Fallback interaction

Hit detection (raycast/arc).

{
"Type": "Selector",
"RunTime": 0.1,
"Selector": {
"Id": "Horizontal",
"Direction": "ToLeft",
"TestLineOfSight": true,
"StartDistance": 0.1,
"EndDistance": 3.0,
"Length": 90,
"ExtendTop": 0.5,
"ExtendBottom": 0.5,
"RollOffset": 0,
"YawStartOffset": -45
},
"HitEntity": { "Interactions": [...] },
"HitBlock": { "Interactions": [...] },
"Next": { ... }
}

Selector.Id values:

  • Horizontal - Horizontal arc
  • Vertical - Vertical arc
  • Sphere - Sphere around player
  • Raycast - Single ray

Fields:

  • Direction - ToLeft, ToRight, etc.
  • StartDistance, EndDistance - Range
  • Length - Arc degrees
  • ExtendTop, ExtendBottom - Vertical hitbox extension

Authority: Client does raycast, sends hits


Apply damage to target.

{
"Type": "DamageEntity",
"DamageCalculator": {
"Type": "Absolute",
"BaseDamage": { "Physical": 20, "Fire": 10 },
"CriticalHitChance": 0.1,
"CriticalHitMultiplier": 2.0,
"RandomPercentageModifier": 0.1
},
"DamageEffects": {
"Knockback": {
"Type": "Force",
"Force": 5.0,
"Direction": { "X": 0, "Y": 1, "Z": -1 }
},
"WorldParticles": [{ "SystemId": "Impact" }],
"WorldSoundEventId": "SFX_Hit"
},
"EntityStatsOnHit": [
{ "EntityStatId": "SignatureEnergy", "Amount": 5 }
],
"Next": "OnHit",
"Failed": "OnMiss",
"Blocked": "OnBlock"
}

DamageCalculator.Type:

  • Absolute - Fixed damage
  • Dps - Damage per second

Authority: Server calculates final damage


Fire a projectile.

{
"Type": "LaunchProjectile",
"ProjectileId": "My_Bullet",
"RunTime": 0.1,
"SpawnOffset": { "X": 0, "Y": 1.5, "Z": 0.5 },
"Effects": { ... }
}

Fields:

  • ProjectileId - Projectile asset ID
  • SpawnOffset - Position offset from player

Apply status effect.

{
"Type": "ApplyEffect",
"EffectId": "Poison",
"Entity": "Target",
"Duration": 5.0,
"Stacks": 1
}

Entity values: Self, Target, Owner


Remove status effect.

{
"Type": "ClearEntityEffect",
"Entity": "Target",
"EntityEffectId": "Poison"
}

Modify entity stat.

{
"Type": "ChangeState",
"StatId": "Health",
"Amount": -10,
"Entity": "Target"
}

Add/remove items.

{
"Type": "ModifyInventory",
"ItemToRemove": { "Id": "Ammo", "Quantity": 1 },
"ItemToAdd": { "Id": "EmptyShell", "Quantity": 1 },
"Next": "Success",
"Failed": "NoAmmo"
}

Loop an interaction.

{
"Type": "Repeat",
"Count": 3,
"Interaction": "SingleShot"
}

Random selection.

{
"Type": "Select",
"Options": [
{ "Weight": 50, "Interaction": "CommonAttack" },
{ "Weight": 30, "Interaction": "UncommonAttack" },
{ "Weight": 20, "Interaction": "RareAttack" }
]
}

All interactions can have:

{
"Effects": {
"ItemAnimationId": "SwingLeft",
"ItemPlayerAnimationsId": "Sword",
"WorldSoundEventId": "SFX_Swing",
"LocalSoundEventId": "SFX_Swing_Local",
"CameraEffect": "ScreenShake",
"WaitForAnimationToFinish": true,
"ClearAnimationOnFinish": false,
"StartDelay": 0.1,
"Particles": [{
"SystemId": "Dust",
"PositionOffset": { "X": 0, "Y": 0, "Z": 0 },
"Bone": "RightHand"
}],
"FirstPersonParticles": [{
"SystemId": "Muzzle_Flash"
}],
"Trails": [{
"TrailId": "Sword_Trail",
"TargetNodeName": "Blade_Tip"
}],
"MovementEffects": {
"HorizontalSpeedMultiplier": 0.5
}
}
}
TypeClass
Serialcom.hypixel.hytale.server.core.modules.interaction.interaction.config.none.SerialInteraction
Chainingcom.hypixel.hytale.server.core.modules.interaction.interaction.config.client.ChainingInteraction
Chargingcom.hypixel.hytale.server.core.modules.interaction.interaction.config.client.ChargingInteraction
Selectorcom.hypixel.hytale.server.core.modules.interaction.interaction.config.client.SelectorInteraction
DamageEntitycom.hypixel.hytale.server.core.modules.interaction.interaction.config.server.DamageEntityInteraction
LaunchProjectilecom.hypixel.hytale.server.core.modules.interaction.interaction.config.server.LaunchProjectileInteraction
ApplyEffectcom.hypixel.hytale.server.core.modules.interaction.interaction.config.server.ApplyEffectInteraction