Skip to content

Releases: TheComputerGeek2/MagicSpells

MagicSpells-4.0-Beta-17

04 Jun 03:30
4296ac9

Choose a tag to compare

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 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.
  • The ParticleCloudSpell option potion-effects now 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>), where ambient now refers toggles hidden, and particles now toggles ambient.

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 backwards 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.
  • The invert and pass-power subspell cast arguments now support expressions.
  • Item Entity Data options, such as entity equipment and the item_display's item, 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 the BowSpell option maximum-force has been changed from 1 to 0 so that it's not checked by default.
  • Spell effects may 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: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.
  • Added options to Entity Data:
  • Added the pass-args subspell cast argument. With pass-args=true, arguments from the parent spell cast are used for the subspell cast, instead of the value of the args subspell cast argument.
  • Added the .targeted.GlowSpell as a replacement to the now deprecated .targeted.ext.GlowSpell.
  • Added options ParticleCloudSpell to configure particles:
    • dust_color_transition - color, to-color and size options under a dust-transition section
    • entity_effect - argb-color option
  • Added apply-physics to ReplaceSpell, a boolean option, defaulting to true.
  • Added wait-time (Integer, defaults to 0) to particlecloud spell 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-command to general.yml. This lets you configure the existing message sent by /ms cast self (/c) when the spell is configured with can-cast-by-command: false.
  • Spells with helper-spell: true now allow for any player to use their configured incantations.
  • Added biome tag support to the biome modifier condition.
  • Added the swinghand spell effect.

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 Lib...
Read more

MagicSpells-4.0-Beta-16

13 Nov 16:58
47ecdbb

Choose a tag to compare

Note

  • 4.0 Beta 16 has been tested on 1.21, 1.21.1, 1.21.3, and 1.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 VolleySpell option knockback-strength. This option stopped functioning due to internal changes. The effect can be simulated by the new weapon Magic Item option.

Changes:

  • The patterns option for magic items now supports resource locations for patterns.
  • You can now list * as a wildcard in the ResistSpell options normal-damage-types and spell-damage-types.
  • DisguiseSpell now requires PacketEvents instead of ProtocolLib. See here for why.
  • The wearinginslot modifier 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 as hat, 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, hence wearinginslot mainhand,feet,!armor=stick|paper would not match even if paper were to be in the feet slot.
  • 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-surface option of ParticleProjectileSpell will now follow block shapes more closely. In addition, the option will now respect the values of the ground-materials, disallowed-ground-materials, ignore-passable-blocks, and fluid-collision-mode options.

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 attributes option, such as EntityEditSpell, MinionSpell, and SpawnEntitySpell.
  • The valid slot values have been extended to these values and * (main_hand, hand, and off_hand are 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, and slot.
attributes:
    - type: generic.movement_speed
      id: magicspells:fast_movement
      amount: 1
      operation: add_value
      slot: any

Entity 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.
  • Added the villar-type option to entity data. Specifies a spawned villager's type.
  • Added the wolf-variant option to entity data. Specifies a spawned wolf's variant.
  • Expanded the collar-color (formerly color) option on entity data to cats.

Additions:

  • Added the fixedtime modifier condition. Checks if the time is fixed in the target location.
  • Added SprintSpell.
  • Added the message modifier action. Sends a rich text message specified in ActionVar to the caster.
  • Added the permanent option (Boolean, true by default) to EntityEditSpell. When permanent: false, attributes added by the spell no longer save with the entity. These attributes persist when the plugin unloads.
  • Added the force option (Boolean, false by default) to EntityEditSpell. When force: 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 remove option (Boolean, false by default) to EntityEditSpell. When remove: true, the spell will instead always remove the configured attributes, based on their resource location identifier.
  • Added the markerarmorstands targeting element. When specified, armor stands with the marker attribute can be targeted. Aliases: markerstand, markerstands, and markerarmorstand.
  • Added VolleySpell options:
    • pierce-level (Integer, 0 by default) - Specifies how many entities the arrow can pierce through. It must be between 0 and 127.
    • 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 the pierce-level option 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.yml file 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 night condition 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::vanilla magic item serializer not to output the correct format.
  • Fixed an issue with the intermediate-effects and intermediate-hitboxes options of ParticleProjectileSpell and ProjectileSpell that caused intermediate positions to be calculated improperly.
  • Fixed an issue with the intermeditate-hitboxes option of ProjectileSpell that caused intermediate hits to continue to process after the projectile had stopped.
  • Fixed an issue with the wearinginslot modifier condition that caused the incorrect slots to be checked.
  • Fixed an issue with VolleySpell that 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, and unequip.
  • Fixed an issue with the orbit spell effect position where the effect was being duplicated.
  • Fixed an issue with the color parameter of the effectlib spell effect not supporting specifying alpha (opacity) values.
  • Fixed an issue with the yaw and pitch options of the /ms cast at command being incorrectly labeled in help commands.
  • Fixed an issue with the duration of the dragondeath spell effect.

MagicSpells-4.0-Beta-15

12 Jun 20:47
28c30db

Choose a tag to compare

Version Support

This build only supports Paper server version 1.20.6.

Breaking Changes

  1. During the update to 1.20.5/6, the identifiers of several data types were renamed to match their vanilla counterparts. For example, the spell_mob and redstone particles were renamed to entity_effect and dust, respectively. In most cases spell options will still accept the legacy names; users are still advised to migrate away from them, however.
  2. The entity_effect particle now requires a color. For the particles, particlespersonal and particlecloud spell effects, this is done with the new argb-color option.

Bugfixes

  • Fixed an issue that prevented ListSpell and SublistSpell from listing temp-granted spells.
  • Fixed an issue that caused ListSpell and SublistSpell to list empty spell lists improperly in certain situations.
  • Fixed an issue that prevented SummonSpell from 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 trail effect position in certain situations.
  • Fixed an issue that prevented ProjectileSpell from checking intermediate entity collisions properly.

Changes

  • ListSpell and SublistSpell now list spells in alphabetical order.
  • SummonSpell now checks can-target and target-modifiers, as well as applying variable-mods-target.

Additions

  • Added the argb-color option to the particles, particlespersonal and particlecloud effect types. Specifies an ARGB color to be used for the particle. Applicable to the entity_effect particle.
  • Added the body and body-drop-chance options to the equipment section of entity data. Applicable to mob entities.
  • Added the only-count-on-success option to LoopSpell. When true, an iteration of the loop only counts towards iterations if all of the subspells in spells succeed. Defaults to false.
  • Added the pitch and yaw angle options to spell effects, entity data, and OffsetLocationSpell. 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-day option to entity data. If false, the spawned mob will no longer burn in the day. Defaults to false.

MagicSpells-4.0-Beta-14

18 May 14:33
3d80d93

Choose a tag to compare

Supports only version 1.20.4.

Changelog

MagicSpells-4.0-Beta-13-patch-1

06 Nov 18:28
1507fdf

Choose a tag to compare

Bugfixes:

  • Fixed an issue where the height option of VelocitySpell was divided by 10.
  • Fixed an issue where the velocity option of VelocitySpell wasn't divided by 10.
  • Fixed an issue with ExplodeSpell that caused it to error out in specific circumstances.
  • Fixed an issue that prevented change-pitch option of ParticleProjectileSpell from functioning properly.
  • Fixed an issue that caused self-targeting to error out in specific circumstances.
  • Fixed an issue that prevented the cast-time spell option from functioning.
  • Fixed an issue that caused the duration option of the bossbar effect to not function properly.

Additions:

  • Added the projectile-horiz-offset, projectile-vert-offset, projectile-horiz-spread, and projectile-vert-spread options to HomingMissileSpell.
  • The remove option of CleanseSpell now supports removing totems spawned by TotemSpell, using the format totem:<totem spell name>.
  • The namespace-key option of the bossbar effect now supports replacement.

MagicSpells-4.0-Beta-13

19 Oct 18:30
d8c0381

Choose a tag to compare

This release includes many bugfixes, long awaited global variable replacement and many other additions!
Beta 13 supports 1.19.4 - 1.20.2.

Changelog

MagicSpells-4.0-Beta-12

10 Jul 09:17
7e23bad

Choose a tag to compare

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

03 May 18:00
ba2ed2a

Choose a tag to compare

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

22 Nov 11:32
951be38

Choose a tag to compare

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

25 Jun 05:53
2169ec0

Choose a tag to compare

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