Releases: TheComputerGeek2/MagicSpells
MagicSpells-4.0-Beta-17
Note
4.0 Beta 17 has been tested on 1.21.4 through 1.21.8.
Notes for developers:
As of #1024 BuffSpell#turnOff is no longer an abstract method, but it now calls BuffSpell#turnOff(LivingEntity) for all entities in a new BuffSpell#getActiveEntities method, so you don't have to call it yourself. When implementing Buff spells, please override BuffSpell#getActiveEntities, and if you implement BuffSpell#turnOff, call super.turnOff().
Breaking Changes:
- The default value for the
DrainlifeSpelloptionstake-type&give-typehas been changed from the deprecatedhealthtype tohealth_points.healthand its related spell optionsdamage-typeandignore-armor, which depend on Bukkit Damage Causes, should be replaced with the newdrain-damage-typeoption. - Passive spells configured with
helper-spell: truewill now trigger for any player. - The
ParticleCloudSpelloptionpotion-effectsnow relies on the common Potion Effects List format, which causes a minor breaking change in the string variant of the format (<potion> <duration> <amplifier> <ambient> <particles> <icon>), whereambientnow refers toggleshidden, andparticlesnow togglesambient.
Changes:
- Removed character limitation (alphanumeric +
_) on default values of the%argplaceholder in spell messages and string expressions. - Removed
[3, 16]length limitation on player names in string expressions for the%playervarand%playerpapiplaceholders. - Spell
cooldownnow supports function expressions. RegrowSpellcan now targetbogged.ShearSpellcan now target allShearable. Addedvanilla-sheep-shearingboolean option for backwards 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-causesResistSpell-normal-damage-typesDotSpell-damage-typeDrainlifeSpell-healthdrain typePainSpell-damage-typefataldamagepassive triggergivedamagepassive triggertakedamagepassive triggerhasitemmodifier condition
MagicSpellsEntityDamageByEntityEventnow has its ownHandlerList; this requires plugins to listen for it explicitly. This event should generally not be used.InvulnerabilitySpell,ResistSpell,fataldamage,givedamage,takedamagestill listen to the event for legacy support.- Removed most usages of
MagicSpellsEntityDamageByEntityEvent. - Lowered the default value of the
buff-check-intervaloption ingeneral.ymlfrom100to1. - The
durationoption of buff spells now supports variable replacement. - Non-players can now activate the
equipandunequippassive triggers. - The
invertandpass-powersubspell cast arguments now support expressions. - Item Entity Data options, such as entity equipment and the
item_display'sitem, now support string expressions and the vanilla item format. - Due to a Paper bug which causes maximum bow force not to be restrained in the
[0, 1]interval, the default for theBowSpelloptionmaximum-forcehas been changed from1to0so that it's not checked by default. - Spell
effectsmay now be a list of configuration sections rather than being mapped to a name.effects: - position: target effect: lightning
Additions:
- Added predefined spell tags:
magicspells:beneficialfor spells configured withbeneficial: truemagicspells:helper-spellfor 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|filterListSpell|filter
- General Spell Config |
- Added meta variables:
meta_attack_cooldown- It gets the current cooldown for a player's attack, with1.0representing a fully charged attack.meta_current_tickmeta_body_yaw
- Added the
respect-item-cooldownsoption togeneral.yml, which defaults tofalse. Whentrue, an item with a cooldown (white hotbar overlay) cannot be used to cast or cycle spells. - Spell
shared-cooldownhas been expanded with a Config format and Spell Filters. - Added
usingitemmodifier condition. Passes if the Magic Item in the ConditionArg is actively "used" or consumed. - Added the
transform-entitiesoption 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
armorstandeffect on theProjectileSpell. - Added the
inputpassive trigger. - Added the
inputmodifier condition. - Added the
trailsection to theparticlesspell effect, for use withparticle-name: trail. - Added the
stop-on-successoption toTargetedMultiSpell. Defaults tofalse. Stops subspell processing when a subspell successfully casts. - Added the
real-time-durationoption 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. - Added options to Entity Data:
health(Double)attribute-modifierspotion-effects
- Added the
pass-argssubspell cast argument. Withpass-args=true, arguments from the parent spell cast are used for the subspell cast, instead of the value of theargssubspell cast argument. - Added the
.targeted.GlowSpellas a replacement to the now deprecated.targeted.ext.GlowSpell. - Added options
ParticleCloudSpellto configure particles:dust_color_transition-color,to-colorandsizeoptions under adust-transitionsectionentity_effect-argb-coloroption
- Added
apply-physicstoReplaceSpell, a boolean option, defaulting totrue. - Added
wait-time(Integer, defaults to0) toparticlecloudspell effect. This overrides the default behaviour where the radius is ignored for 20 ticks and particles only spawn at the center of the cloud. - Added
str-cant-cast-by-commandtogeneral.yml. This lets you configure the existing message sent by/ms cast self(/c) when the spell is configured withcan-cast-by-command: false. - Spells with
helper-spell: truenow allow for any player to use their configuredincantations. - Added biome tag support to the
biomemodifier condition. - Added the
swinghandspell effect.
Fixes:
- Fixed an issue where the
ModifyCooldownSpellonly worked if the spell was on cooldown. - Fixed an issue with the
LightwalkSpellthrowing errors while turning off and not removing light blocks in some cases. - Fixed an issue with the
LilywalkSpellnot working correctly. - Fixed an issue with Subspell's
chancecast argument being in the range0-1instead of0-100. - Fixed an issue with the
ExternalCommandSpell'sblock-chat-outputandstore-chat-outputoptions, 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
DisguiseSpellsending errors when Lib...
MagicSpells-4.0-Beta-16
Note
4.0 Beta 16has been tested on1.21,1.21.1,1.21.3, and1.21.4.- All changes are already on the wiki.
Breaking Changes:
- Magic Item comparison no longer uses a liberal method of attribute modifier checking. Attribute modifiers must now have the same identifier and be listed in the same order to match.
- Removed the
VolleySpelloptionknockback-strength. This option stopped functioning due to internal changes. The effect can be simulated by the newweaponMagic Item option.
Changes:
- The
patternsoption for magic items now supports resource locations for patterns. - You can now list
*as a wildcard in theResistSpelloptionsnormal-damage-typesandspell-damage-types. DisguiseSpellnow requiresPacketEventsinstead ofProtocolLib. See here for why.- The
wearinginslotmodifier condition's ConditionVar format has been changed to be<slot/slot groups>=<magic items>.<slot/slot groups>specifies a list of equipment slot groups, separated by,. Old slot names still work, such ashat,helm,tunic,leg,pant,shoe,boot. Values can be optionally prefixed by!to negate them.<magic items>specifies a list of magic items separated by|. Negated groups have priority, hencewearinginslot mainhand,feet,!armor=stick|paperwould not match even if paper were to be in thefeetslot. - Enchantments can now be specified using resource locations.
- Removed unneeded libraries from the plugin jar.
- Version dependent functionality will no longer preemptively fail on untested versions. Caution should still be exercised.
- The
hug-surfaceoption ofParticleProjectileSpellwill now follow block shapes more closely. In addition, the option will now respect the values of theground-materials,disallowed-ground-materials,ignore-passable-blocks, andfluid-collision-modeoptions.
Attributes:
- Attribute names can now be specified using resource locations.
- Defining attribute modifier slots is no longer limited to Magic Items, but availabe to all spells with the
attributesoption, such asEntityEditSpell,MinionSpell, andSpawnEntitySpell. - The valid slot values have been extended to these values and
*(main_hand,hand, andoff_handare still valid). - String-based attribute modifiers now support a fifth argument to define a resource location as an id.
- Attribute modifiers now have a section-based format, with keys
type,id,operation,amount, andslot.
attributes:
- type: generic.movement_speed
id: magicspells:fast_movement
amount: 1
operation: add_value
slot: anyEntity Data:
- Renamed a variety of entity data options. Old names will continue to work, but it is suggested to migrate to the new names.
- Axolotl:
type->axolotl-variant. - Villager:
type->villager-profession. - Cat:
type->cat-variant. - Wolf:
color->collar-color. - Enderman:
material->carried_block. - Falling Block:
material->falling-block. - Fox:
type->fox-type. - Frog:
type->frog-variant. - Horse:
color->horse-color,style->horse-style. - Llama:
color->llama-variant,material->llama-decor. - Mooshroom:
type->mooshroom-type. - Parrot:
type->parrot-variant. - Rabbit:
type->rabbit-type. - Sheep:
color->sheep-color. - Shulker:
color->shulker-color. - Tropical Fish:
color->tropical-fish.body-color,pattern-color->tropical-fish.pattern-color,type->tropical-fish.pattern.
- Axolotl:
- Added the
villar-typeoption to entity data. Specifies a spawned villager's type. - Added the
wolf-variantoption to entity data. Specifies a spawned wolf's variant. - Expanded the
collar-color(formerlycolor) option on entity data to cats.
Additions:
- Added the
fixedtimemodifier condition. Checks if the time is fixed in the target location. - Added
SprintSpell. - Added the
messagemodifier action. Sends a rich text message specified in ActionVar to the caster. - Added the
permanentoption (Boolean,trueby default) toEntityEditSpell. Whenpermanent: false, attributes added by the spell no longer save with the entity. These attributes persist when the plugin unloads. - Added the
forceoption (Boolean,falseby default) toEntityEditSpell. Whenforce: true, attribute types not normally present on an entity are forcefully registered, allowing normally incompatible modifiers to be applied. Any attributes added this way will use the attribute's default base value. - Added
removeoption (Boolean,falseby default) toEntityEditSpell. Whenremove: true, the spell will instead always remove the configured attributes, based on their resource location identifier. - Added the
markerarmorstandstargeting element. When specified, armor stands with the marker attribute can be targeted. Aliases:markerstand,markerstands, andmarkerarmorstand. - Added
VolleySpelloptions:pierce-level(Integer,0by default) - Specifies how many entities the arrow can pierce through. It must be between0and127.weapon(Magic Item) - Specifies an item to consider as the weapon for the spawned arrows. Enchantments will generally function as normal, except for the piercing enchantment. Use thepierce-leveloption instead.arrow-item(Magic Item) - Sets the pickup item for the arrows. Note that Volley arrows cannot normally be picked up, but this option is there for other plugins.color(Color) - Spawned arrows emit particles matching the color.potion-type(Potion Type) - Spawned arrows will apply the potion effect as if the arrow was created from a tipped arrow.potion-effects(Potion Effect List) - Specifies additional custom effects to be applied on hit entities.
- The
defaults.ymlfile now supports all spell options, as well as properly supporting replacement. - Valid target lists now support entity type tags. For example:
can-target: #undead, players
Fixes:
- Fixed an issue with the
nightcondition incorrectly succeeding in dimensions with a fixed time. - Fixed an issue with entity data relating to the axis-angle format for display entity rotations.
- Fixed an issue that caused the
external::vanillamagic item serializer not to output the correct format. - Fixed an issue with the
intermediate-effectsandintermediate-hitboxesoptions ofParticleProjectileSpellandProjectileSpellthat caused intermediate positions to be calculated improperly. - Fixed an issue with the
intermeditate-hitboxesoption ofProjectileSpellthat caused intermediate hits to continue to process after the projectile had stopped. - Fixed an issue with the
wearinginslotmodifier condition that caused the incorrect slots to be checked. - Fixed an issue with
VolleySpellthat allowed the spawned arrows to be picked up. - Fixed magic items being incorrectly split in the following passive listeners:
anvil,craft,dropitem,enchant,equip,foodlevelchange,givedamage,grindstone,hitarrow,hotbardeselect,hotbarselect,leftclickitem,missarrow,pickupitem,playeranimate,prepareenchant,rightclickitem,smith,takedamage, andunequip. - Fixed an issue with the
orbitspell effect position where the effect was being duplicated. - Fixed an issue with the
colorparameter of theeffectlibspell effect not supporting specifying alpha (opacity) values. - Fixed an issue with the yaw and pitch options of the
/ms cast atcommand being incorrectly labeled in help commands. - Fixed an issue with the duration of the
dragondeathspell effect.
MagicSpells-4.0-Beta-15
Version Support
This build only supports Paper server version 1.20.6.
Breaking Changes
- During the update to
1.20.5/6, the identifiers of several data types were renamed to match their vanilla counterparts. For example, thespell_mobandredstoneparticles were renamed toentity_effectanddust, respectively. In most cases spell options will still accept the legacy names; users are still advised to migrate away from them, however. - The
entity_effectparticle now requires a color. For theparticles,particlespersonalandparticlecloudspell effects, this is done with the newargb-coloroption.
Bugfixes
- Fixed an issue that prevented
ListSpellandSublistSpellfrom listing temp-granted spells. - Fixed an issue that caused
ListSpellandSublistSpellto list empty spell lists improperly in certain situations. - Fixed an issue that prevented
SummonSpellfrom functioning without a caster when casting at an entity from a location. - Fixed an issue that prevented replacement and certain spell effect options from working when using the
traileffect position in certain situations. - Fixed an issue that prevented
ProjectileSpellfrom checking intermediate entity collisions properly.
Changes
ListSpellandSublistSpellnow list spells in alphabetical order.SummonSpellnow checkscan-targetandtarget-modifiers, as well as applyingvariable-mods-target.
Additions
- Added the
argb-coloroption to theparticles,particlespersonalandparticlecloudeffect types. Specifies an ARGB color to be used for the particle. Applicable to theentity_effectparticle. - Added the
bodyandbody-drop-chanceoptions to theequipmentsection of entity data. Applicable to mob entities. - Added the
only-count-on-successoption toLoopSpell. Whentrue, an iteration of the loop only counts towardsiterationsif all of the subspells inspellssucceed. Defaults tofalse. - Added the
pitchandyawangle options to spell effects, entity data, andOffsetLocationSpell. Specifies an angle for pitch and yaw, respectively. Optionally supports starting with a~to specify a relative angle. Both options default to~. - Added the
should-burn-in-dayoption to entity data. Iffalse, the spawned mob will no longer burn in the day. Defaults tofalse.
MagicSpells-4.0-Beta-14
Supports only version 1.20.4.
MagicSpells-4.0-Beta-13-patch-1
Bugfixes:
- Fixed an issue where the
heightoption ofVelocitySpellwas divided by10. - Fixed an issue where the
velocityoption ofVelocitySpellwasn't divided by10. - Fixed an issue with
ExplodeSpellthat caused it to error out in specific circumstances. - Fixed an issue that prevented
change-pitchoption ofParticleProjectileSpellfrom functioning properly. - Fixed an issue that caused self-targeting to error out in specific circumstances.
- Fixed an issue that prevented the
cast-timespell option from functioning. - Fixed an issue that caused the
durationoption of thebossbareffect to not function properly.
Additions:
- Added the
projectile-horiz-offset,projectile-vert-offset,projectile-horiz-spread, andprojectile-vert-spreadoptions toHomingMissileSpell. - The
removeoption ofCleanseSpellnow supports removing totems spawned byTotemSpell, using the formattotem:<totem spell name>. - The
namespace-keyoption of thebossbareffect now supports replacement.
MagicSpells-4.0-Beta-13
This release includes many bugfixes, long awaited global variable replacement and many other additions!
Beta 13 supports 1.19.4 - 1.20.2.
MagicSpells-4.0-Beta-12
Supports 1.19 only.
Minor changes and bugfixes
Changelog:
Added always modifier.
Added bow-items, ammo-items, disallowed-bow-items, disallowed-ammo-items for BowSpell.
Added strict-enchants and strict-enchant-level for MagicItems.
Added potion-effects list for PotionEffectSpell (Format: <PotionType> <Duration> <Strength> <Hidden> <Ambient> <Icon>).
Added icon parameter for PotionEffectSpell.
Subspells will check their target lists when casting at an entity.
MagicSpells-4.0-Beta-11
Supports 1.18.2 only.
Minor changes and bugfixes
Requires Java 17 and Paper or its forks to run
Changelog:
Added spell-on-entity-location for BowSpell.
Added spell-on-entity-location for BeamSpell.
Added spell-on-entity-location for ProjectileSpell.
Added RiptideSpell.
Added RiptidingCondition.
Added Anvil, Enchant, Grindstone and Smith passive triggers.
Added str-on-teach for spells.
Added LoopSpell, LoopActiveCondition and OwnedLoopActiveCondition.
Added force option for particles effect.
Added error-log-limit in general.yml
Added world.time and world.gametime data elements.
MagicSpells-4.0-Beta-10
Supports 1.17.1 only.
Minor changes and bugfixes
Requires Java 16 and Paper or its forks to run
Changelog:
Added support for dust_color_transition and vibration particles:
- added
to-color, which accepts a hex value - added
arrival-time, which accepts an integer value - added
vibration-offset, which accepts a vector value - added
vibration-relative-offset, which accepts a vector value
Added pass-targeting for AreaEffectSpell and TargetedMultiSpell, which is true by default. It passes down the target list to its subspells when its set to true, means you dont have to make separate AOE subspells if you want them to target the caster and other entities.
Fixes for MenuSpell
BowSpell supports crossbows
Added effectlib-instance-limit to general.yml - its the limit for effectlib effect instances, default to 20000.
Added terminate-effectlib-instances to general.yml - whether it should terminate all effectlib effect instances when the effectlib-instance-limit is reached, otherwise it just wont play further effectlib effects. default set to true.
Added equip and unequip passive triggers.
Added partial block data support, currently works for NovaEffect, LookingAtBlock, InBlock, OnBlock, OverBlock, TestForBlock and UnderBlock modifiers.
MagicSpells-4.0-Beta-9
1.16.5 Version support
Lots of changes and optimizations
Fixed effectlib memory leaks and bugs
Requires Java 11 and Paper or its forks to run
Full changelog: https://pastebin.com/EgCy0CHZ