Note
4.0 Beta 14
only supports1.20.4
.- All changes are already on the Wiki
- Added meta variables:
- Freeze/Fire tick:
meta_freeze_ticks
meta_max_freeze_ticks
meta_max_fire_ticks
- Vehicle movement:
meta_forwards_movement
meta_sideways_movement
- Hunger mechanics:
meta_exhaustion
meta_starvation_rate
meta_saturated_regen_rate
meta_unsaturated_regen_rate
- Other:
meta_respawn_location_(x/y/z)
- Freeze/Fire tick:
- Added
min-horizontal-radius
andmin-vertical-radius
to theAreaEffectSpell
. - Added data elements for the
DataSpell
:lastdamagecause.attacker
- returns the entity's Entity Name.clientbrandname
- Returns the entity's Client Brand Name.location.light
location.light.blocks
location.light.sky
- Added
PlayerMenuSpell
optionsspell-drop
andspell-swap
. - Added custom recipe
category
option:- Cooking book category for
blasting
,campfire
,furnace
, andsmoking
recipe types. - Crafing book category for
shaped
andshapeless
recipe types.
- Cooking book category for
- Entity and block/location target checks now take into account accurate hitboxes and shapes of entities/blocks.
- Added the
los-ray-size
option togeneral.yml
and spell options. Defaults to0.2
. Determines the size of the ray used for checking line of sight to entities when retrieving an entity target. - Added the
los-ignore-passable-blocks
option togeneral.yml
and spell options. Defaults totrue
. Whentrue
, passable blocks (blocks that do not have any colliding parts that stop movement) are ignored for entity/location targeting. For example, air and tall grass are passable. - Added the
los-fluid-collision-mode
option togeneral.yml
and spell options. Defaults tonever
, and has the valuesalways
,never
andsource_only
as according to here. Determines whether or not fluids are collided with when retrieving entity/location targets. los-transparent-blocks
now defaults to an empty list. TheAIR
,CAVE_AIR
andVOID_AIR
are still automatically added to an empty list forlos-transparent-blocks
, however.- Note: some spells still do not take into account accurate collision shapes. These spells include, but are not limited to,
BeamSpell
,BlockBeamSpell
, andHomingMissileSpell
.
- Added the
- Magic items now support the
external::vanilla
serialization type. This format for items is the same as the vanilla/give
command. - Added modifier conditions:
- Location:
buildable
burnable
collidable
passable
replaceable
solid
blocktag
- Passes if the checked block has at least one of the specified block tags. ConditionVar is a comma-separated list of block tags.
- Entity:
pose
- Takes a comma separated list of poses.fixedpose
silent
clientname
- Compares Client Brand Name. ConditionVar should be the name to compare to for the condition to pass.pulseractive
andtotemactive
- Checks how many pulsers/totems the target has, respectively. Operator and value are optional. Examples:totemactive totem-spell>4 denied
pulseractive pulser-spell required
attribute
- Compares the current value of the specified attribute. ConditionVar has a format of[attribute name][operator][number]
attributebase
- Compares the base value of the specified attribute. ConditionVar has a format of[attribute name][operator][number]
attributedefault
- Compares the default value of the specified attribute. ConditionVar has a format of[attribute name][operator][number]
cast
- Passes if the sub-spell specified in the ConditionVar casts successfully.entitytypetag
- Passes if the checked entity has at least one of the specified entity type tags. ConditionVar is a comma-separated list of entity type tags.climbing
leashed
sleeping
underwater
- Location:
- Added
ProjectileSpell
andHomingProjectileSpell
optionarrow-color
. - Added the
land-spell
option toFlightPathSpell
. Casted when the path is completed after landing. - Added
PassiveSpell
triggers:startpose
/stoppose
- Takes a comma separated list of poses.insideblock
- Triggers when an entity enters a block as specified here. Takes a comma separated list of block data.portalenter
andportaleave
- Fires when an entity enters/exists a portal created byPortalSpell
. TriggerVar supports a string-based spell filter.
- Added new spells:
- Added new spell effects:
- Added the
visible
,charged
, andincendiary
options toHomingProjectileSpell
, now matchingProjectileSpell
. - Added
freeze
to the valid options in theremove
option forCleanseSpell
. - Added
/ms util listgoals [uuid]
command for listing mob goals of an entity. - Added
store-chat-output
(Variable name) toExternalCommandSpell
- requires ProtocolLib. - Added the
%r
placeholder. Replaces to the name of the recipient of a message or action. By default the recipient is the same entity as the caster. If used in a message, the recipient is the reciever of the message; similarly, the recipient in a buff spell is the receiver of the buff, instead of the caster. - The
%a
,%t
, and%r
placeholders are now supported universally for string expressions. - Options that took particle name now support resource locations.
- Added the
spell-on-death
option toSpawnEntitySpell
. Specifies a sub-spell to cast when the spawned entity dies. - Added the
spell-on-target
option toSpawnEntitySpell
. Specifies a sub-spell to cast when the spawned entity changes target. - Added the
str-cast-cancelled
option to general spell configuration. Supports rich text. Sent whenever a spell cast is cancelled, and is mostly helpful for debugging. - Added the following options to the
itemspray
effect:gravity
- controls whether the items have gravity. Defaults totrue
.remove-item-friction
- removes the items' friction iftrue
. Defaults tofalse
.resolve-duration-per-item
- controls if theduration
option is resolved multiple times per item spawned. Defaults tofalse
.velocity
- controls the velocity of the spawned items. Value is multiplied by theforce
option before being applied. Defaults to{x: rand(-0.5, 0.5), y: rand(-0.5, 0.5), z: rand(-0.5, 0.5)}
.
- Added the
interactions
option toOrbitSpell
. Interaction configuration has been expanded as well. OrbitSpell
now supports tilted orbits. The following options enable this functionality:start-pitch-offset
- offset in degrees for the start pitch of the orbit. Defaults to0
.start-yaw-offset
- offset in degrees for the start yaw of the orbit. Renamed fromstart-horiz-offset
. Defaults to0
.start-angle-offset
- offset in degrees for the starting angle of the orbit. Positive values follow in the direction of the orbit. Defaults to0
.lock-start-yaw
- iftrue
, the starting yaw is locked to0
before offsets. Whenfalse
, the start yaw is derived from the starting location. Defaults tofalse
.lock-start-pitch
- iftrue
, the starting pitch is locked to0
before offsets. Whenfalse
, the start pitch is derived from the starting location. Defaults totrue
.follow-pitch
- iftrue
, the orbit's pitch is changed to following pitch changes from the targeted entity. Defaults tofalse
.
- Added the
immune-ticks
option toOrbitSpell
. Ifimmune-ticks >= 0
, entities hit by the orbit are immune from collisions for the amount of ticks specified by the option. Defaults to-1
. - Added the
constant-immune-ticks
option toOrbitSpell
. Iffalse
,immune-ticks
is resolved per hit entity, instead of once at the start of the orbit. Defaults totrue
. - Added the
flat-modifier
,constant-flat-modifier
, andpower-affects-flat-modifier
options toResistSpell
.flat-modifier
applies a flat modifier to damage. Defaults to0
,true
, andtrue
respectively. - Added the
flat-modifier
andconstant-flat-modifier
options toDamageEmpowerSpell
.flat-modifier
applies a flat modifier to damage. Defaults to0
andtrue
, respectively. - Added the following options to entity data:
teleport-duration
- integer. Option for Display entity.ai
- boolean. Controls if the entity has AI enabled. Applies only to mobs.gravity
- boolean. Controls if the entity has gravity.silent
- boolean. Controls if the entity is silent.velocity
- vector. Sets the velocity of the entity.pickup-delay
- integer. Sets the delay in ticks before an item can be picked up. Applies only to items.can-mob-pickup
- boolean. Sets if a mob can pick up an item. Applies only to items.can-player-pickup
- boolean. Sets if a player can pick up an item. Applies only to items.interaction-height
- float. Applies only to interaction entities.interaction-width
- float. Applies only to interaction entities.responsive
- boolean. Sets if this interaction entity should trigger a response when interacted with.will-age
- boolean. Sets if an item will age. Items that reach their maximum age despawn. Applies only to items.scoreboard-tags
- string list. List of string expressions to be applied as scoreboard tags.equipment
- configuration section. Has the following two sets of options.main-hand
,off-hand
,helmet
,chestplate
,leggings
, andboots
- string-based magic item. Sets the item equipped to the options' respective slot. Applies to living entities.main-hand-drop-chance
,off-hand-drop-chance
,helmet-drop-chance
,chestplate-drop-chance
,leggings-drop-chance
, andboots-drop-chance
- float. Sets the drop chances for the options' respective equipment slots, as mentioned here. Applies to mobs.
delayed-entity-data
- section list. Specifies a list of delayed modifications to entity data.
- Added cast command tab completion for spell cast arguments to:
AdminTeachSpell
,BindSpell
,ForgetSpell
,HelpSpell
,ImbueSpell
,KeybindSpell
,ListSpell
,ScrollSpell
,SpellbookSpell
,SublistSpell
,TeachSpell
,TomeSpell
,UnbindSpell
,EnderchestSpell
,RecallSpell
, andSummonSpell
. - Added support for passing the
-p:
spell power flag and spell cast arguments using the/ms cast on
command. - Added
interrupt-filter
config spell filter option to base spell options forcast-time
wheninterrupt-on-cast
istrue
. When empty, it allows all spells to interrupt cast time like before.
If the client didn't send this information, the brand name will be null
(empty with the data element). For the Notchian client this name defaults to vanilla
. Some modified clients report other names such as forge
& fabric
.
MenuSpell
andPlayerMenuSpell
will now close the inventories when the plugin reloads to avoid inventory modification.- Changed BuffManager's
BuffMonitor
to use Folia's global scheduler and replaced the ConcurrentHashMap with a regular HashMap. - Placeholders
%a
and%t
now prioritise returning the non-player entity's display name before its configured name fromentity-names
ingeneral.yml
. moonphase
condition now accepts PaperMC's moon phases. Legacy grouped phases are still supported:full
,waning
,new
,waxing
.string
modifier action now supports string expressions.signtext
modifier condition format has changed (backwards compatible) toside;world,x,y,z,line__1\nline__2
:side;
is optional and can befront;
(default) orback;
world,x,y,z
is also optional. If omitted, it'll use the caster's or target's location.- Text lines can be split by
\\n
or\n
, spaces can be represented with__
.
- The
title
andauthor
options of magic items now support MiniMessage. ReachSpell
now supports placing blocks in blocks tagged as replaceable, instead of just air blocks.BuildSpell
andPulserSpell
now check if the block they attempt to set is placeable in the target location.- Ender dragon targeting now checks the hitboxes of its individual parts, rather than its hitbox.
- The
location
option ofLocationSpell
now supports expressions. - The
CleanseSpell
optionremove
now supports specifying string-based spell filters for the respective spell types. - Spell options that check a valid target list can now specify specific gamemodes. When listed, players in that gamemode will be valid targets for these spells. This does not change the behavior of the
player
/players
options, which still only allow players in adventure and survival. /ms cast as
and/ms cast on
will now return the UUID/username of the ray-traced target first.- The totems and pulsers of
TotemSpell
andPulserSpell
now tick individually. As such, theinterval
options on both spells now support replacement. - The
loopactive
andownedloopactive
conditions now allow optionally specifying an operator and value. Example:loopactive loop-spell>1 denied
. - The
self
/caster
target element of valid target lists now passes regardless of gamemode. .targeted.CarpetSpell
can now hit non-player entities.- The
variablestringequals
modifier condition now supports=
in addition to:
as a separator. PassiveSpell
will now always play spell effects, regardless of if thespells
option is empty.InvisibilitySpell
can now be casted by non-player entities.- The
invisible
/invisibles
target element of valid target lists now also applies to non-players. - The ground collision checks of
ParticleProjectileSpell
are, in general, more accurate.- Ground collisions now account for accurate block and fluid shapes. As a result, the ground hit radius is in a sense smaller because it was bigger than it should be. To accompany these improvements, the following options were added:
ignore-passable-blocks
- sets if the projectile ignores passable blocks. Defaults totrue
.fluid-collision-mode
- sets how the projectile interacts with fluids. Takes the values specified here. Defaults tonever
.
- The
ground-hit-radius
andground-vertical-hit-radius
are now floats, instead of integers. - The
intermediate-hitboxes
option ofParticleProjectileSpell
now also checks for intermediate ground collisions.
- Ground collisions now account for accurate block and fluid shapes. As a result, the ground hit radius is in a sense smaller because it was bigger than it should be. To accompany these improvements, the following options were added:
- Interactions betweeen
ParticleProjectileSpell
projectiles are now determined by if their hitboxes overlap, rather than if one of the hitboxes contains the center of the other. - The
seconds-per-revolution
option ofOrbitSpell
now supports a value of0
for stationary orbits. - The
start-horiz-offset
option ofOrbitSpell
has been renamed tostart-yaw-offset
. Usages of the old name will continue to function. - Due to changes in how
OrbitSpell
calculates orbits, theseconds-per-revolution
option is now rounded to the nearesttick-interval / 20
ticks. For example, withtick-interval: 1
,0.06
is rounded to0.05
, and withtick-interval: 10
,5.7
is rounded to5.5
. - The
can-hit
option ofOrbitSpell
now supports string-based valid target lists. OrbitSpell
entity collisions now properly consider entity hitboxes, rather than just checking their origin point.- The
ParticleProjectileSpell
optioninteractions
has been expanded. EnchantSpell
and Magic Items now support non-minecraft resource locations for enchantments.RecallSpell
now has an alias optionuse-respawn-location
foruse-bed-location
, because it actually uses the respawn location, including from respawn anchors.
PlayerMenuSpell
no longer hasspell-middle
because it can no longer be detected.- The
potion-color
option of magic items has been replaced by thecolor
option, for consistency. - The
potion-data
option of magic items has been replaced by thepotion-type
option. The previous format,<potion type> [extended/upgraded]
, is now just<potion type>
, as extended/upgraded potion types are now their own, separate values. - Removed the
tippedarrow
projectile type fromProjectileSpell
. Use the newarrow-color
instead. - You can no longer attempt to cancel the
startswim
andstopswim
triggers, as this functionality has been broken. ExternalCommandSpell
no longer does%a
and%t
placeholder replacement whendo-variable-replacement
isfalse
. This change was done to avoid conflicts with commands that utilise%
in their syntax, such as WorldEdit.ParticleProjectileSpell
now correctlyy faces the starting direction instead of facing downwards withprojectile-velocity: 0
, which may cause issues with effects relying on the previously broken behaviour.- The
PassiveSpell
'sspells
option now uses the same behaviour for sub-spell casts as all other spells. This notably results in changes in behaviour when using a Buff spell or anExternalCommandSpell
with a passive trigger that provides an entity target, where it used thetargeted
andrequire-player-target
options of each spell to determine if the spell cast was targeted. meta_bed_location_(x/y/z)
no longer returns/modifies the respawn location, but only returns the bed location of the bed the player is currently sleeping in.meta_respawn_location_(x/y/z)
variables have been added instead because the previous variables were misleading, returning respawn locations from respawn anchors, beds, and the world.cancel-on-spell-cast: true
on Buff spells now causes the buff to cancel on all spell casts if the spell filter options are not specified.
- Fixed an issue where
spell-icon
wasn't initializing the itemstack properly. - Fixed an issue where the subspells weren't initialized properly for
MinionSpell
. - Fixed
onteam
andonsameteam
conditions requiring player targets. - Fixed
SpawnEntitySpell
throwing spawn chance errors when using non-Mob entities. - Fixed
PlayerMenuSpell
throwing errors when the opener clicked outside the inventory. - Fixed
signtext
modifier condition not comparing text properly. - Fixed an issue where
location-modifiers
forLoopSpell
were checked after applyingy-offset
to the targeted location, instead of before. - Fixed an issue that allowed dragging items into menus created from
MenuSpell
andPlayerMenuSpell
. - Fixed
ConjureSpell
'soffhand: true
giving duplicate items. - Fixed
MultiSpell
'senable-custom-spell-chance
not calculating random spells correctly. - Fixed an issue where the
/ms magicitem
command modified the stored item stack version of a magic item. - Fixed an issue with the
uuid
option of magic items that could cause an error. - Fixed an issue that caused magic items using the
name
orlore
options to match improperly. - Fixed an issue where
FlamewalkSpell
,MinionSpell
,BeamSpell
,BlockBeamSpell
,FireballSpell
, andOrbitSpell
did not properly check theself
andinvisibles
targeting categories. - Fixed an issue where
HomingMissileSpell
started facing in the wrong direction. - Fixed an issue that caused experience to be modified incorrectly by reagents,
DrainlifeSpell
, and the shop addon. - Fixed an issue that prevented spaces from being used when specifying magic item costs.
- Fixed an issue that could potentially cause an error in
ProjectileSpell
andParticleProjectileSpell
. - Fixed various issues with the
MenuSpell
andPlayerMenuSpell
, e.g. moving items from menus or items deleting when being shift-clicked into menus. - Fixed an issues where vehicles and passengers cancelled teleports relating to
MinionSpell
,WaterwalkSpell
,WindwalkSpell
,OrbitSpell
andStunSpell
. - Fixed an issue where the experience bar was not reset after a cast with
use-exp-bar-as-cast-time-bar: true
. - Fixed an issue where
FlamewalkSpell
did not properly check target modifiers. - Fixed an issue that displayed empty names for projectiles spawned by
HomingProjectileSpell
. - Fixed an issue that prevented the
auto-equip
option ofConjureSpell
from auto-equipping non-armor items to the head and chest slots. - Fixed console command completion for some commands.
- Fixed showing mana on the food bar so that food changes are fake and food levels aren't modified.
- Fixed modifying global variables without a player.
- Fixed
RepairSpell
saving the repairedchestplate
into thehelmet
slot. - Fixed an issue that caused targeting to fail on players if
can-target
was not specified. - Fixed
SilenceSpell
overriding its targeting to always target players. - Fixed an issue that caused invalid entries in
remove
onCleanseSpell
to cause an error. - Fixed NPE (error) caused by
FlightPathSpell
optionland-spell
not being specified. - Fixed
ExternalCommandSpell
optionblock-chat-output
sending black lines without ProtocolLib present even whenstr-blocked-output
is empty. - Fixed an issue that caused an error when using the
modifiers
option ofmana.yml
. - Fixed an issue that caused an error when casting
TotemSpell
if a targeted block could not be found. - Fixed several exploits related to the
itemspray
effect. - Fixed an issue where the
spread
andspeed
options ofVolleySpell
were not properly divided by10
. - Fixed an issue with the
spells
option ofMultiSpell
that caused an error when a sub-spell contained a:
. - Fixed an issue where an error would occur if the
entity
effect did not spawn an entity due to invalid configuration. - Fixed an issue where entites spawned by the
entity
effect persisted if they unloaded. - Fixed an issue that prevented the
spectator
target element of valid target lists from functioning properly. PassiveSpell
,DowseSpell
and.targeted.CarpetSpell
now properly checkcan-target
.- Fixed an issue with
.targeted.CarpetSpell
that caused non-full blocks to be replaced with air. - Fixed issues that caused the
armorstand
,effectlib
, andentity
effects that caused an error if the effects had failedchance
ormodifiers
, or had configureddelay
. - Fixed an issue with the
armorstand
andentity
effects that caused them to not be correctly displayed if the optiondelay
was configured. - Fixed an issue that prevented negative values of
money
from functioning in spell costs. - Fixed an issue that prevented some placeholders from working in failure messages for
target-modifiers
. - Fixed several issues that prevented certain post cast operations from being performed, such as specific failure messages for sub-spells on cast mode
full
. - Fixed an issue that prevented cooldowns from being properly persisted between reloads and restarts despite
cooldowns-persist-through-reload: true
. - Fixed an issue with
ProjectileSpell
that caused projectile hits to not always be properly considered, such as if a fireball projectile hit an entity with fire resistance. - Fixed an issue that prevented replacement from properly functioning for spell effect offsets in the
buff
,orbit
, andprojectile
effect positions. - Fixed an issue with the
leaping
andvelocityactive
conditions that caused them to not function properly. - Improved how we calculate rotations for:
ParticleProjectileSpell
,BeamSpell
, andBlockBeamSpell
. - Improved how we calculate
relative-offset
in spells and spell effects. - Fixed
AreaScanSpell
not casting itsspell
on blocks of scanned locations, but on the original target location. - Fixed using usage of placeholders
%t
and%a
in the following modifier conditions:hasscoreboardtag
,customname
, anddata
. - Fixed
PlayerMenuSpell
checkingplayer-modifiers
as if the player that would show up in the menu was the caster instead of the target. - Fixed
WaterwalkSpell
not working on fluid blocks, such as kelp and sea grass. - Fixed an issue that caused an error if the
namespace-key
option was not specified in theboss-bar
section of a variable. - Fixed an issue with the
worldguard
no magic zone type that caused zone checks to be incorrect if the region was re-defined. - Fixed some spells which accept spell names in their spell cast arguments not accepting internal spell names if the passed spell's
name
was defined. Full list:BindSpell
,ForgetSpell
,HelpSpell
,ImbueSpell
,ScrollSpell
,SpellbookSpell
,TeachSpell
,TomeSpell
, andUnbindSpell
. - Fixed the default yaw and pitch passed to the
/ms cast at
command from the executor's location being reversed. - Fixed
playeranimate
only checking for main hand animations.