Changelog - TheComputerGeek2/MagicSpells GitHub Wiki
[!NOTE]
4.0 Beta 17
has been tested on1.21.4
.
Breaking Changes:
- The default value for the
DrainlifeSpell
optionstake-type
&give-type
has been changed from the deprecatedhealth
type tohealth_points
.health
and its related spell optionsdamage-type
andignore-armor
, which depend on Bukkit Damage Causes, should be replaced with the newdrain-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 targetbogged
.ShearSpell
can now target allShearable
. Addedvanilla-sheep-shearing
boolean option for backward compatibility, which defaults tofalse
.- Some of our features have been deprecated and better alternatives have been added. More information can be found on the linked pages:
InvulernabilitySpell
-damage-causes
ResistSpell
-normal-damage-types
DotSpell
-damage-type
DrainlifeSpell
-health
drain typePainSpell
-damage-type
fataldamage
passive triggergivedamage
passive triggertakedamage
passive triggerhasitem
modifier condition
MagicSpellsEntityDamageByEntityEvent
now has its ownHandlerList
; 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 ingeneral.yml
from100
to1
. - The
duration
option of buff spells now supports variable replacement. - Non-players can now activate the
equip
andunequip
passive triggers.
Additions:
- Added predefined spell tags:
magicspells:beneficial
for spells configured withbeneficial: true
magicspells:helper-spell
for spells configured withhelper-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
- General Spell Config |
- Added meta variables:
meta_attack_cooldown
- It gets the current cooldown for a player's attack, with1.0
representing a fully charged attack.meta_current_tick
meta_body_yaw
- Added the
respect-item-cooldowns
option togeneral.yml
, which defaults tofalse
. Whentrue
, 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 toLightningSpell
. Defaults totrue
. Whentransform-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 theProjectileSpell
. - Added the
input
passive trigger. - Added the
input
modifier condition. - Added the
trail
section to theparticles
spell effect, for use withparticle-name: trail
. - Added the
stop-on-success
option toTargetedMultiSpell
. Defaults tofalse
. Stops subspell processing when a subspell successfully casts. - Added the
real-time-duration
option to buff spells. Defaults tofalse
. Whentrue
, 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 range0-1
instead of0-100
. - Fixed an issue with the
ExternalCommandSpell
'sblock-chat-output
andstore-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 withduration
did not expire. - Fixed an issue with the
ticks
passive trigger causing errors when misconfigured. - Fixed an issue with the
effectlib
effect particlecolor
option throwing errors when set torandom
. - Fixed an issue where playing the
entity
andarmorstand
effect withdelay
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 ofTargetedMultiSpell
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) *
).