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:
Accessing Spell Schools
spell.json Example
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:
Accessing Attributes
Item Attribute Modifiers
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
Attribute Base/Min/Max Description lifesteal_modifier100/100/1024 Heal from physical damage (200 = 100% heal) damage_reflect_modifier100/100/1024 Reflect melee damage (200 = 100% reflect) rage_modifier100/100/1024 Increased damage at low health spell_vampire100/100/1024 Heal from spell damage (200 = 100% heal) burning_chance100/100/200 Chance to ignite on hit freeze_chance100/100/200 Chance to freeze on hit bleeding_chance100/100/200 Chance to bleed on hit armor_piercing100/100/200 Ignore armor (200 = 100% ignore) tenacity100/100/200 Resist harmful effects (200 = 100% resist)
Applying Status Effects
Use the library’s status effects in your code:
Applying Effects
Spell with Status Effect
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:
Knock Up Impact
Pull to Caster
Lightning Strike
Backward Dash
{
"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 Handler Description 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:
water_torrent.json
Registering the Spell
{
"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:
Conditional Spell Scroll
Bind Spell to Item
Conditional Item
{
"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