Functional changes:
- Targeted entities may only be highlighted if not invisible
- Fixed missing default translation for Spell Scroll item
API changes:
- Added true volumetric collision detection for spell projectiles
- Added server-side entry point for entity spell casting (SpellHelper.java)
- Added some new assets: player animations, particles, sounds
- Spell data structure changes:
- Added new root field
order, for sorting spells on the hotbar and spell binding GUI
- Added new root field
- Spell execution pipeline now supports performing impacts on other's behalf (ImpactContext.effectiveCaster field)
- Fine-tuned some server config defaults related to owned entities
- Added Model FX — animated 3D spell model effects spawned as world entities
- Supports per-axis
scale,translate, androtatetransforms with easing - Full easing library matching easings.net conventions (31 functions)
initial[]transforms define the starting state;animations[]drive changes over time withstart,end, andeasingfields- Extensible operation registry:
ModelEffectOperations.register()for third-party transform types model_fxfield available at:release,impacts[],area_impact,deliver.melee.swing,deliver.clouds[].spawn, and teleportdepart/arrive- Model files placed at
assets/MOD_ID/models/spell_effect/are auto-discovered
- Supports per-axis
Functional changes:
- Added server-side config fields for spell binding level requirements
- Removed auto hand swap feature (due to colliding with weapon skills)
Functional changes:
- Fixed crash without Better Combat #174
- Fixed melee skill modifiers:
- attack damage bonus
- momentum bonus
- Fixed immobilize effect attribute modifiers
Functional changes:
- Fixed melee skill animations for replay mod
- Added new server config options:
spell_binding_level_cost_offsetspell_binding_level_cost_min
- Rebalanced some of the weapon skill cooldowns
API Changes:
- Added new shared status effect:
spell_engine:immobilize- Immobilizes the target, preventing movement and jumping
- Added melee delivery related spell modifier fields:
spell.modifier.melee_momentum_addadding extra momentum to all melee attacksspell.modifier.melee_slipperiness_addadding extra slipperiness to the caster while performing melee attacksspell.modifier.melee_damage_multipliermultiplying damage of all melee attacksmelee_attackslist of additional melee attacks
- Added new impact type:
IMMUNITYto provide temporary invulnerability to certain damage types, and effects- Specific damage type, or tag of damage types
- Directness check
- Duration
- Additionally available via java API:
LivingEntityImmunity - Old
EntityImmunityAPI is now deprecated
- Melee attack triggers now support spell condition requirement
Hotfix:
- Fixed
arrow contextnot being cleaned up properly, causing Barrage skill to degrade ranged damage over (short) time
Functional changes:
- Improved handling of number keys concurrently to vanilla item switching, fixes #153
API Changes:
- Added new spell delivery method
AFFECT_ARROWallowing passive spells to applyarrow_perksand impacts to any fired arrow
Functional changes:
- Fixed some weapon factory constants
- Fixed ranged weapon pull time constants
Functional changes:
- Improve interaction between melee skills and given momentum while being airborne
API Changes:
- Added new melee attack skill fields related to momentum
spell.deliver.melee.allow_airborne(default: true) - to hold up using momentum based melee skills while airbornespell.deliver.melee.attack.allow_momentum_airborne(default: false) - whether the attack specific forward momentum can be applied while airborne
- Added
SPAWNimpact intent specifier to enable spawning onto hostile targets
Functional changes:
- Fixed issues of Flurry skill (windup time, animation speed, cooldown proportionality)
- Fixed issues of Swift Strikes skill (windup time)
- Fixed fallback config applying to Axes
- Fixed movement friction of attack skills on NeoForge
- Fine tune momentum given by Swipe and Thrust skills
API changes:
- Added new spell modifier
channel_ticks_add, to add extra channel ticks to channeling spells - Added new SpellEvents:
SpellEvents.CASTING_ATTEMPT(with Pre & Post stages) - to be able to inject custom failure reasonSpellEvents.COST_CONSUME- executed when spell cost is being consumed
Fix NeoForge launch crash.
DISCLAIMER: All spell books and spell scrolls will be reset, due to major API changes. Some (looted) weapons with custom spell containers become non-functional, and need to be re-obtained. Apologies for the inconvenience.
API Breaking Changes:
- Reworked
SpellContainerstructure- Removed
contentfield, replace byaccessfield - Removed
is_proxyfields, replace byaccessfield - Add new
accessfield, controlling the spell resolution behavior (ANY, NONE, MAGIC, ARCHERY, CONTAINED, TAG) - Add new
access_paramfield, providing additional parameter for certain access types (such as tag name forTAGaccess type) - Add new
extra_tier_bindingfield toSpellContainer, to specify spell choice limit per spell tiers
- Removed
- Reworked spell tag conventions
<NAMESPACE>:spell_books/<TAG_NAME>- spell collections in this folder, are explicitly marked for generating spell books<NAMESPACE>:spell_scrolls/<TAG_NAME>- spell collections in this folder, are explicitly marked for generating scrolls<NAMESPACE>:weapon/<WEAPON_NAME>- spell collections meant for weapons (such as Wizard Staff)
- Fully data driven Spell Scrolls
- New item id:
spell_engine:spell_scroll - Generated for all spells listed under tags located in
spell_scroll/folder (such as:#wizards:spell_scroll/fire) - Automatically assigned item model based on tag id:
<NAMESPACE>:models/item/spell_scroll/<TAG_NAME>.json - Automatically assigned custom name based on tag id, translation key:
item.<NAMESPACE>.spell_scroll/<TAG_NAME>
- New item id:
- Fully data driven Spell Books
- All spell books now use the same item id:
spell_engine:spell_book - Generated for all spells listed under tags located in
spell_books/folder (such as:#wizards:spell_book/fire) - Automatically assigned item model based on tag id:
<NAMESPACE>:models/item/spell_book/<TAG_NAME>.json - Automatically assigned custom name based on tag id, translation key:
item.<NAMESPACE>.spell_book/<TAG_NAME> - Custom spell books can be made with datapacks, for any combination of spells, just with a spell tag (and some additional assets)
- All spell books now use the same item id:
- Spell Data structure changes
- Casting and release animations are now wrapped into a
PlayerAnimationobject, instead of a plain String PlayerAnimationsupports:overrides,speed- Reworked
spell.active.cast.channel_ticksnow representing the number of releases during channeling, instead of a duration interval (in game ticks) between channel releases
- Casting and release animations are now wrapped into a
- Relocated all equipment related APIs to a new dedicated package
rpg_series.item, to better separate them from the core spell engine APIs- types moved:
Equipment,Armor,ConfigurableAttributes,Weapon
- types moved:
API Additions:
- Added new
spell_choicesdata component- Defines a one-time single spell selection, from a given spell tag, before first use
- Designed for weapons meant for multiple classes (such as Wizard Staff)
- Add choices in Spell Books (Spell Binding Screen)
- Spells in the same tier are presented as choices
- Spell tags of spell books can be expanded with choices by third party content
- Behavior controlled by new
extra_tier_bindingfield of spell container
- Added new centralized weapon factory APIs (in
rpg_seriespackage)- Add
Weapons.javaAPI, creating melee and magic weapons - Add
Shields.javaAPI, creating shields - Add
RangedWeapons.javaAPI, creating bows and crossbows
- Add
- Added automatic item model registration for assets in the following folders:
models/item/spell_book/models/item/spell_scroll/models/spell_projectile/models/spell_effect/
- Added shared spell cooldowns
- Spells with the same coodown group set each other on cooldown
spell.cost.cooldown.groupfield specifies the cooldown group- To be used for weapon specific spells
- Added new delivery type:
MELEE, for performing better combat alike weapon swings- Upon performing this delivery type, the caster gains melee attacks, to be automatically executed
- Attack duration may be static, or attack speed based
- Custom hitbox definition, using OBB collision detection, ran on the client side
- Supports fx: animation, sound, particles
- Includes optional momentum to be gained with the attack
- Supports additional impacts to be performed on hit
- Add new impact type:
DISRUPT- Can disable: shield blocking, item usage
- Spell Data structure changes
- Added
spell.cost.cooldown.attempt_durationto prevent multiple performs of delayed deliveries
- Added
- Added
WeaponAttributeGeneratorto datagen API
Functional changes:
- RPG Series core dedicated sub-package now includes melee weapon skills
- Whirlwind (designed for double axes) - Hold to spin around, dealing {damage} damage per second, to nearby enemies.
- Cleave (designed for axes) - Performs a spin attack, dealing {damage} damage to nearby enemies.
- Ground Slam (designed for great hammers) - Leaps into the air and slams into the ground, dealing {damage} damage to nearby enemies.
- Smash (designed for maces) - SmashesDelivers a strike with powerful knockback, disabling shield and item usage of target.
- Flurry (designed for claymores) - Hold to unleash a rapid series of strikes, while also gaining momentum.
- Swift Strikes (designed for swords) - Unleash a rapid series of strikes.
- Impale (designed for spears) - Throws your weapon forwards, dealing {damage} damage and powerful knockback.
- Fan of Knives (designed for daggers) - Throws several of your blades in a cone, dealing {damage} damage, bouncing off terrain up to 2 times.
- Thrust (designed for glaives) - Lunge forward with your weapon, striking all enemies along your path.
- Swipe (designed for sickles) - Slide forward with your weapon, striking all enemies along your path.
- Added fallback config for automatic spell container assignment to weapons without spell container
- Supports various pattern matching methods (item id, item tag, regex, inversion)
- Config file:
config/spell_engine/weapon_fallbacks.json - Removed related old config options from
server.json5
- Added new server config options:
melee_skills_area_focus_mode- Determines the focus mode (AREA vs DIRECT) for melee skills.spell_book_additional_cooldown- Additional cooldown in seconds applied to spell book items, to prevent quick swapping and casting."
- Improved spell channeling mechanics
- Channel ticks are now calculated more accurately, spell haste actually increasing tick frequency
- Melee skill haste - casting duration is now effected by attack speed multiplier bonuses
- Fixed operation of spell variant, target:
AIM+ deliver:DIRECT+ area impact - Fixed Player data corruption caused by invalid spell identifiers #170
- Update loot injection defaults: Hellish Trials, Draugr Invasion
- Improved Friend or Foe logic on FTB Teams membership, thanks to LeDok
API Changes:
- Update
SpellBuilder.TriggermeleeKillsandrangedKillmethods to rely on spell school archetype - Reorganize
SpellBuilder.Triggermethods melee and ranged impact trigger methods
API Changes:
- Deprecated
SpellBuilder.Triggers.meleeKill - Added
SpellBuilder.Triggers.meleeKills(to include attack and skill based kills too)
Functional changes:
- Fix Accessories mod compatibility without class mods (Relics #16)
- Update translations
Functional changes:
- Fix obscure tooltip related concurrency crash #154
- Update translations
Functional changes:
- Update loot injection defaults (vanilla loot tables)
Functional changes:
- Fix Damage Taken attribute being applied twice
Functional changes:
- Fix crash for entities without critical attributes
Functional changes:
- Spell Volatility enchantment now applies for Weapons
- Fix crash without Spell Power mod (tiny config embed)
Functional changes:
- Added compatibility for Critical Strike mod
- Physical Melee and Ranged attacks can now critically strike based on Critical Strike mod's attributes
- Melee and Ranged impact events (Spell Triggers) are now flagged for critical strikes
- Attempt to fix turkish lowercasing issues #152
API Changes:
- Add conditional attributes to config structures
- WeaponConfig
- ArmorSetConfig.Piece
- ShieldConfig
Functional changes:
- Updated Fabric slot mod compatibility
- ships with Accessories and Trinkets support, only one set of the compatibility data files will be loaded, depending on which mod is present
- priority config available for when both are present:
config/spell_engine/fabric_compatibility.json
- Update NeoForge slot mod compatibility
- only ships with Accessories mod compatibility
- Updated translations
Functional changes:
- Improve Poison effect damage calculation, now doesn't kill
Functional changes:
- Fix dev crash: using a StashEffect Spell with a weapon in the off-hand #147
- Fix Poison effect not dealing damage at stack 1 #148
Functional changes:
- Improve Spell Hotbar handling, restored config for priority handler
Functional changes:
- Update loot injection defaults (RPG Structures)
- Add loot injection
skip_conditionsflag for Wither - Update some translations
Functional changes:
- Loot injection to entity loot tables, now comes with
killed_by_playercondition, to prevent automatic farming - Improve some config loading safety
Functional changes:
- Attempt some compatibility fix with Minecolonies
Functional changes:
- Updated NeoForge dependencies
- "Primary Spell" now show up as "Main Spell" for better clarity
- Add "Missing target" spell casting failure reason, for some spells
- Add "Passive" suffix to passive spell names in tooltips
- Add spell book explanation support
- Add global elemental weakness and resistances, configurable in
config/spell_engine/elemental_weaknesses.json - Fix Power Shot does not apply Mark at close ranges #133
- Fix Mobs panic indefinitely #142 (NeoForge)
- Fix all Poison related skills (by fixing the vanilla Poison effect to scale linearly with amplifier)
- Improve Spell Hotbar interaction with vanilla
Usekeybinding (spell casting and item usage should no longer overlap, offhand blocks are no longer placed after spell casting) - Improve evasion sound effect
- Evasion no longer works while casting spells or using items (configurable)
API changes:
- Remove deprecated
Spell.Active.Scrollstructure definition - Remove deprecated particles with hardcoded colors (such as: magic_white_stripe_float)
- Custom Effect renderers are now automatically scaled with the entity (can be disabled at registration)
Functional changes:
- Fix crash on archery bow-melee swap
Functional changes:
- Fix generic Spell Power base value for existing players
API changes:
- Reworked Spell Container merge logic
- Now ignores
contentTypewhen collecting containers - Accessible spells are filtered by Spell School archetype
- with an additional new field
spell.secondary_archetype
- Now ignores
Project changes:
- Move to Architectury workspace
- Add support for Accessories mod (Fabric & NeoForge)
- Fabric installations can choose between Trinkets and Accessories mod (config/spell_engine/fabric_compatibility.json)
Functional changes:
- Improved beam rendering on vanilla pipeline
Functional changes:
- Fix crash when Custom NPC applies potion effects to player #131
- Fix crash onEvasion for entities
API Changes:
- Add some common sounds
- Add some particles
Functional changes:
- Add spell cooldown reset announcements
- Update loot injection defaults
- Fix
flame_groundparticle frames - Fix rare spell cloud presence sound resolution crashes
- Fix Melee and Ranged spell schools double counting enchantments
API Changes:
- Rework
TAUNTaction- Now called
AGGRO - Options:
SET,CLEAR
- Now called
- Extend
SpellBuilderwith new spell making methods - Vertically rendered
area_...particle effects renamed toaura_... - Improved Spell Area Effect renderer
- Properly follows entity motion
- Aura effects automatically scale with followed entity
- Add new
areaandauraparticle effects - Stash effects are now scalable with the new field:
amplifier_power_multiplier - Allow
DIRECTspell delivery, to perform its impacts with no target, whenarea_impactis present - Add new external Spell Schools (Defense, Health)
- Add new spell trigger:
EFFECT_TICK- Only works for specifically coded Status Effect implementations
- Reference implementation:
TickingStatusEffect
- Add new mechanic: Evasion
- new attribute:
spell_engine:evasion_chance(applied to all living entities) - melee attacks and ranged attacks can be evaded, preventing damage taken
- evadable damage types listed under
spell_engine:evadabledamage type tag
- new attribute:
- Add new spell trigger:
EVASION- triggers when evading an attack
- Add new spell trigger:
DAMAGE_TAKENwith stagePRE- triggers when taking damage, before the damage is applied (damage amount is unmitigated)
WARNING: All players must use the same version, due to networking changes. (Players with Spell Engine 1.6.X, won't be able to connect to servers with Spell Engine 1.7.0)
Functional changes:
- Fixed spell container caching (spells sometimes not showing up on hotbar)
- Fixed projectiles hitting the caster sometimes (chain reaction), fixes #117
- Fixed direct spells delivering additional area impacts
- Fixed granular status effect removal (by spells)
- Improve Spell Registry synchronization (ditching base64), fixes #119
- Improve "On Cooldown" HUD message, no to be shown right after spell cast
- Update loot injection defaults
- Now include Armor Tier 4, and Armor Tier 5 entries
- Update Dungeons Arise: Infested Temple, Kisegi Sanctuary
API changes:
- Add new spell type
MODIFIER, to allow modifying existing spells in narrow pre-defined waysrange_addto add extra range to spellspower_modifierto add extra power, crit chance, crit damageeffect_amplifier_addto add extra amplifier to status effectseffect_duration_addto add extra duration to status effectscooldown_duration_deductto reduce cooldown durationprojectile_launchto modify projectile launch parameters (count, velocity, etc...)projectile_perksto modify projectile perks (ricochet, bounce etc...)additional_placementsto extend placements of spell cloudsmutate_impactsandimpactsto add additional impacts to the spellstash_amplifier_addto add extra amplifier to spell stashes- spell specific modifiers are stored in a cached manner
- Add Equipment Sets functionality, for creating item set bonuses
- Fully data driven (new data type, stored in DynamicRegistry), defined in data files
- Data file location:
data/NAMESPACE/equipment_set/MY_SET.json - Equipment set bonuses can provide: attributes, spells (active/passive/modifier)
- Supports any kind of equipment (weapons, armors, shields, trinkets...)
- Spell tooltips now automatically work for all token types, in plural mode
- such as:
{effect_duration_1},{effect_duration_2}
- such as:
- Universal pattern matching logic now supports universal negate, such as:
!namespace:pathmatches everything exceptnamespace:path!#namespace:pathmatches all items except ones insidenamespace:pathtag!~my_regexmatches everything except the regex
- Add server side spell container sources
- Synced to players
- Managing its content requires granular add/remove operations and imperative sync
- Spell structure changes:
- Add spell cloud
impact_cap(for trap-like mechanics) - Add new impact action:
TAUNT, forcing entities to attack the caster - Add
area_impact.triggering_action_type, for only matching impact types to trigger area impact - Add
area_impact.execute_action_type, for filtering impact types to execute area impact actions - Add
area_impact.skip_center_target, to skip center target for area impact - Add
impact.chance, to allow random chance for impact to happen - Add new trigger
SPELL_AREA_IMPACTfiring afterarea_impactis executed - Cloud delivery now supports location
- Add spell cloud
- Status Effect
RemoveOnHitAPI reworked, expanded:- Indirect spell damage events (such as area effects) now produce DamageSource that counts as indirect
RemoveOnHitaccepts trigger type, to only be removed upon direct or indirect hitsRemoveOnHitaccepts removal chanceRemoveOnHitaccepts remove stack count
- Update included particle types
- magic/vertical_stripe particles are now animated
- Add
sign_fistparticle type
- Add SpellEngineEffects, for common status effects, such as:
spell_engine:stun
Functional changes:
- Fix orbiting effect renderer stutter (for example: Divine Protection)
Functional changes:
- Fix effect removal out of bounds warning
- Fix passive spells triggering on already dead targets
- Bundles no longer have support for the Quiver slot
- Improve FTB Teams support, thanks to Muon #115
API changes:
- Add Status Effect impact,
amplifier_capfield
Functional changes:
- Friend or Foe logic now supports FTB Teams membership
- Friend or Foe logic extended with additional configuration options
- Update loot injection defaults
API changes:
- Status effect impact type, remove mode, now supports id pattern
- Universal pattern matcher now supports negated explicit match (prefix:
!)
Functional changes:
- Attempt to fix stuck spell casting sounds
- Update spell hotbar Mouse keybind visualisation
- Update translations
- Data tags, for compatibility with the reworked Amplify Spell enchantment
- Data tags, for implicit compatibility with Spell Volatility enchantment
API changes:
- Data gen API, now accepts
magicalparameter for armor tag generation (Spell Volatility)
Functional changes:
- Improve loot injection defaults (DnT combat shrines)
- Add safeguard against collision detection infinite loop
Functional changes:
- Improve loot injection defaults
- Spell scrolls now generate with custom names based on spell
API Changes:
- Add
SpellEvents.HEAL - Add
SpellTagsNumberedapi to assign numbers to spell tags - Spell scrolls can now have custom texture based on tag membership of the first contained spell
Functional changes:
- Add Spell Cast criteria (
spell_engine:spell_cast)
Functional changes:
- Spell scrolls can now be disassembled for XP, using vanilla Grindstone
- Update advancements
Functional changes:
- Update loot injection defaults (Friends or Foes, Dungeons and Taverns tweaks)
Functional changes:
- Update loot injection defaults
- Disable spell casting while doing combat roll
API Changes:
- Add new player animations, thanks to Forg
- Add wand weapon type (split from staves)
Functional changes:
- Fix loot injection crash, for incomplete tag caches
Functional changes:
- Fix some translations typos
- Fix various loot injection problems
- Improve loot injection defaults
Functional changes:
- Fix spell scroll tooltips
- Reworked spell binding loot function (
spell_engine:spell_bind_randomly), now supports multiple parameters- (new) spell pool
- spell tier
- (new) spell count
- Loot injection now supports item tag filters
API Changes:
- BREAKING! Changed path for loot tier tags
- Add some more generic sounds
- Add spell delivery delay
- Add spell trigger cap per tick
- Add impact
attribute_from_targetfield - Add spell trigger melee condition fields (
melee.is_combo,melee.is_offhand) (based on Better Combat combo) - Add spell trigger spell condition fields
- Add spell cooldown impact
- Add SpellProjectile custom bounding box with volumetric collision detection
- Add some new template particles, supporting parameter fields from ParticleBatches
- color
- scale
- follow_entity
- max_age
- Add template particles: spell sparkle variants
- Add template particles: spell area effect variants
- Add template particles: sign variants
spell.active.scrollis now deprecated, marked for removal
Functional changes:
- Spell batching and world scheduler related bug fixes
API Changes:
- Add field to hide tooltip header
- Add
equipment_conditionfield to spell triggers - Add more spell container constructors
Functional changes:
- Restore data driven spell assignments
- Allow passive spells to work from off hand
API Changes:
- Add spell batching (trigger, cooldown)
Functional changes:
- Improve spell projectile stability
- Fix block tags
API Changes:
- Improve weapon entry creation and parameters
- Fix SpellTriggers.onSpellImpactAny missing type cast
Functional changes:
- Slightly reduce relic drop changes
API Changes:
- Add improved sound generator utility
Functional changes:
- Add
/spell_cooldowncommand to reset specific or all spell cooldowns for given players - Add Spell Cooldown are now persistence and synchronization (between game sessions and dimension changes)
- Add relic loot tags and injection entries (bumped loot config:
config/rpg_series/loot_equipment_v1) - SpellBooks on cooldown can now be unequipped in creative mode
- Fix spell tooltip power estimation causing rare crashes
- Fix overly reactive spell hotbar
- Fix knockback direction of directly delivered spell impacts
- Fix spell cloud data tracker
- Fix BuffParticleSpawner spawned batch shape
- Fix spell projectile chain reaction forwarding null spell entry
API changes:
- Add maxSpellCount option for spell book creation
- Extend BuffParticleSpawner constructors
IMPORTANT DISCLAIMER:
- This update requires content mods to be updated, due to major API changes
Functional changes:
- Built in trinket slots
- Spell Book slot
spell/book(enabled by default) - Spell Scroll slot
spell/scroll(disabled by default) - Quiver slot (in standalone group)
misc/quiver(enabled by default) - Quiver slot (in the
spell group)spell/quiver(disabled by default)
- Spell Book slot
- Add engine level immunity against slowing, rooting and stunning effects for bosses
API Changes:
- Build with Fabric Loom 1.9
- BREAKING CHANGES!
- Completely refreshed spell data structure
- Add spell
typedo differentiate betweenACTIVEandPASSIVEspells - Spell structure:
castandscrollmoved intoactiveobject - Spell structure:
costreworked to be more structured - Spell structure:
release.targetsplit intotargetanddeliver - Completely rewrite spell stashes, now powered by unified spell triggers, stash effects are now automatically linked
- Rewrite spell impact target conditions, now unified with spell trigger target conditions
- Rewrite spell container merge logic
- Spell containers are now resolved from: main-hand, off-hand, equipment, trinkets (plugin)
- Custom spell container sources can be added
- Spell containers are cached for improved performance
- Add spell container
slotfield, to allow offhand containers
- Rewrite ammo handling
- Add support for ammo lookup in container items (Bundle)
- Add support for multiple ammo item cost
- Add quiver slot for Quivers and Rune Pouches
- Add support for passive spells
- Add spell triggers (for passives and stashes): ARROW_SHOT, ARROW_IMPACT, MELEE_IMPACT, SPELL_IMPACT_ANY, SPELL_IMPACT_SPECIFIC, DAMAGE_TAKEN, ROLL
- Removed
HealthImpactingstatus effect configuration interface. Replaced by new attributes:spell_engine:healing_takenspell_engine:damage_taken
- Misc technical
- Impact.apply_to_caster now overrides all intent checks, add effect remove action
- Add StatusEffectClassification to check action impairing effects
- Included sound entries are now available as static references in
SpellEngineSounds - StatusEffect impact can now be used for helpful and harmful dispels
- Spell Projectile data synchronization rewritten
- Add generic data file providers to be used by any content mod
- SpellGenerator
- SimpleParticleGenerator
- SimpleSoundGenerator
- Magic related particles are now sorted and systematically generated
- Name formula:
magic_FAMILY_SHAPE_MOTION - Example:
magic_frost_impact_burst - For all variants, check out
net.spell_engine.fx.Particles - ParticleBatch
PIPEshape now fixed, useWIDE_PIPEfor old behaviour - Clean up magic related particle effects
- Name formula:
- Restructure config related api packages
- Fix Spell Registry synchronization, datapacks should no longer cause connection failure
- Fix Spell Projectiles sometimes visually glitching after piercing a target
- Fix Spell Projectiles spamming the console
- Allays and Iron Golems are now considered as friendly by default
- Improve spell projectile interpolation
- Fix high luminance of beams spell layer ordering
- Fix brightness for some spell particles
- Fix Arcane Charge not applying to spell caster
- Fix unstable multiplayer alongside Better Combat mod
- Improve render effect of spell beams (with added configuration to disable high luminance)
- Restore disabling creation of certain spell books, by adding to them to
spell_engine:non_craftable_spell_booksitem tag
API Changes:
- Add
spell.projectile.homing_after_absolute_distanceto allow homing projectiles to start homing after reaching certain distance - Add
spell.projectile.homing_after_relative_distanceto allow homing projectiles to start homing after reaching certain distance relative to the target - Add
spell.release.target.projectile.direction_offsetsto allow shooting projectile into various directions - Add
channelTickIndexto ImpactContext, to allow tracking channeling progress
IMPORTANT DISCLAIMER:
- Items in the spell book trinket slot will be lost (as the slot itself is being relocated)
- This update requires content mods to be updated, due to major API changes
Functional changes:
- Add support for spell scroll slot, can be enabled using data pack
- Rework trinkets integration, to declare custom slot group
- Rework container merge logic
- Spell cooldowns now get imposed onto the hosting item
- Durability cost of spell cast will be imposed on the source ItemStack of the spell (if possible)
- Spell projectiles may perform area impacts when colliding blocks
- Fix empty spell scrolls generated in loot chests
- Updated loot defaults (Illager Invasion)
API Changes:
- Add
spell.cost.cooldown_hosting_itemto disable imposing spell cooldowns onto the hosting item - Add
spell.range_meleeto match spell range with melee attack range (EIR) - Add
spell.impact.target_conditionsallowing entity type specific immunities, weaknesses and resistances
- Fix dedicated server crash
- Fix container merge logic
Functional changes:
- Add Spell Scrolls, automatically generated for all spells, found in loot chests, can be added to matching spell books
- Add support for any spell book logic, any item can be turned into a spell book by adding to
spell_engine:spell_bookstag, and adding proper spell container to it - Improved Spell Container merge logic, to allow resolving spells from equipment (New config options available in
spell_engine/server.json5, starting withspell_container_from) - Renamed loot config (responsible for equipment loot injection) to
rpg_series/loot_equipment.json - Add separate config file for Spell Scroll loot injection,
rpg_series/loot_scrolls.json - Update loot config defaults (Aether Villages, BOMD: Obsidilith, DNT: End Castle, Dungeons Arise: Shiraz Palace, Aviary)
- Spell Books and Spell Scrolls placeable into Chiseled Bookshelf
- Fix spell tooltip ordering with advanced tooltip
- Fix loot injection from non tag entries
API Changes:
- Add
spell.learn.enabledfield to disable unlocking via Spell Binding Table - Add
spell.scrollobject, defining various spell scroll related parameters - Spell container from held item, now requires
is_proxy = trueto cast spells
Functional changes:
- Fix HUD rendering issues
Functional changes:
- Modify loot config, to reduce loot frequency in some of the commonly occurring chests
- Restore LambdaDynamicLights compatibility
API Changes:
- Add
spell.cast.animation_pitchfield
Functional changes:
- Rework spell hotbar logic around
Usekey (right-click), to enable compatibility with weapons those have a right click use (such as Trident) - Rewrite first person camera compatibility (to support FirstPersonModel and Real Camera)
- Fix item use while spell casting
- Fix rendering on hidden HUD (Fabric API related)
- Fix spamming console with advancement info
- Fix misc render crash #87
- Fix spell projectile rendering order issues
API Changes:
- BREAKING - Deprecated all item usage related fields and types in Spell.java
- Internal: SpellHelper.performImpacts now requires array of impacts to be supplied
- Extend ArrowPerks API with custom array of impacts
- Add SpellStash capability to StatusEffects to store a spell
- Improve safety of Spell Projectile persistence
- Fix rare case where offhand item use was incorrectly shown on Spell Hotbar
- Improve safety of effect ID synchronization
Functional changes:
- Allow falling projectile (Meteor alike) spells to be casted on the ground
- Netherite (and above) armor and weapons get automatic fireproof setting
- Fix some tooltip issues
- Reinstate Trinkets mod requirement
- Disable Dynamic Lights compat, to avoid crashing, as updated alternatives violate class path
API Changes:
- BREAKING, internal! - SpellHelper.performSpell expects SpellTargetResult instead List of entities
- Add spell release type
METEORrequires_entityfield
Functional changes:
- Improve auto swap feature, to prioritize block interactions
- Fix targeting Ender Dragon with spells #63
- Lower Fabric API version requirement
- Improve spell Beam rendering (no longer casts shadows, no longer conflicting with other transparent blocks, such as water)
- Improve Friend or Foe logic, direct damage within teams with friendly fire enabled is now allowed as expected
- Add loot table injections to: Trial Chambers chests, Stronghold Corridor
- Disable right-click interaction while actively casting spells
- Allow running on 1.21
- Fix spell cooldowns causing disconnects on dedicated servers
- Fix Spell binding table crafting
- Update to Minecraft 1.21.1
Functional changes:
- Player scale increasing spell range
- Add Spell Projectile safeguards against crashing
- Improve SpellBook tooltips
API Changes:
- BREAKING! Asset directory for animations have been renamed from
spell_animationstoplayer_animations - Add DataComponent for Spell Container
- Spell Container is now immutable as record
- Add Spell Projectile launch sound
Functional changes:
- Improve auto swap feature to consider tools #71
- Client side configurable tooltip of "Casts spells from equipped Spell Book"
Functional changes:
- Spell Binding Table spell entries now have more clear requirement and cost information
- Add
spell_book_creation_enabledconfig option to disable spell book creation at the Spell Binding Table - Add
spell_binding_level_cost_multiplierconfig option - Add
spell_binding_lapis_cost_multiplierconfig option
Functional changes:
- Reduce spell book creation level requirement
- Attempt to fix deseralization crash #62
- Fix Arcane Blast targeting allies
- Fix stuck casting sounds
API Changes:
- Extend item config attribute resolution
Functional changes:
- Reworked loot injection system, now able to spawn enchanted loot from tags
- Update Spell Infinity custom application condition, custom items can now be enabled by adding to
spell_engine:enchant_spell_infinitytag
Functional changes:
- Disable class switching during cooldowns
- Add spellbook equip sound
Functional changes:
- Improve automatic hand swap feature
API Changes:
- Add throw related player animations
- Make rage buff particles translucent
Functional changes:
- Improve automatic hand swap feature
- Hide Spell Hotbar when player is in Spectator mode
Functional changes:
- Improve automatic hand swap feature
Functional changes:
- Add automatic hand swap (client configurable feature)
- Works when having a melee weapon and a skill use weapon in main and off hands
- Attack key will swap the melee weapon to the main hand
- Use key will swap the skill use weapon to the main hand
- Typically useful for archers (bow + spear)
- Fix random crashes of Spell Projectiles
- Update to latest Shoulder Surfing API
Functional changes:
- Improve Spell Binding obfuscation style (thanks to fzzyhammers)
- Add new particle effects and player animations
- Add global cooldown after instant spell cast (configurable)
- Update advancements scope and basic structure
API Changes:
- BREAKING! Replace spell projectile
ProjectileModel.RenderModewithOrientation - BREAKING! Spell tooltip: Multiple placeholders of the same kind have new format (example:
{damage_1},{damage_2}...) - Update Fabric Loader to 15+ for embedded MixinExtras
- Add custom spell tooltip mutators (refactored SpellTooltip internals)
- Add teleport "BEHIND_TARGET" teleport action type
- Add spell projectile model rendered as held item (for throw skills)
- Add spell projectile travel sound
- Add spell specific movement speed multiplier during casting
API Changes:
- BREAKING! - Migrated to new version of Spell Power Attribute API
- Migrated to new version of Ranged Weapon API, Projectile Damage Attribute is no longer being used
- Expose
PHSICAL_RANGEDandPHYSICAL_MELEEschools into public package (ExternalSpellSchools)
Functional changes:
- Add obfuscated spell binding entries, when Spell Binding Table is not having enough supporting bookshelves
- Migrate to latest API of Shoulder Surfing
- Draw Speed attribute (
ranged_weapon:haste) working as haste for archery skills (PHSICAL_RANGEDschool)
API Changes:
- Change embedding scope of
ExtraRadiustoAreaImpactto be more widely applicable
Functional changes:
- Update Italian translation, thanks to Zano1999
- Fix render glitches of spell objects without emitted light, when not using shaders
- Add
{cloud_radius}placeholder support to spell tooltip
- Add particle batch extent special behaviour
- Add Spell Cloud extra radius
- Add Spell Cloud center model rendering
- Fix launch crash on dedicated servers
API changes:
- Add
groupfield to spell data, to group spells together (Spells with the same group override each other, prioritized by tier) - Add particle batch
invertfield, to spawn particles with reverse motion - Add particle batch
pre_spawn_travelfield, to offset particle position relative to motion - Add particle batch
rollandroll_offsetfields, to spawn particles with rotated motion vector - Add
nature_spark_miniparticle - Add new impact action type:
SPAWN, for spawning entities - Add new impact action type:
TELEPORT, to move the caster around - Add barebone immunity API
- Add ShaderCompat helper to determine active shader
- Add CustomLayers raw constructor
- Add two-way entity collision API
- Add SpellCloud
presence_sounddata field, batch spawning, custom positioning and timing - Add SpellCloud
spawnstructure for particles and sounds for spawning - Add SpellCloud LambDynamicLights support
- Add new spawn directives for Meteor spawning
Functional changes:
- Spell Container resolution
- Trinkets mod is now technically optional, to enable better interoperability for Forge players
- When Trinkets mod is missing, spell books can be put into the offhand slot (needs to be enabled in
config/server.json5 spell_book_offhand) - Spell Containers are now resolved and combined from all equipped trinket slots (prioritizing Spell Book slot first)
- Usable offhand items (such as Shields) are now visible on the Spell Hotbar
- Add new loot config using rpg series item tags, into
config/rpg_series/loot.json - Loot configuration now supports item tag id entries
- Spell particle emitting entity yaw and pitch now being synchronized
- Fix projectile pitch setting #40
- Fix some spells unable to hit Ender Dragon
- Update Italian translation, thanks to Zano1999
- Piglins love RPG Series golden weapons
- Fix channeled spell particles not being rendered, from player behind (for example: Fire Breath)
- Add some comments to config
- Add missing translation for Spell Area Effect entity
- Add support for Supplementaries Quiver, for Archery skills
Functional changes:
- Add generic item use skills (
spell_engine:use_item,spell_engine:use_offhand_item) - Add sneak to bypass Spell Hotbar (disabled by default, client configurable)
- Disable spell casting in Spectator mode
- Fix random crashes on PersistentProjectileEntity
- Fix Spell Binding Table arrow color states
API Changes:
- Add armor set modifier to allow/disable spell power enchantments
Functional changes:
- Fix on cooldown error messages when spell gets into cooldown
- Update Spell Binding Table arrow button appearance
API Changes:
- Add arrow perks damage multiplier
- Disable hotbar directly for spell books
- Disable MultiShot arrows being able to bypass iframes
- Update Italian translation, thanks to Zano1999
Functional changes:
- Update Spell Book slot icon
- Spell hotbar now renders fancy mouse and keyboard icons
- Fix dropping item not cancelling spell casting
- Fix swapping to caster item with number keys starting spell casting right away
- Spells with
arrowitem cost, now rely on vanilla Infinity enchantment - Cancel spell casting upon opening GUI
API Breaking changes:
- Add area effect capability to any spell impact (moved from SpellProjectile)
- Rework the data part of
PROJECTILEandMETEORrelease types - In
ProjectileData.ClientDataprojectile model related data has been moved into a subfield namedmodel - ItemConfig.Attribute
namefield retired, now full attribute id needs to be specified inidfield - ProjectileModel
RenderModenew default is nowDEEP
API Additions:
- Add spell impact specific schools definition
- Add new spell area effect cloud release action
- Add
contentfield to Spell Container to indicate the type of supported spells (Spell vs Archery skill) - Add
modefield for spells, to allow using items instead of casting spells - Add
casting_animates_ranged_weaponfor spells, to animate held bow pull state based on spell cast progress - Add
light_levelfield to Spell Projectile client data, to allow emitting ambient light (using LambDynamicLights) PHYSICAL_RANGEDschool can now be used for spells, given that Projectile Damage Attribute mod is installed- Arrows being shot while casting spell with
"mode": "ITEM_USE", or shot with"type": "SHOOT_ARROW"can perform impact actions of the spell, can have their custom projectile model - ItemConfig
attributes[].idfield now accepts projectile damage and combat roll related attributes. Third party attributes can be support via Mixin intoAttributeResolver - Add
HealthImpactinginterface for status effects, to modify damage and healing taken - Add some shared status effect renderers:
OrbitingEffectRenderer,StunParticleSpawner - Fix spell tooltip indexed tokens
Other changes:
- Update MixinExtras to 0.2.0
- Add mouse scrolling to spell binding table GUI
- Fix item damage causing spell casting interrupt
- Keep order of
player_relationsin server config
Spell Hotbar can be controlled via Keybindings!
- Multiple hotkey behaviors available (hold to cast, press to cast), configurable for different casting mechanics separately
- Custom hotkeys can be assigned
- Vanilla hotkeys (such as use key, item hotbar keys) can be used, when no custom hotkeys are assigned
- Switching between item and spell hotbar is no longer needed, nor possible
- Spell Hotbar keybind is rendered on HUD
Other changes:
- Spell Haste effects spell casting animation playback speed
- Spell data files can now specify if Spell Haste should affect cooldown and casting speed
- Internal refactor for the entire spell casting mechanism
- Spell casting no longer stutters when quick switching between spells
- Optimise spell projectile sync payload
- Fix server config
player_relationsbeing reset on every launch
- Fix projectiles ricocheting to allies
- Fix projectile area impacts affecting allies
- Improve luminance of rendered beam spells
- Remove Architechtury toolchain, replaced with pure Fabric toolchain
- Add Spell Projectile light emission data field
- Add safeguards against SpellProjectile perks being null
- Add universal Spell Projectile perks: ricochet, bounce, pierce
- Add support for Spell Projectiles performing area effects
- Add support for Spell Projectiles to be spawned multiple times
- Add Spell Projectile launch events to Java API
- Add italian translation by Zano1999 #21
- Improve area effect in-radius check
- Fix right click to use abilities for blacklisted and datapack disabled items
- Fix HUD render blend glitch
- Migrate to new Fabric API model loading functions
- Add configurable entity relations (by arbitrary entity id). Iron Golem and Guard Villagers included by default.
- Restore and improve Shoulder Surfing compatibility
- Spell books can be removed from Spell Binding Table
- Support Minecraft 1.20.1
- Add protection against random crashes caused by UI #19
- Add Spell Binding Table item hint
- Fix stunned horses being able to walk around, thanks to Noaaan!
- Improve spell tooltip footer
- Fix spell damage estimation when having zero spell power
- Fix crash with Artifacts #16
- Add book placeholder icon to Spell Binding table GUI
- Add support for enchanted items in loot configuration
- Disable spell haste for generic weapons
- Increase Spell Binding table offer count cap (from 10, to 32)
- Add fallback compat blacklist regex
- Fix Spell Book creation in multiplayer
- Add Spell Book system (requires on Trinkets mod)
- Add Spell Book creation advancement criteria
- Add spell casting capability for weapons (data pack compatible, server configurable:
add_spell_casting_to_swords,add_spell_casting_regex) - Refactor enchantment restriction internal API
- Fix incompatibility with Taterzens #11 (samolego/Taterzens#132) - Thanks to Nillo-Code
- Fix keybind for viewing spell info #12
- Fix spell swords not harvesting cobwebs fast enough
- Extend Java API with custom spell handlers
- Add
SEMI_FRIENDLYandMIXEDentity relations - Add
spell_poolcondition to spell binding advancement criteria - Remove advancements spell cast criteria (due to theoretical poor performance)
- Set
generic.attack_damagevanilla attribute to be synchronized over to clients - Fix use spell_cost_item_allowed still requiring at least 1 rune
- Allow Fire Aspect for staves
API breaking changes:
spell.impact[].action.status_effect.apply_to_casterwas moved tospell.impact[].action.apply_to_caster
JSON API changes:
- Add min_power to
spell.impact[].action - Area effects can now target the caster too
- Add new particles
- Add support for dual intent spells
Java API changes:
- Extend armor and weapon creation API
- Extend particle effect JSON API
- Add loot configuration API
- Add Ukrainian translation, thanks to un_roman
- Fix issues for Turkish players
- Improve spell cast sync
- Prevent spam click cheesing channelled spells
- Add FirstPersonModel support
- Remove use deprecated Spell Power API
- Fix server launch crash
- Fix Spell Binding Table mining properties
- Add new particle effects
- Add action impairing status effect system (aka CC, for example: Stun, Silence)
- Add entry and config definitions of armors and weapons to API package
- Allow offhand items to be used while ALT is held (such as Bow, Shield)
- Allow no pool in spell containers if spell id list is non-empty (wands)
- Simplify tooltip headers
- Remove dependency to Better Combat (first person animations are now supported by PlayerAnimator)
All spell bindings have been reset due to a major API change! We apologize for the inconvenience.
- Change spell assignment by introducing spell pools (API breaking change!)
- Fix sound stuck casting sound when swapping hands
- Add Shoulder Surfing adaptive crosshair support
- Update dependencies
- Make Better Combat mandatory due to beam render glitch
- Add spell cast attempt failure reason to HUD
- Changed custom model registration behaviour, no longer defaults to item subfolder (API breaking change!)
- Improve HUD config data structure
- Improve spell cast synchronization
- Fix mixin extras error for dependent projects
- Fix spell caster items preventing shield blocking
- Fix empty nbt tag causes items not to stack #5
- Improve mixin compatibility, lift breaks on Carry On
- Add spell power caching
- Add sticky targets
- Add filtering invalid targets
- Add proper friend or foe logic (configurable, now consistent with Better Combat)
- Add teammates being able to shoot projectiles through each other (configurable)
- Add spell hotbar control hint, update default client config
- Fix spell projectiles knocking back targets at incorrect angle
- Improve spell hotbar visibility in HUD config screen
- Specify Fabric API version requirement
- Add breaks flag for Carry On :(
- Add Spell Binding advancement criteria
- Add specific enchantment advancement criteria
- Fix channeled spells not released when switching to other items
- Remove some redundant configs
- Add Spell Hotbar indicator for minimized spells
- Add Spell Binding Table tooltip hint to empty staves
- Add StaffItem to API
- Allow Knockback and Looting enchantments for StaffItem
- Improve tooltip logic
- Improve target highlighting
- Fix crash when Better Combat is absent
- Fix Spell Binding Table no offers in multiplayer
- Fix Spell Binding Table disconnect in multiplayer
- Fix server crashes
- Initial alpha release