SpellEngine is library mod (also known as an API) that lets developers create magic spells using, providing players with a complete spell-casting system including spell books, visual effects, and weapon integration.
📦 Installation
🎁 Installation via Modrinth app is strongly recommended, to automatically resolve all required mods.
Required
Additionally on Fabric:
- Fabric API
- slot mod: Trinkets
Additionally on NeoForge:
- slot mod: Curios API
⭐️ Content made with Spell Engine
🤝 Made by partners
📦 Built-in content
🗡️ Weapon skills 🪓

Explore a variety of melee attack skills, each of them designed for a specific weapon type, with unique features:
- detailed collision detection
- momentum and sliding
- fancy animations
RPG Series content mods come with these skills assigned by default.
Automatically assigned to third-party and vanilla weapons, based on item id or item tag membership. (Config file: config/spell_engine/weapon_fallback.json)
🪄️ API Features
Data driven API
- 🗡️ Spells can be assigned to any weapon (data driven with automatic weapon compatibility)
- 🔮 Spells deal damage based on Spell Power entity attributes
- ✍️ Spells defined in JSON format with hot-reloading and network synchronization
- 📦 Spell Container System with proxy mode, equipment slots, and dynamic spell resolution
- 🔄 Universal pattern matching for tags, regex, and exact matches across all spell properties
- 🛠️ Programmatic spell generation with SpellBuilder and SpellGenerator for mod developers
- ⚙️ Spells have a comprehensive set of mechanical behaviours:
- Spell Types: Active (casted), Passive (triggered), Modifier (spell-modifying)
- Cast Modes: Instant, charged, channeled, with configurable haste effects
- Trigger System: 14+ trigger types (melee, arrow, spell, damage, evasion, roll, etc.) with conditional logic
- Targeting: Aim, Beam, Area, Caster, None, FromTrigger - with caps, conditions, and health-based limits
- Delivery: Direct, Projectile, Meteor, Cloud, ShootArrow, StashEffect, Custom - with delays and multi-placement
- Projectile Features: Homing, ricochet, bounce, pierce, chain reactions, divergence, custom hitboxes
- Impact Actions: Damage, Heal, StatusEffect, Fire, Teleport, Spawn, Cooldown, Aggro, Custom
- Conditional Logic: Target modifiers, impact filters, chance-based execution, entity type conditions
- Cost System: Exhaust, items/runes, cooldowns, durability, status effect consumption, with batching
- Equipment Sets: Set bonuses providing spells, attributes, and special abilities
Fancy audio and visuals
- 🔈 Advanced sound system: casting start/loop, release, impact, travel sounds with randomization
- ✨ Sophisticated particle system with shapes, entity following, scaling, and custom magical particles
- 🎨 Custom Item/Block models for projectiles, status effects, and spell clouds with BlockBench support
- 🤸 Player animations at all spell stages with pitch control and ranged weapon animation support
- 💡 Dynamic lighting integration (LambDynamicLights) for magical illumination
- 🌈 Customizable beam rendering with colors, textures, width, and flow effects
- 📍 Area effect visualization with ground indicators and range-scaled particles
In game features
- 🔧 Spell selection and casting visible on HUD (fully player configurable)
- 😌 QoL features: automatic spell cast release, client prediction, smart targeting
- ⛓️ Spell Binding Table for adding spells to weapons and creating spell books
- 📜 Spell Scroll system with creative tab generation and dungeon loot integration
- 🎒 Equipment integration: Spell books, trinket slots (Trinkets/Accessories), automatic weapon detection
- ⚡ Spell Infinity enchantment with configurable item tag support
- 🎮 Commands:
/spell_cooldownsfor server administration and debugging - 💰 Advanced loot system with
spell_bind_randomlyfunction for dynamic spell assignment
Developer & Mod Integration
- 🔌 Extensive mod compatibility: Better Combat, Combat Roll, FTB Teams, Shoulder Surfing, and more
- 📊 Comprehensive event system for spell casting, healing, and projectile lifecycle
- 🏗️ Custom handler registration for delivery methods and impact actions
- 🎯 Entity predicate system for complex targeting conditions
- 🔧 Performance optimizations: batching, scheduling, client-side prediction
- 📝 Data generation framework for programmatic spell creation and validation
- 🌐 Multi-platform support (Fabric & NeoForge) with unified API
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 |
> ### ⚠️ Read this before updating
>
> This release is a **major technical overhaul and is not backwards compatible.**
>
> - **The APIs have been reworked, not removed.** Everything still exists, under new
> interfaces — but mods built against Spell Engine **0.9.x** will not work with this
> version. They need updating and rebuilding against the current API.
> - **Update the whole set together.** Spell Engine and every RPG Series mod must be on
> matching versions. Mixing in an older add-on will break at startup or misbehave in play.
> - **Spell books must be re-obtained.** Spell books from an older world no longer carry valid
> spell data. Re-craft them, or re-bind their spells at the Spell Binding Table.
>
> **Back up your world before updating.**
- Restored the legacy
LootHelper.configureoverload, fixing add-ons built against older versions
> ### ⚠️ Read this before updating
>
> This release is a **major technical overhaul and is not backwards compatible.**
>
> - **The APIs have been reworked, not removed.** Everything still exists, under new
> interfaces — but mods built against Spell Engine **0.9.x** will not work with this
> version. They need updating and rebuilding against the current API.
> - **Update the whole set together.** Spell Engine and every RPG Series mod must be on
> matching versions. Mixing in an older add-on will break at startup or misbehave in play.
> - **Spell books must be re-obtained.** Spell books from an older world no longer carry valid
> spell data. Re-craft them, or re-bind their spells at the Spell Binding Table.
>
> **Back up your world before updating.**
- Restored the legacy
LootHelper.configureoverload, fixing add-ons built against older versions
Ported to Minecraft 26.3 (Fabric + NeoForge, NeoForge 26.3.0.20-beta or newer).
API changes:
- Armor sets can now come with built-in gem sockets (
Sockets, when Jewelry is installed) - Added
Sockets.applyfor giving any item built-in sockets
Ported to Minecraft 26.3 (Fabric + NeoForge, NeoForge 26.3.0.20-beta or newer).
API changes:
- Armor sets can now come with built-in gem sockets (
Sockets, when Jewelry is installed) - Added
Sockets.applyfor giving any item built-in sockets
API changes:
- Armor sets can now come with built-in gem sockets (
Sockets, when Jewelry is installed) - Added
Sockets.applyfor giving any item built-in sockets
API changes:
- Armor sets can now come with built-in gem sockets (
Sockets, when Jewelry is installed) - Added
Sockets.applyfor giving any item built-in sockets
API changes:
- Armor sets can now come with built-in gem sockets (
Sockets, when Jewelry is installed) - Added
Sockets.applyfor giving any item built-in sockets
API changes:
- Armor sets can now come with built-in gem sockets (
Sockets, when Jewelry is installed) - Added
Sockets.applyfor giving any item built-in sockets
API changes:
- Armor sets can now come with built-in gem sockets (
Sockets, when Jewelry is installed) - Added
Sockets.applyfor giving any item built-in sockets
API changes:
- Armor sets can now come with built-in gem sockets (
Sockets, when Jewelry is installed) - Added
Sockets.applyfor giving any item built-in sockets
API changes:
- Armor sets can now come with built-in gem sockets (
Sockets, when Jewelry is installed) - Added
Sockets.applyfor giving any item built-in sockets
API changes:
- Armor sets can now come with built-in gem sockets (
Sockets, when Jewelry is installed) - Added
Sockets.applyfor giving any item built-in sockets
API changes:
- Armor sets can now come with built-in gem sockets (
Sockets, when Jewelry is installed) - Added
Sockets.applyfor giving any item built-in sockets
API changes:
- Armor sets can now come with built-in gem sockets (
Sockets, when Jewelry is installed) - Added
Sockets.applyfor giving any item built-in sockets
> ### ⚠️ Read this before updating
>
> This release is a **major technical overhaul and is not backwards compatible.**
>
> - **The APIs have been reworked, not removed.** Everything still exists, under new
> interfaces — but mods built against Spell Engine **0.9.x** will not work with this
> version. They need updating and rebuilding against the current API.
> - **Update the whole set together.** Spell Engine and every RPG Series mod must be on
> matching versions. Mixing in an older add-on will break at startup or misbehave in play.
> - **Spell books must be re-obtained.** Spell books from an older world no longer carry valid
> spell data. Re-craft them, or re-bind their spells at the Spell Binding Table.
>
> **Back up your world before updating.**
- Built against a working Bundle API build versioned 1.3.0 (Bundle API 1.2.0 for Minecraft 1.20.1 is broken in production)
> ### ⚠️ Read this before updating
>
> This release is a **major technical overhaul and is not backwards compatible.**
>
> - **The APIs have been reworked, not removed.** Everything still exists, under new
> interfaces — but mods built against Spell Engine **0.9.x** will not work with this
> version. They need updating and rebuilding against the current API.
> - **Update the whole set together.** Spell Engine and every RPG Series mod must be on
> matching versions. Mixing in an older add-on will break at startup or misbehave in play.
> - **Spell books must be re-obtained.** Spell books from an older world no longer carry valid
> spell data. Re-craft them, or re-bind their spells at the Spell Binding Table.
>
> **Back up your world before updating.**
- Built against a working Bundle API build versioned 1.3.0 (Bundle API 1.2.0 for Minecraft 1.20.1 is broken in production)
> ### ⚠️ Read this before updating
>
> This release is a **major technical overhaul and is not backwards compatible.**
>
> - **The APIs have been reworked, not removed.** Everything still exists, under new
> interfaces — but mods built against Spell Engine **0.9.x** will not work with this
> version. They need updating and rebuilding against the current API.
> - **Update the whole set together.** Spell Engine and every RPG Series mod must be on
> matching versions. Mixing in an older add-on will break at startup or misbehave in play.
> - **Spell books must be re-obtained.** Spell books from an older world no longer carry valid
> spell data. Re-craft them, or re-bind their spells at the Spell Binding Table.
>
> **Back up your world before updating.**
Functional changes:
- Added class affiliated loot: injected equipment relevant for the looting player's class drops more often, keeping loot useful with many class mods installed
- The class is determined by the equipped spell book (
<namespace>:spell_book/<name>), affiliated items are listed by the item tag<namespace>:loot_affiliation/<name> - With scoreboard teams, the spell books of all online team members are considered
- Without a (known) spell book, loot works as before. Amount of loot and ratio of item categories is unchanged
- Configurable under the new
behaviorsection of the equipment loot config (config/rpg_series/loot_equipment_v2.json), not applied to scrolls - Added miscellaneous loot config
config/rpg_series/loot_misc.json(empty by default), for injecting anything other than equipment or scrolls (for example: gems into every loot table that drops diamonds), without competing with equipment for rolls - Loot fallback: added
skip_tables_with_rpg_lootoption (on by default, as before) - Loot fallback: fixed excessive loot, injection is now capped per table (
max_rolls) and default rate halved - Fixed loot fallback of scrolls being skipped for loot tables with an explicit equipment injector (the freshly injected equipment counted as "already drops RPG Series loot")
- Fixed loot entries of unknown items (for example: mod not installed) taking up weight as empty drops
- Attempt to fix crashing alongside externally added concurrent
PersistentProjectileEntitytrackers
API changes:
- Added
spell_engine:affiliation_grouploot pool entry type (AffiliationGroupEntry), andRPGSeriesItemTags.LootAffiliation - Added
ClassAffiliation.resolver, replaceable logic determining the loot affiliation tags of a player (default: based on the equipped spell book) - Added
spell_engine:inline_poolloot pool entry type (InlinePoolEntry, 1.20.1 only), used by the loot fallback
> ### ⚠️ Read this before updating
>
> This release is a **major technical overhaul and is not backwards compatible.**
>
> - **The APIs have been reworked, not removed.** Everything still exists, under new
> interfaces — but mods built against Spell Engine **0.9.x** will not work with this
> version. They need updating and rebuilding against the current API.
> - **Update the whole set together.** Spell Engine and every RPG Series mod must be on
> matching versions. Mixing in an older add-on will break at startup or misbehave in play.
> - **Spell books must be re-obtained.** Spell books from an older world no longer carry valid
> spell data. Re-craft them, or re-bind their spells at the Spell Binding Table.
>
> **Back up your world before updating.**
Functional changes:
- Added class affiliated loot: injected equipment relevant for the looting player's class drops more often, keeping loot useful with many class mods installed
- The class is determined by the equipped spell book (
<namespace>:spell_book/<name>), affiliated items are listed by the item tag<namespace>:loot_affiliation/<name> - With scoreboard teams, the spell books of all online team members are considered
- Without a (known) spell book, loot works as before. Amount of loot and ratio of item categories is unchanged
- Configurable under the new
behaviorsection of the equipment loot config (config/rpg_series/loot_equipment_v2.json), not applied to scrolls - Added miscellaneous loot config
config/rpg_series/loot_misc.json(empty by default), for injecting anything other than equipment or scrolls (for example: gems into every loot table that drops diamonds), without competing with equipment for rolls - Loot fallback: added
skip_tables_with_rpg_lootoption (on by default, as before) - Loot fallback: fixed excessive loot, injection is now capped per table (
max_rolls) and default rate halved - Fixed loot fallback of scrolls being skipped for loot tables with an explicit equipment injector (the freshly injected equipment counted as "already drops RPG Series loot")
- Fixed loot entries of unknown items (for example: mod not installed) taking up weight as empty drops
- Attempt to fix crashing alongside externally added concurrent
PersistentProjectileEntitytrackers
API changes:
- Added
spell_engine:affiliation_grouploot pool entry type (AffiliationGroupEntry), andRPGSeriesItemTags.LootAffiliation - Added
ClassAffiliation.resolver, replaceable logic determining the loot affiliation tags of a player (default: based on the equipped spell book) - Added
spell_engine:inline_poolloot pool entry type (InlinePoolEntry, 1.20.1 only), used by the loot fallback
Functional changes:
- Fixed kills landed by summoned entities not counting as player kills (no boss loot, no experience, no kill advancement for the summoner)
- Loot defaults: every boss injector now offers both a tier-5 weapon and a tier-5 armor (previously each had only one of the two)
- Added class affiliated loot: injected equipment relevant for the looting player's class drops more often, keeping loot useful with many class mods installed
- The class is determined by the equipped spell book (
<namespace>:spell_book/<name>), affiliated items are listed by the item tag<namespace>:loot_affiliation/<name> - With scoreboard teams, the spell books of all online team members are considered
- Without a (known) spell book, loot works as before. Amount of loot and ratio of item categories is unchanged
- Configurable under the new
behaviorsection of the equipment loot config (config/rpg_series/loot_equipment_v2.json), not applied to scrolls - Added miscellaneous loot config
config/rpg_series/loot_misc.json(empty by default), for injecting anything other than equipment or scrolls (for example: gems into every loot table that drops diamonds), without competing with equipment for rolls - Loot fallback: added
skip_tables_with_rpg_lootoption (on by default, as before) - Loot fallback: fixed excessive loot, injection is now capped per table (
max_rolls) and default rate halved - Fixed loot fallback of scrolls being skipped for loot tables with an explicit equipment injector (the freshly injected equipment counted as "already drops RPG Series loot")
- Fixed loot entries of unknown items (for example: mod not installed) taking up weight as empty drops
- Attempt to fix crashing alongside externally added concurrent
PersistentProjectileEntitytrackers
API changes:
- Added
spell_engine:affiliation_grouploot pool entry type (AffiliationGroupEntry), andRPGSeriesItemTags.LootAffiliation - Added
ClassAffiliation.resolver, replaceable logic determining the loot affiliation tags of a player (default: based on the equipped spell book)
Functional changes:
- Fixed kills landed by summoned entities not counting as player kills (no boss loot, no experience, no kill advancement for the summoner)
- Loot defaults: every boss injector now offers both a tier-5 weapon and a tier-5 armor (previously each had only one of the two)
- Added class affiliated loot: injected equipment relevant for the looting player's class drops more often, keeping loot useful with many class mods installed
- The class is determined by the equipped spell book (
<namespace>:spell_book/<name>), affiliated items are listed by the item tag<namespace>:loot_affiliation/<name> - With scoreboard teams, the spell books of all online team members are considered
- Without a (known) spell book, loot works as before. Amount of loot and ratio of item categories is unchanged
- Configurable under the new
behaviorsection of the equipment loot config (config/rpg_series/loot_equipment_v2.json), not applied to scrolls - Added miscellaneous loot config
config/rpg_series/loot_misc.json(empty by default), for injecting anything other than equipment or scrolls (for example: gems into every loot table that drops diamonds), without competing with equipment for rolls - Loot fallback: added
skip_tables_with_rpg_lootoption (on by default, as before) - Loot fallback: fixed excessive loot, injection is now capped per table (
max_rolls) and default rate halved - Fixed loot fallback of scrolls being skipped for loot tables with an explicit equipment injector (the freshly injected equipment counted as "already drops RPG Series loot")
- Fixed loot entries of unknown items (for example: mod not installed) taking up weight as empty drops
- Attempt to fix crashing alongside externally added concurrent
PersistentProjectileEntitytrackers
API changes:
- Added
spell_engine:affiliation_grouploot pool entry type (AffiliationGroupEntry), andRPGSeriesItemTags.LootAffiliation - Added
ClassAffiliation.resolver, replaceable logic determining the loot affiliation tags of a player (default: based on the equipped spell book)
> ### ⚠️ Read this before updating
>
> This release is a **major technical overhaul and is not backwards compatible.**
>
> - **The APIs have been reworked, not removed.** Everything still exists, under new
> interfaces — but mods built against Spell Engine **0.9.x** will not work with this
> version. They need updating and rebuilding against the current API.
> - **Update the whole set together.** Spell Engine and every RPG Series mod must be on
> matching versions. Mixing in an older add-on will break at startup or misbehave in play.
> - **Spell books must be re-obtained.** Spell books from an older world no longer carry valid
> spell data. Re-craft them, or re-bind their spells at the Spell Binding Table.
>
> **Back up your world before updating.**
Functional changes:
- Fixed kills landed by summoned entities not counting as player kills (no boss loot, no experience, no kill advancement for the summoner)
- Fixed loot injection defaults (so Arsenal tier weapons show up in boss loot)
> ### ⚠️ Read this before updating
>
> This release is a **major technical overhaul and is not backwards compatible.**
>
> - **The APIs have been reworked, not removed.** Everything still exists, under new
> interfaces — but mods built against Spell Engine **0.9.x** will not work with this
> version. They need updating and rebuilding against the current API.
> - **Update the whole set together.** Spell Engine and every RPG Series mod must be on
> matching versions. Mixing in an older add-on will break at startup or misbehave in play.
> - **Spell books must be re-obtained.** Spell books from an older world no longer carry valid
> spell data. Re-craft them, or re-bind their spells at the Spell Binding Table.
>
> **Back up your world before updating.**
Functional changes:
- Fixed kills landed by summoned entities not counting as player kills (no boss loot, no experience, no kill advancement for the summoner)
- Fixed loot injection defaults (so Arsenal tier weapons show up in boss loot)
Functional changes:
- Added EMI integration: a Spell Binding category showing spell book creation from a plain book, and every spell bindable into each spell book (via lapis or a Spell Scroll)
- Fixed Replay Mod crashing while saving a replay: spell registry sync entries are now sent with a compound root #183
- Network format change: client and server must run the same Spell Engine version
API changes:
- Added
SpellBindingEvents.SPELL_BOUNDevent, fired on the server after a spell has been bound at the Spell Binding Table SpellRegistry.LOCAL_CODECandNETWORK_CODEC(_V2)replaced by a single ops-awareSpellRegistry.CODEC(plain JSON over JSON ops, opaque bytes otherwise);RegistryLoaderMixinremoved
Functional changes:
- Added EMI integration: a Spell Binding category showing spell book creation from a plain book, and every spell bindable into each spell book (via lapis or a Spell Scroll)
- Fixed Replay Mod crashing while saving a replay: spell registry sync entries are now sent with a compound root #183
- Network format change: client and server must run the same Spell Engine version
API changes:
- Added
SpellBindingEvents.SPELL_BOUNDevent, fired on the server after a spell has been bound at the Spell Binding Table SpellRegistry.LOCAL_CODECandNETWORK_CODEC(_V2)replaced by a single ops-awareSpellRegistry.CODEC(plain JSON over JSON ops, opaque bytes otherwise);RegistryLoaderMixinremoved
> ### ⚠️ Read this before updating
>
> This release is a **major technical overhaul and is not backwards compatible.**
>
> - **The APIs have been reworked, not removed.** Everything still exists, under new
> interfaces — but mods built against Spell Engine **0.9.x** will not work with this
> version. They need updating and rebuilding against the current API.
> - **Update the whole set together.** Spell Engine and every RPG Series mod must be on
> matching versions. Mixing in an older add-on will break at startup or misbehave in play.
> - **Spell books must be re-obtained.** Spell books from an older world no longer carry valid
> spell data. Re-craft them, or re-bind their spells at the Spell Binding Table.
>
> **Back up your world before updating.**
Functional changes:
- Fix some raycasting (collision detection) crash
> ### ⚠️ Read this before updating
>
> This release is a **major technical overhaul and is not backwards compatible.**
>
> - **The APIs have been reworked, not removed.** Everything still exists, under new
> interfaces — but mods built against Spell Engine **0.9.x** will not work with this
> version. They need updating and rebuilding against the current API.
> - **Update the whole set together.** Spell Engine and every RPG Series mod must be on
> matching versions. Mixing in an older add-on will break at startup or misbehave in play.
> - **Spell books must be re-obtained.** Spell books from an older world no longer carry valid
> spell data. Re-craft them, or re-bind their spells at the Spell Binding Table.
>
> **Back up your world before updating.**
Functional changes:
- Fix some raycasting (collision detection) crash
> ### ⚠️ Read this before updating
>
> This release is a **major technical overhaul and is not backwards compatible.**
>
> - **The APIs have been reworked, not removed.** Everything still exists, under new
> interfaces — but mods built against Spell Engine **0.9.x** will not work with this
> version. They need updating and rebuilding against the current API.
> - **Update the whole set together.** Spell Engine and every RPG Series mod must be on
> matching versions. Mixing in an older add-on will break at startup or misbehave in play.
> - **Spell books must be re-obtained.** Spell books from an older world no longer carry valid
> spell data. Re-craft them, or re-bind their spells at the Spell Binding Table.
>
> **Back up your world before updating.**
Minecraft 1.20.1 port of Spell Engine 1.10.5 (Fabric + Forge 47). Same content and spell format as 1.10.5; the differences below come from what 1.20.1 itself lacks.
Requires Spell Power 1.6.0+1.20.1. RangedWeaponAPI 2.3.4+1.20.1 and Critical Strike 1.0.4+1.20.1 are optional.
Not available on this game version:
- Entity size scaling (no
generic.scaleattribute): summon scaling, tint renderers and projectile sizes ignore entity scale - Jump-lock modifiers on status effects (no jump-strength attribute on living entities); the lock-out is carried by
ActionImpairingalone - Melee reach is a fixed 3 blocks (no
entity_interaction_rangeattribute) spell_choice.apply_on_choice(data-component patching);spell_choicecarriespoolonly- Mace item tags; Better Combat's glowing swing-trail override (the held item still tints)
- Configuration-phase networking: spell registry and config sync happen at join time instead
Integration notes:
- Item data lives in NBT (
net.spell_engine.api.item.SpellItemData) instead of data components; attribute modifiers useItemAttributeModifierswith UUIDs derived from the modern identifiers - Datapack folders use the 1.20.1 plural names (
advancements/,recipes/,loot_tables/,tags/items/); spells stay atdata/<namespace>/spell/ - Spell Infinity is a Java enchantment again (
config/spell_engine/enchantments.json) - Forge: MixinExtras is embedded; content mods register from
RegisterEventwindows
> ### ⚠️ Read this before updating
>
> This release is a **major technical overhaul and is not backwards compatible.**
>
> - **The APIs have been reworked, not removed.** Everything still exists, under new
> interfaces — but mods built against Spell Engine **0.9.x** will not work with this
> version. They need updating and rebuilding against the current API.
> - **Update the whole set together.** Spell Engine and every RPG Series mod must be on
> matching versions. Mixing in an older add-on will break at startup or misbehave in play.
> - **Spell books must be re-obtained.** Spell books from an older world no longer carry valid
> spell data. Re-craft them, or re-bind their spells at the Spell Binding Table.
>
> **Back up your world before updating.**
Minecraft 1.20.1 port of Spell Engine 1.10.5 (Fabric + Forge 47). Same content and spell format as 1.10.5; the differences below come from what 1.20.1 itself lacks.
Requires Spell Power 1.6.0+1.20.1. RangedWeaponAPI 2.3.4+1.20.1 and Critical Strike 1.0.4+1.20.1 are optional.
Not available on this game version:
- Entity size scaling (no
generic.scaleattribute): summon scaling, tint renderers and projectile sizes ignore entity scale - Jump-lock modifiers on status effects (no jump-strength attribute on living entities); the lock-out is carried by
ActionImpairingalone - Melee reach is a fixed 3 blocks (no
entity_interaction_rangeattribute) spell_choice.apply_on_choice(data-component patching);spell_choicecarriespoolonly- Mace item tags; Better Combat's glowing swing-trail override (the held item still tints)
- Configuration-phase networking: spell registry and config sync happen at join time instead
Integration notes:
- Item data lives in NBT (
net.spell_engine.api.item.SpellItemData) instead of data components; attribute modifiers useItemAttributeModifierswith UUIDs derived from the modern identifiers - Datapack folders use the 1.20.1 plural names (
advancements/,recipes/,loot_tables/,tags/items/); spells stay atdata/<namespace>/spell/ - Spell Infinity is a Java enchantment again (
config/spell_engine/enchantments.json) - Forge: MixinExtras is embedded; content mods register from
RegisterEventwindows
Functional changes:
- Fixed dangling
#c:tag references in thehandhelditem tag on NeoForge (now uses#c:tools/shieldand#c:tools/ranged_weapon) #211 - Fixed crash when a non-hostile entity (villager, animal, snow golem) casts a melee-scaled spell (missing attack damage attribute)
- Unknown player animation ids now warn once instead of spamming the log every tick
Functional changes:
- Fixed dangling
#c:tag references in thehandhelditem tag on NeoForge (now uses#c:tools/shieldand#c:tools/ranged_weapon) #211 - Fixed crash when a non-hostile entity (villager, animal, snow golem) casts a melee-scaled spell (missing attack damage attribute)
- Unknown player animation ids now warn once instead of spamming the log every tick


















