Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ProfessorFichte/More-RPG-Classes/llms.txt

Use this file to discover all available pages before exploring further.

Overview

Custom spell impacts allow you to create unique spell behaviors beyond the standard Spell Engine impacts. The More RPG Library provides 14 custom impact handlers that can be used in your spell.json files.

Usage

Add custom impacts to your spell.json file using this format:
spell.json
"impacts": [
  {
    "action": {
      "type": "CUSTOM",
      "custom": {
        "intent": "HARMFUL",
        "handler": "more_rpg_classes:knock_up_fixed"
      }
    }
  }
]
action.type
string
required
Must be set to "CUSTOM" for custom impacts
action.custom.intent
string
required
The intent of the impact. Can be "HARMFUL" or "HELPFUL"
action.custom.handler
string
required
The identifier of the custom impact handler (see list below)

Available Impact Handlers

Movement & Mobility Impacts

knock_up

Handler ID: more_rpg_classes:knock_up Knocks the target upward with power scaling based on spell tier and spell power. Behavior:
  • Calculates knock amount: base + (multiplier * spellTier * power)
  • Capped at configurable maximum
  • Applies slow falling effect for 1 second
  • Resets vertical velocity before applying knockup
Source: KnockUpSpellImpact.java:15
Example Usage
{
  "action": {
    "type": "CUSTOM",
    "custom": {
      "intent": "HARMFUL",
      "handler": "more_rpg_classes:knock_up"
    }
  }
}

knock_up_fixed

Handler ID: more_rpg_classes:knock_up_fixed Knocks the target upward with a fixed height (0.75 Y-velocity by default). Behavior:
  • Fixed upward velocity from config
  • Applies slow falling effect for 1 second
  • Resets vertical velocity before applying knockup
  • Does not scale with spell power
Source: KnockUpFixedSpellImpact.java:15

forward_dash_range

Handler ID: more_rpg_classes:forward_dash_range Dashes the caster forward based on the spell’s range value. Behavior:
  • Dash strength: spell.range / 4
  • Maintains or applies minimum upward velocity (0.25)
  • Direction based on caster’s look vector
Source: ForwardDashRangeSpellImpact.java:12
Example Usage
{
  "range": 20,
  "impacts": [
    {
      "action": {
        "type": "CUSTOM",
        "custom": {
          "intent": "HELPFUL",
          "handler": "more_rpg_classes:forward_dash_range"
        }
      }
    }
  ]
}

backward_dash_fixed

Handler ID: more_rpg_classes:backward_dash_fixed Dashes the caster backward with fixed range and height values. Behavior:
  • Uses configurable speed and height values
  • Direction opposite to caster’s look vector
  • Applies both horizontal and vertical velocity
Source: BackwardDashFixedSpellImpact.java:13

backward_dash_range

Handler ID: more_rpg_classes:backward_dash_range Dashes the caster backward based on the spell’s range value. Behavior:
  • Dash strength: spell.range / 4
  • Maintains or applies minimum upward velocity (0.25)
  • Direction opposite to caster’s look vector
Source: BackwardDashRangeSpellImpact.java:12

rush_forward_to_target

Handler ID: more_rpg_classes:rush_forward_to_target Rapidly moves the caster to directly in front of the target. Behavior:
  • Calculates position 1 block in front of target
  • Maintains caster’s Y-coordinate
  • Velocity matches distance to cover
  • Only executes on server side
Source: RushForwardToTargetSpellImpact.java:12
Example Usage
{
  "action": {
    "type": "CUSTOM",
    "custom": {
      "intent": "HELPFUL",
      "handler": "more_rpg_classes:rush_forward_to_target"
    }
  }
}

Pull & Displacement Impacts

pull_to_caster_direct

Handler ID: more_rpg_classes:pull_to_caster_direct Pulls the target directly to 1 block in front of the caster with high speed. Behavior:
  • Target position: 1 block in front of caster’s look direction
  • Maintains target’s Y-coordinate
  • Speed configurable via config file
  • Instant displacement effect
Source: PullInToCasterDirectSpellImpact.java:14

pull_to_caster_slow

Handler ID: more_rpg_classes:pull_to_caster_slow Pulls the target slowly toward the caster. Ideal for channeled spells. Behavior:
  • Target position: 1 block in front of caster’s look direction
  • Maintains target’s Y-coordinate
  • Slower speed than direct variant
  • Speed configurable via config file
Source: PullInToCasterSlowSpellImpact.java:14
Channeled Pull Example
{
  "cast": {
    "duration": 40
  },
  "on_channel_tick": [
    {
      "action": {
        "type": "CUSTOM",
        "custom": {
          "intent": "HARMFUL",
          "handler": "more_rpg_classes:pull_to_caster_slow"
        }
      }
    }
  ]
}

Knockback & Force Impacts

range_scaled_knockback

Handler ID: more_rpg_classes:range_scaled_knockback Applies knockback that increases the closer the target is to the caster. Behavior:
  • Knockback formula: 0.1 + ((range - distance) / 5) + enchantment_power
  • Considers Punch and Knockback enchantments from caster’s main hand
  • Higher knockback at close range
  • Distance calculated using block positions
Source: KnockbackRangeScaledSpellImpact.java:14

trembling

Handler ID: more_rpg_classes:trembling Throws the target in random directions. Only affects grounded entities. Behavior:
  • Random horizontal velocity within configured range
  • Fixed upward velocity (0.2)
  • Only applies to targets on the ground
  • Adds to existing velocity
Source: TremblingImpact.java:13
Example Usage
{
  "action": {
    "type": "CUSTOM",
    "custom": {
      "intent": "HARMFUL",
      "handler": "more_rpg_classes:trembling"
    }
  }
}

Utility Impacts

stop_arrows

Handler ID: more_rpg_classes:stop_arrows Stops all arrows within range by setting their velocity to zero. Behavior:
  • Detection range: spell.range * 1.5
  • Creates box: full width/depth, reduced height (range/3)
  • Affects all PersistentProjectileEntity instances
  • Sets velocity to zero
Source: StopArrowsImpact.java:14
Arrow Defense Example
{
  "range": 10,
  "impacts": [
    {
      "action": {
        "type": "CUSTOM",
        "custom": {
          "intent": "HELPFUL",
          "handler": "more_rpg_classes:stop_arrows"
        }
      }
    }
  ]
}

Environmental Impacts

lightning

Handler ID: more_rpg_classes:lightning Summons a friendly lightning entity at the target’s position. Behavior:
  • Spawns FriendlyLightningEntity
  • Won’t damage allies
  • Won’t set fire to blocks
  • Visual and audio lightning effects
  • Server-side only
Source: LightningStrikeImpact.java:14

Damage Impacts

damage_according_to_missing_health

Handler ID: more_rpg_classes:damage_according_to_missing_health Deals damage based on the target’s missing health percentage. Behavior:
  • Above 50% health: 0.25x damage multiplier
  • 25-50% health: 1.0x damage multiplier
  • Below 25% health: 1.75x damage multiplier
  • Base damage: caster’s spell school attribute value
  • Final damage: schoolAttributeValue * damageMultiplier
  • Resets health regeneration timer
Source: DamageToMissingHealthSpellImpact.java:13
Execute-Style Spell
{
  "school": "spell_power:arcane",
  "impacts": [
    {
      "action": {
        "type": "CUSTOM",
        "custom": {
          "intent": "HARMFUL",
          "handler": "more_rpg_classes:damage_according_to_missing_health"
        }
      }
    }
  ]
}

Status Effect Impacts

frozen_ticks

Handler ID: more_rpg_classes:frozen_ticks Adds 40 frozen ticks to the target, stacking with existing freeze. Behavior:
  • Adds 40 frozen ticks
  • Stacks with existing freeze ticks
  • Uses custom freeze stack method
  • Only affects LivingEntity targets
Source: FrozenTicksSpellImpact.java:13

Implementation Reference

All custom impacts are registered in CustomSpellImpacts.java:11 during mod initialization:
Registration Example
public static void registerCustomImpacts(){
    SpellHandlers.registerCustomImpact(
        Identifier.of(MOD_ID, "knock_up"),
        new KnockUpSpellImpact()
    );
    // ... additional registrations
}

Configuration

Many impacts use configurable values from MRPGCMod.tweaksConfig.value:
  • Knock up base, multiplier, and cap
  • Pull speeds (direct and slow)
  • Dash ranges and heights
  • Trembling range
  • Missing health damage multipliers
These can be adjusted in the mod’s config file without code changes.

Notes

Most movement-based impacts only execute on the server side to prevent desync issues.
Impacts that modify velocity set both velocityModified and sometimes velocityDirty flags to ensure proper synchronization.
Combine multiple impacts in a single spell for complex behaviors. For example, use knock_up followed by a damage impact for a juggle combo.

Build docs developers (and LLMs) love