5.4.0
Highlights
Version support
Added support for 1.20.2
Damage
- Added support for multi-type damage
- Added DamageTags, allowing you to specify any number of arbitrary tags on any damage mechanics using tags=THIS,THAT e.g.
- damage{amount=5;tags=FIRE}
- Added
damageTag
condition, checks if the damage that triggered the skill has the given tag - Changed element damage attribute to just apply a damage tag
Projectile Upgrades
- Projectile Tick-Interpolation
- Added DISPLAY and TEXT bullet types
- Item Display Bullet Type: Add "tx", "ty" and "tz" (t from translation) to offset the visual position of the bullet, also "translation"("pos", "offset") to set all the values at the same time in the x,y,z format
- Added
bulletBrightness
, andbulletBrightnessBlock
+bulletBrightnessSky
for some reason to Display bullets - Added
bulletBillboard
to Display bullets - Added
bulletForwardOffset
to mob bullets - Added
bulletCullingDistance
option to display and text bullets
Stat System
- Added the Stat System
Holograms
- Added our own hologram system
- All hologram-related features no longer require a 3rd party hologram plugin
- Made it so mob names can be multi-line using nameplates feature on 1.19.4+ using
\n
for newlines
Spawners
- Major spawners rewrite - see spawners section
General
- Added
/mm test mechanic [line]
command to test executing a skill line - Allow CustomModelData in
packinfo.yml
- Upgraded the item editor with a bunch of new buttons
Mobs
- Added support for mobs having players as parents
Added new mobs types:
BLOCK_DISPLAY
CAMEL
CHEST_BOAT
ITEM_DISPLAY
SNIFFER
TEXT_DISPLAY
AI
- Added
radius
option toLookAtPlayers
goal - Added
attackReachModifier
option to MeleeAttackGoal (defaults to 4)
Mechanics
NEW: Cancel
- Cancels the current skill tree
SomeSkill:
Skills:
- message{m="hello"} @server
- cancel ?isMonster #cancels the rest of the skill from executing
- message{m="bye"} @server
NEW: Hit
- Simulates a physical hit from the caster using their damage attribute, held weapon, etc
- Same options as
baseDamage
mechanic - Takes melee stats into account (regular skill damage won't unless configured to specifically)
NEW: SetTransformation
- Transforms the target display entity
- transformation{action=set;transformation=translation;value=0,0,1} @self
- transformation{action=set;transformation=right_rotation;value=0,0,0,1} @self ~onwhatever
Action valuees: SET, ADD, MULTIPLY, DIVIDE Transformation values: TRANSLATION, SCALE, RIGHT_ROTATION, LEFT_ROTATION
NEW: ClearExperienceLevels
NEW: pushBlock
- Pushes the targeted block in the given direction. Follows the same rules as pistons.
- Direction can be either cardinal direction or a location targeter. If given a targeter, the block will be pushed once towards that location
- Mechanic also supports
onPush
andonFail
skills which will fire at the block's location
Mechanic follows piston rules and will push other connected slime blocks as well, but only if they're adjacent or in front of the block - it cannot push connected blocks behind the pushed block.
setProjectileDirection
NEW: - Changes calling projectile's direction to the given target
setProjectileBulletModel
NEW: - Added
setProjectileBulletModel{model=X}
mechanic, can be called by a projectile to change the bullet's item's model ID (only works with DISPLAY bullets)
StatAura
NEW: - Applies a stat modifier to the target as an aura.
Example:
- stataura{stat=PARRY_CHANCE;type=ADDITIVE;value=0.5;duration=200} @self ~onDamaged
- would increase the caster's parry chance stat by 50% for 10 seconds when damaged
ArrowVolley
- Add "pickup"/"canPickup" attribute, defaults to true
Damage Mechanics
- Added
powerAffectsDamage
,ignoreShield
,ignoreEffects
,ignoreResistance
,damagesHelmet
, andnoAnger
boolean options to damaging mechanics
Particle Effects
- Added new particles: DRIPPING_CHERRY_LEAVES, FALLING_CHERRY_LEAVES, LANDING_CHERRY_LEAVES
- Added
startSideOffset
placeholder support to particle effect mechanic
Projectile Mechanics (Projectile, Missile, etc)
- Added
tickInterpolation
option (defaults to 0) - Changed mob bullet's Y offset option to bulletYOffset
Setting tickInterpolation will interpolate that many points between each tick in a projectile and execute the onTick and onHit skills on those points as well, doing multiple 'ticks' in a single tick.
This can be used to fill in the gaps with super-fast projectiles and also prevent entities from being skipped over by insanely fast projectiles.
- Added
interactable=true
,onInteractSkill
to projectiles (requires 1.19.4+), used to allow the player to hit the projectile similar to a ghast fireball.
Missile
- Added
hugSurface
andbounce
options to missile mechanic (and all other related options similar to the Projectile mechanic)
Lunge
- Added
oldMath/old/o
attribute to determine if it should use the old wonky math (default: false)
Orbital
- Added
hugSurface
to orbitals
PotionClear
- Added
type
/types
attribute topotionClear
mechanic
Switch
- Allow to run MetaSkills & Code Refactor
Rally
- Rewrote Rally mechanic. Added
conditions
option to rally, and all attributes are now optional.
Volley
- Add "pickup"/"canPickup" attribute, defaults to true
Conditions
NEW: DamageTag
Added damageTag condition, checks if the damage that triggered the skill has the given tag
- damageTag{tag=FIRE}
NEW: directionalVelocity
- Added
directionalVelocity
condition, which checks if the target has a velocity matching the given parameters. - Added side, forward and vertical aliases to DirectionalVelocityCondition
Options:
Option | Description | Default |
---|---|---|
x | The X velocity (a range) | null (not checked) |
absx | Use the absolute value of the X velocity | false |
y | The Y velocity (a range) | null (not checked) |
absy | Use the absolute value of the Y velocity | false |
z | The Z velocity (a range) | null (not checked) |
absz | Use the absolute value of the Z velocity | true if relative=true, otherwise false |
relative | If true, X is calculated as forward/backward and Z is side-to-side | false |
If the X, Y, or Z velocity is not specified, that component of the velocity is not checked. The 'absx', 'absy', and 'absz' options determine whether the absolute value of the corresponding velocity is used in the check. If 'relative' is true, the velocities are considered relative to the entity's orientation.
NEW: MaterialOnCooldown
materialIsOnCooldown
condition, aliases materialCooldown
, matCooldown
arguments material
/ mat
/ m
, defaults to enderpearl
true if material type is on cooldown for the player, false otherwise
NEW: SpawnReason
Audiences
- Added TRACKED audience, which are the players that are rendering the caster on their client
Placeholders
General
- Added
<caster.stat.STAT_NAME>
placeholders - Added
<target.block.data>
- returns the block data of a block - Added
<target.item.type>
placeholder - Added placeholder support for variable name in all variable mechanics
NEW: Custom Placeholders
Added custom placeholders file to make it easier to configure static/reusable and even conditional values.
Each pack can now have a placeholders.yml
in the base pack directory that contains any number of placeholders.
These can be static or you can define conditional placeholders - the first one that evaluates true will be chosen, or the Default if they're all false.
An example placeholders.yml might look like this:
TestPlaceholder: 'some value'
TestConditionalPlaceholder:
Day:
Conditions:
- day
Value: day
Night:
Conditions:
- night
Value: night
Default: idk
Added ability to define random placeholders that will just choose a random line from a list in the `placeholders.yml` file
TestRandomPlaceholder:
- red
- green
- blue
Spawners
- Rewrote spawner saving/loading
- Rewrote spawner positioning algorithm
- Added SpawnConditions to spawners that target the position it's trying to spawn a mob
- Regular conditions continue to function as "Activation Conditions" e.g. does the spawner even try
- Added tab completion to a lot of the spawner commands
- Fixed various spawner related bugs
- Made some API changes for 5.5, which will add a GUI editor for spawners
Bugs / Other
- Added placeholder support to a bunch of new things
- Updated some of the default configuration files to be more up to date
- Refactor some skill tree stuff
- Merge ExtendedDamageMetadata into DamageMetadata
- Fixed NoSuchMethodError in CrouchingCondition
- Fixed spawner config field for spawn conditions to actually be SpawnConditions
- Fixed loading error on 1.16
- Fixed remove attribute on SetLeashHolder mechanic
- Fixed @targetlocation targeting block location instead of actual location when hitting maxDistance for players
- Fixed projectiles with no hitboxes being broken
- Fixed default values for PlayersInRingTargeter
- Fixed ClassNotFoundException on mohist
- Fixed
preventImmunity
option to DamageMechanics - Fixed/removed vehicle alias from the mount targeter
- Fixed spawner addcondition command not saving conditions after a restart
- Fixed issues with removing spawner conditions
- Fixed
<target.block.type>
placeholder ||maybe|| - Fixed sudoskill to use the new centralized player profiles for consistency
- Fixed ConcurrentModificationException with spawners saving during shutdown
- Fixed NPE when loading mob type with no display name
- Fixed case where
Despawn: false
mobs from a spawner would despawn anyway - Fixed blockmask with variables again
- Fixed PhatLoots support not taking looting enchants into account
- Fixed ConcurrentModificationException with spawners when plugin is shutting down
- Fixed various issues with threat tables
- Fixed several saving issues when cloning a spawner
- Fixed looting issue with phatloot support
- Fixed various bugs with holograms and packet bullet culling
- Fixed custom nameplates not appearing for new players that join the server
- Fixed projectile velocity with text bullets
- Fixes to prevent spawner saving corruption
- Fix radius option on speak mechanic
- Fixed crashes involving mob bullets and orbitals
- Fixed an issue with DisplayTransformationMechanic
- Fixed
DisplayOptions.Block
for block_display entities - Fixed non-string Crucible NBT placeholders not returning their value
- Fixed NPE in PlaceholderStringImpl
- Fixed Multi-Templates to be read on the correct order (Left to Right)
- Fixed onAttack and onDamaged executing with power=0 instead of power=1
- Fixed bugs with arrow bullets
- Fixed offset option not working on speech bubbles
- Fixed SetRotation just completely borked
- Fixed DamageModifiers and HealthBars being broken on recent versions
- Fixed Display bullet orientation on 1.20+
- Fixed inconsistencies with ProjectileVelocity mechanic when relative=true
- Fixed
config.yml
not generating on new servers - Fixed and tested variable saving for all the different scopes
- Fixed variable duration not calculating expiration time properly
- Fixed bullets and several other errors on the orbital mechanic closes #1310 (closed)
- Fixed fov condition's rotation attribute not working closes #1298 (closed)
- Fixed tadpoles closes #1304 (closed)
- Fixed some errors with damage calculation closes #1295 (closed)
- Fixed NPE when using an mmoitem in a holding condition closes #1291 (closed)
- Fixed various issues with DamageModifiers
- Fixed NPE in PotionClear mechanic
- Fixed weird inconsistency with zombified piglin vanilla overrides
- Fixed intersection error with projectile bouncing
- Fixed itemSpray items being able to be picked up by hoppers
- Fixed @FloorOfTargets meta-targeter not working with location targets
- Fixed NPE in Rally mechanic
- Fixed
KillMessagePrefix: ''
not disabling the kill message prefix - Fixed the "-p" flag for the killall command
- Fixed NPE in listactive command
- Fixed NearbyAudience checking for targets that might be in different worlds
- Fixed
CAST
condition action executing multiple times - Fixed
zombified_piglin
not recognized as a valid mob type closes #1319 (closed) - Fixed SwitchMechanic not working for some conditions
- Fixed HasOffhandCondition to check for other living targets instead of only players
- Fixed EjectPassengerMechanic being called async
- Fixed particles to use nearby audience by default instead of world, reducing RX
- Fixed
relative
option in VelocityMechanic. Now acts similar to projectileVelocity. - Fixed KillCommand not removing non-living mythicmobs
- Fixed raytrace mechanics running async from auras