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

This guide will walk you through the core features of More RPG Library, including spell schools, entity attributes, status effects, and custom spell impacts.

Using Spell Schools

More RPG Library adds 7 new spell schools to Spell Engine. Here’s how to use them:
import net.more_rpg_classes.custom.MoreSpellSchools;
import net.spell_power.api.SpellSchool;

public class MySpellMod {
    public static void initialize() {
        // Magic spell schools
        SpellSchool earth = MoreSpellSchools.EARTH;    // 0xbd8b00
        SpellSchool water = MoreSpellSchools.WATER;    // 0x4dd9ff
        SpellSchool air = MoreSpellSchools.AIR;        // 0xd4e3fe
        SpellSchool nature = MoreSpellSchools.NATURE;  // 0x43bf4b
        
        // Ranged spell schools
        SpellSchool frostRanged = MoreSpellSchools.FROST_RANGED; // 0xccffff
        SpellSchool fireRanged = MoreSpellSchools.FIRE_RANGED;   // 0xff3300
        
        // Melee spell school
        SpellSchool rageMelee = MoreSpellSchools.RAGE_MELEE;     // 0xb3b3b3
    }
}
Spell schools are automatically registered during MoreSpellSchools.initialize() which is called by the library.

Working with Entity Attributes

The library provides 20+ custom entity attributes. Here’s how to use them:
import net.more_rpg_classes.entity.attribute.MRPGCEntityAttributes;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.attribute.EntityAttribute;
import net.minecraft.registry.entry.RegistryEntry;

public class AttributeExample {
    public static void checkAttributes(PlayerEntity player) {
        // Combat attributes
        double lifesteal = player.getAttributeValue(
            MRPGCEntityAttributes.LIFESTEAL_MODIFIER
        );
        double damageReflect = player.getAttributeValue(
            MRPGCEntityAttributes.DAMAGE_REFLECT_MODIFIER
        );
        double rage = player.getAttributeValue(
            MRPGCEntityAttributes.RAGE_MODIFIER
        );
        
        // Fuse attributes (magic damage on physical attacks)
        double fireFuse = player.getAttributeValue(
            MRPGCEntityAttributes.FIRE_FUSE_MODIFIER
        );
        double earthFuse = player.getAttributeValue(
            MRPGCEntityAttributes.EARTH_FUSE_MODIFIER
        );
        
        // Status effect chance attributes
        double burningChance = player.getAttributeValue(
            MRPGCEntityAttributes.BURNING_CHANCE
        );
        double freezeChance = player.getAttributeValue(
            MRPGCEntityAttributes.FREEZE_CHANCE
        );
    }
}

Attribute Reference

AttributeBase/Min/MaxDescription
lifesteal_modifier100/100/1024Heal from physical damage (200 = 100% heal)
damage_reflect_modifier100/100/1024Reflect melee damage (200 = 100% reflect)
rage_modifier100/100/1024Increased damage at low health
spell_vampire100/100/1024Heal from spell damage (200 = 100% heal)
burning_chance100/100/200Chance to ignite on hit
freeze_chance100/100/200Chance to freeze on hit
bleeding_chance100/100/200Chance to bleed on hit
armor_piercing100/100/200Ignore armor (200 = 100% ignore)
tenacity100/100/200Resist harmful effects (200 = 100% resist)

Applying Status Effects

Use the library’s status effects in your code:
import net.more_rpg_classes.effect.MRPGCEffects;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.effect.StatusEffectInstance;

public class EffectExample {
    public static void applyFrozenSolid(LivingEntity target) {
        // Frozen Solid - immobilizes target
        StatusEffectInstance frozen = new StatusEffectInstance(
            MRPGCEffects.FROZEN_SOLID.effect,
            100,  // Duration in ticks (5 seconds)
            0     // Amplifier
        );
        target.addStatusEffect(frozen);
    }
    
    public static void applyBleeding(LivingEntity target, int amplifier) {
        // Bleeding - damage over time
        StatusEffectInstance bleeding = new StatusEffectInstance(
            MRPGCEffects.BLEEDING.effect,
            200,        // 10 seconds
            amplifier   // Scales with attack damage
        );
        target.addStatusEffect(bleeding);
    }
    
    public static void applySoaked(LivingEntity target) {
        // Soaked - increases frost/lightning vulnerability
        StatusEffectInstance soaked = new StatusEffectInstance(
            MRPGCEffects.SOAKED.effect,
            60,  // 3 seconds
            0
        );
        target.addStatusEffect(soaked);
    }
}

Available Status Effects

  • frozen_solid - Immobilizes, increases damage taken
  • ignited - Burning damage, reduces healing, immobilizes
  • bleeding - Damage over time, scales with missing health
  • frosted - Slows movement, stacks to Frozen Solid at amplifier 5
  • molten_armor - Reduces armor, damages if wearing armor
  • stagger - Reduces armor, damage, movement and incapacitates
  • grievous_wounds - Reduces healing, increases damage taken
  • soaked - Vulnerable to frost, lightning, water spells
  • carve - Reduces armor, increases damage taken
  • fatal_poison - Poison that works on undead
  • fear - Reduces attack damage
  • collected_soul - Increases soul spell power per stack

Custom Spell Impacts

Use custom impacts to create unique spell behaviors:
{
  "name": "Earth Eruption",
  "school": "spell_power:earth",
  "impacts": [
    {
      "action": {
        "type": "CUSTOM",
        "custom": {
          "intent": "HARMFUL",
          "handler": "more_rpg_classes:knock_up_fixed"
        }
      }
    },
    {
      "action": "DAMAGE",
      "damage": 12
    }
  ]
}

Available Custom Impacts

Impact HandlerDescription
knock_upKnocks target upward (scalable)
knock_up_fixedKnocks target up with fixed height (0.75 Y-velocity)
pull_to_caster_directInstantly pulls target to caster
pull_to_caster_slowSlowly pulls target (for channeled spells)
lightningSummons lightning entity
tremblingThrows target in random directions
rush_forward_to_targetCaster dashes to target
backward_dash_fixedCaster dashes backward (fixed range)
backward_dash_rangeCaster dashes backward (spell range scaled)
forward_dash_rangeCaster dashes forward (spell range scaled)
range_scaled_knockbackKnockback scales with distance
frozen_ticksAdds frozen ticks to target
stop_arrowsStops arrows in mid-air
damage_according_to_missing_healthDamage scales with target’s missing health

Complete Example: Custom Water Spell

Here’s a complete example combining multiple library features:
{
  "name": "Water Torrent",
  "description": "Blast enemies with a torrent of water, soaking them and dealing increased damage to burning targets",
  "school": "spell_power:water",
  "cost": 40,
  "cooldown": 8,
  "range": 15,
  "impacts": [
    {
      "action": "DAMAGE",
      "damage": 15
    },
    {
      "action": "STATUS_EFFECT",
      "effect": "more_rpg_classes:soaked",
      "duration": 100,
      "amplifier": 0
    },
    {
      "action": {
        "type": "CUSTOM",
        "custom": {
          "intent": "HARMFUL",
          "handler": "more_rpg_classes:range_scaled_knockback"
        }
      }
    }
  ],
  "particles": {
    "type": "spell_engine:water_splash",
    "count": 30
  },
  "sound": {
    "id": "minecraft:entity.player.splash.high_speed"
  }
}

Using Loot Functions

More RPG Library provides advanced loot table functions:
{
  "type": "minecraft:item",
  "name": "spell_engine:scroll",
  "functions": [
    {
      "function": "more_rpg_classes:specific_spell_scroll_pool",
      "spell_pools": ["#wizards:frost", "#your_mod:water"],
      "spell_tier_min": 2,
      "spell_tier_max": 4,
      "count": 1,
      "blacklist_spells": ["wizards:frost_blizzard"]
    }
  ]
}

Next Steps

Spell Schools

Detailed guide on all spell schools

Entity Attributes

Complete attribute reference

Status Effects

All status effects and their mechanics

Custom Impacts

Deep dive into custom spell impacts

Build docs developers (and LLMs) love