Changelog - TheComputerGeek2/MagicSpells GitHub Wiki

[!NOTE] 4.0 Beta 17 has been tested on 1.21.4.

Breaking Changes:

  • The default value for the DrainlifeSpell options take-type & give-type has been changed from the deprecated health type to health_points. health and its related spell options damage-type and ignore-armor, which depend on Bukkit Damage Causes, should be replaced with the new drain-damage-type option.
  • Passive spells configured with helper-spell: true will now trigger for any player.

Changes:

  • Removed character limitation (alphanumeric + _) on default values of the %arg placeholder in spell messages and string expressions.
  • Removed [3, 16] length limitation on player names in string expressions for the %playervar and %playerpapi placeholders.
  • Spell cooldown now supports function expressions.
  • RegrowSpell can now target bogged.
  • ShearSpell can now target all Shearable. Added vanilla-sheep-shearing boolean option for backward compatibility, which defaults to false.
  • Some of our features have been deprecated and better alternatives have been added. More information can be found on the linked pages:
  • MagicSpellsEntityDamageByEntityEvent now has its own HandlerList; this requires plugins to listen for it explicitly. This event should generally not be used. InvulnerabilitySpell, ResistSpell, fataldamage, givedamage, takedamage still listen to the event for legacy support.
  • Removed most usages of MagicSpellsEntityDamageByEntityEvent.
  • Lowered the default value of the buff-check-interval option in general.yml from 100 to 1.
  • The duration option of buff spells now supports variable replacement.
  • Non-players can now activate the equip and unequip passive triggers.

Additions:

  • Added predefined spell tags:
    • magicspells:beneficial for spells configured with beneficial: true
    • magicspells:helper-spell for spells configured with helper-spell: true
  • The Legacy String Spell Filter now supports a new form of a String Spell Filter with logical expressions. Some options that only supported the Config Spell Filter now also support the new String filter (but not the legacy one):
    • General Spell Config | interrupt-filter
    • ImpactRecordSpell | filter
    • ListSpell | filter
  • Added meta variables:
    • meta_attack_cooldown - It gets the current cooldown for a player's attack, with 1.0 representing a fully charged attack.
    • meta_current_tick
    • meta_body_yaw
  • Added the respect-item-cooldowns option to general.yml, which defaults to false. When true, an item with a cooldown (white hotbar overlay) cannot be used to cast or cycle spells.
  • Spell shared-cooldown has been expanded with a Config format and Spell Filters.
  • Added usingitem modifier condition. Passes if the Magic Item in the ConditionArg is actively "used" or consumed.
  • Added the transform-entities option to LightningSpell. Defaults to true. When transform-entities: false, the lightning spawned by the spell will not transform entities (turn villagers into witches, pigs into zombified piglins, etc.).
  • Added support for the armorstand effect on the ProjectileSpell.
  • Added the input passive trigger.
  • Added the input modifier condition.
  • Added the trail section to the particles spell effect, for use with particle-name: trail.
  • Added the stop-on-success option to TargetedMultiSpell. Defaults to false. Stops subspell processing when a subspell successfully casts.
  • Added the real-time-duration option to buff spells. Defaults to false. When true, duration is tracked using real time, instead of ticks. As such, lag will not impact the duration of the buff spell.

Fixes:

  • Fixed an issue where the ModifyCooldownSpell only worked if the spell was on cooldown.
  • Fixed an issue with the LightwalkSpell throwing errors while turning off and not removing light blocks in some cases.
  • Fixed an issue with the LilywalkSpell not working correctly.
  • Fixed an issue with Subspell's chance cast argument being in the range 0-1 instead of 0-100.
  • Fixed an issue with the ExternalCommandSpell's block-chat-output and store-chat-output options, which didn't correctly capture plugin chat message types. Those options unfortunately can no longer capture Vanilla command chat output.
  • Fixed an issue with the DisguiseSpell sending errors when LibsDisguises wasn't present.
  • Fixed an issue with the SpawnEntitySpell throwing an error during reload if an entity with duration did not expire.
  • Fixed an issue with the ticks passive trigger causing errors when misconfigured.
  • Fixed an issue with the effectlib effect particle color option throwing errors when set to random.
  • Fixed an issue where playing the entity and armorstand effect with delay did not pass the spawned entities to spells that should remove them on reload or drag them along their path, such as orbits, projectiles, etc.
  • Fixed an issue where the HomingMissileSpell was not cleaned up on plugin reload.
  • Fixed an issue with the vibration-origin option that prevented it from functioning.
  • Fixed an issue with the stop-on-fail option of TargetedMultiSpell that prevented delayed spells from being cancelled when a subspell cast failed.
  • Fixed an issue with tick-based buff spell duration being inaccurate.
  • Fixed an issue with defaults.yml that caused certain options to fail to inherit default values.
  • Fixed an issue with string expressions and rounding in placeholders that supports specifying precision.
  • Fixed an issue where orbit and buff spell effects stopped playing after player death even if the buff remained active. It will now resume after respawn.
  • Fixed issues with LoopSpell:
    • If the target was a dead Player, the loop used to end instead of pausing.
    • If there was no target, the Loop didn't check if the caster was dead to cancel the loop or pause it if the caster was a Player.
    • If the Loop was cast without a caster, some errors used to be thrown under some circumstances.
  • UnbindSpell no longer reloads the spellbook (which removes all active buffs of the target) when cast to unbind all spells of an item (/c (unbind) *).