Changelog

5.14.0

General

  • Added PackOverrides and FileOverrides to packinfo.yml, the inverse of PackDependencies and FileDependencies: a pack, or some of its files, is skipped when the listed pack or plugin IS present. All four keys now accept conditions combined with &&, ||, ! and parentheses, and a name can be a plugin, another pack's folder name, or MythicMobsPremium
PackDependencies:
- ((MythicCrucible && MythicMobsPremium) || Nexo)
PackOverrides:
- TheRealPack
FileDependencies:
- armors/** MythicArmors
FileOverrides:
- items/armors_vanilla.yml MythicArmors
  • Fixed FileDependencies never excluding files on a real server
  • Added Hidden: true to metaskills, and hidden mobs, items and skills are left out of more tab-completes. Hidden things still work by their full name, and /mm mobs list still shows everything
my_utility_skill:
  Hidden: true
  Skills:
  - message{m="Called by other skills, never typed by hand"}
  • Mob pathfinding and the target scans of AI goals now run on worker threads (Premium only, and not on Folia). It is on by default: set General.AsyncPathfinding in config-general.yml (Threads: 0 uses a quarter of the CPU cores, at least 1), or Options.AsyncPathfinding on a single mob
Configuration:
  General:
    AsyncPathfinding:
      Enabled: true
      Threads: 0
MyMob:
  Type: ZOMBIE
  Options:
    AsyncPathfinding: false
  • Added spawner editing to /mm menu: /mm menu spawners (alias /mm menu s) opens the spawner browser and /mm menu spawners <name> opens that spawner's editor
  • The spawner browser shows each spawner's mob type, world, coordinates, live mob count, cooldown and warmup. Left-click teleports to it, right-click edits it, and a button creates a spawner at your location
  • The spawner editor changes the mob type, level, group, mob limits, cooldown, warmup, radii, ranges and chance, toggles the timer, player check, flames, breakable, leash options, random rotation and world scaling, resets timers, deletes the spawner after a typed confirmation, and saves to the file immediately
  • Added Attack Speed, Flying Speed, Knockback Resistance, Follow Range, Step Height and Scale to the mob editor
  • The Create Mob and Delete Mob buttons work, Search and Filter filter the option list, and Get Mob Egg is visible again (right-click it to spawn the mob)
  • Added the TooltipStyle option to menu icons, and fixed Hide having no effect on them (#2313)
  • Fixed the spawner browser failing to open when any spawner existed
  • Fixed right-clicking Set Faction deleting the whole mob from its config file
  • Fixed right-clicking Health, Damage and Armor erroring instead of clearing the value
  • Fixed Toggle View cycling a "Groups" mode identical to "Show All", and spawner menu buttons that did nothing or carried copied "Create Mob" and "Filter Mobs" labels

Stats

  • Vanilla attributes that have no stat of their own are now registered as STATIC stats from the server's attribute registry, named after the attribute (for example NAME_TAG_DISTANCE), so attributes added in new Minecraft versions can be used as stats
  • Added the 26.2 attributes AIR_DRAG_MODIFIER, BELOW_NAME_DISTANCE, BOUNCINESS, FRICTION_MODIFIER and NAME_TAG_DISTANCE to the default stats.yml
  • Fixed damage variables missing, and cancelevent having no effect, in PRE stat skills (#10096)

Mechanics

NEW: tickRate

  • Added the tickRate mechanic (1.20.4+) with rate (0 to 20), duration and reset. It needs no extra plugins
  • On players only the target's own client slows down, and rate=0 freezes every non-player entity on their screen
  • Mobs and other entities are ticked less often by the server, so movement, attacks and AI slow down together for everyone, and rate=0 stops them completely (Folia included)
- tickRate{rate=5;duration=100} @PlayersInRadius{r=10}
- tickRate{rate=5;duration=100} @EntitiesInRadius{r=10;ignore=players}
- tickRate{rate=0;duration=60} @EntitiesInRadius{r=10}

NEW: addDamageTag

  • Added the addDamageTag mechanic (option tag, aliases t, name, n), which adds a damage tag for ~onAttack triggers, auras and attack stats. The damageTag condition reads it

NEW: setTextOpacity

  • Added the setTextOpacity mechanic (alias textOpacity), which fades the text of a text display or of the current projectile's TEXT bullet
  • opacity (aliases o, alpha) goes from 0 to 255 and defaults to 255. interpolationDuration (aliases duration, d) is the fade time in ticks, and the default of -1 keeps the display's current interpolation duration
  • setTextDisplay can now also set the text of a projectile's TEXT bullet

NEW: Execution Audiences

  • Added ExecutionAudience (also Options.ExecutionAudience) to mobs and metaskills. It limits who sees the output of everything the skill runs: messages, speak, sounds, particles, disguises, glow, block masks, bullets, summoned mobs and the mob itself. It takes an audience type, an @Targeter, or NONE for nobody
  • A nested skill's ExecutionAudience narrows the audience already in effect for that call only, and never widens it
  • summon passes the skill's audience to the summoned mob, and a mob keeps its audience through restarts and chunk loads
  • Added the addToAudience (aliases addaudience, audienceadd) and removeFromAudience (aliases removeaudience, audienceremove) mechanics, which change the audience of the running skill and of its mob. They act on the player targets of their line, or on the players of audience (alias a) when it is set. mobs (alias m) is a targeter for other mobs to change as well, and ignoreSkillAudience (alias isa, default false) leaves the running skill's audience alone and only changes those mobs
  • Added the unsetAudience mechanic (aliases clearaudience, audienceclear), which removes the restriction from the running skill and its mob, or from the mobs of mobs. It takes mobs and ignoreSkillAudience too
  • Boss bars, sendtitle, sendactionmessage, hologram and summonPassenger do not follow the audience yet
Skills:
- addToAudience @self
- message{m="Only the caster sees this"} @PlayersInWorld

Damage

  • Added the then option (alias of onDamage) to damage, basedamage, percentdamage, consume, hit, lightning and shoot. It runs a skill for each target the damage was really applied to, skipping targets that were invulnerable, dead, in immunity frames or resistant. Shield-blocked hits still count as landed (#2309, #4589)
Skills:
- damage{a=2;then=RecoilScreen} @PlayersInRadius{r=5}
  • Added the <skill.var.damage-dealt> skill variable, holding what the target actually took after armor and resistance instead of the configured amount. It can be read on any later line and inside a then block
Skills:
- damage{a=10} @target
- command{c="say took <skill.var.damage-dealt>"}
  • Added triggerSkillDamage (alias tsd) to pair with ts=true, so one damage mechanic can fire both ~onAttack and ~onSkillDamage. ts=true on its own still fires only ~onAttack
  • Damage with a non-attack cause such as dc=MAGIC now fires ~onSkillDamage, and <skill.var.damage-cause>, <skill.var.damage-tags> and the damageTag condition work on it

DropItem Owner

  • Added the owner option to dropitem, so only that player can pick up the drop. Owner mechanics, targeters, conditions and <owner.*> placeholders now also work with dropped items (#10118)
RewardNearest:
  Skills:
  - dropitem{i=DIAMOND;owner=<target.uuid>;onDrop=ClearRewardOwner} @PIR{r=5;limit=1;sort=nearest}
ClearRewardOwner:
  Skills:
  - sudoskill{s=ClearRewardOwnerItem}
ClearRewardOwnerItem:
  Skills:
  - delay 100
  - removeowner

OnDamaged Aura Component

  • Added conditions (aliases cond, c) to the onDamaged aura component. With cancelEvent on, the hit is only cancelled when the conditions pass. They do not change whether the onHit skill runs or a charge is used (#10024, #10026)
- aura{auraName=barrier;d=600;charges=5;components=[
  - onDamaged{cancelEvent=true;damageMultiplier=0.5;
    conditions=[ - compareValues{v1="<skill.var.damage-amount>";op=LTE;v2=6} true ];
    onHit=[ - sound{s=item.shield.block} @self ]}
  ]} @self

Misc

  • The chance option of mechanics accepts placeholders (#2293)
  • Particles missing from Mythic's own particle table are now resolved through the server's Particle enum and can be used by their enum name, so new vanilla particles work without an update

Conditions

  • inBounds accepts the new shapes, location targeters, and corner overrides listed under Triggers
  • Fixed heightAbove/heightBelow not resolving caster and skill placeholders in height when the targets are locations
  • Added the snowing condition (alias isSnowing), checking whether it is snowing at the target location
  • Added the isInAudience condition (aliases inaudience, audiencecontains), true for a player in the execution audience, or for any player when the skill has none, and false for anything that is not a player
  • Added the ?@ inline condition prefix, which checks a condition against each target of its line after the targeter has run and drops the targets that fail, like TargetConditions on a metaskill
Skills:
- damage{a=5} @PlayersInRadius{r=10} ?@health{h=>10}
  • Condition actions cast, castinstead and orelsecast accept an inline skill block
Conditions:
- health{h=>0} cast [ - command{c="say hi"} ]
  • The named time conditions now cover the 24000-tick day with no overlaps or gaps: day is 0 to 11999, dusk 12000 to 12999, night 13000 to 22999 and dawn 23000 to 23999
  • Block filters accept partial block states: oak_stairs[facing=north] matches stairs of any half and shape, a namespaced id such as minecraft:oak_stairs matches every state, and *[waterlogged=true] matches any block with that state
  • Fixed caster-only conditions such as serverBefore always evaluating false in menu icon conditions, dialog viewer conditions, raytrace hit filters and composite conditions (#2297)
  • Fixed itemIsSimilar never matching an empty slot against AIR
  • Fixed notEmpty and isEmpty not working in lore templates (#10028)

Targeters

NEW: bound

  • Added the @bound targeter (alias @bounds), targeting the living entities inside a cuboid, sphere, or cylinder, with the same options as inBounds
- ignite @bound{shape=sphere;l=@selfLocation;r=8}

Mobs

NEW: Sulfur Cube Options

  • Sulfur cubes now support Baby, Adult and AgeLock
  • Added the Archetype option (bouncy, explosive, sticky, hot, slow_flat) and the setSulfurCubeArchetype{archetype=hot} mechanic (#10094)
BouncyCube:
  Type: SULFUR_CUBE
  Options:
    Archetype: bouncy

NEW: Conditional AI Goals

  • Added the meleeAttackConditional, arrowAttackConditional, bowAttackConditional, crossbowAttackConditional, moveWithinDistanceOfTargetConditional and goToLocationConditional AI goals, which only run while their conditions match
  • The conditional goals take targetConditions and mobConditions, and goToLocationConditional takes locationConditions and mobConditions. fleeConditional and moveTowardsTargetConditional gained mobConditions too
  • moveTowardsTargetConditional gained minrange, the distance at which the mob stops moving closer (#10039)
  • crossbowAttack gained speed and attackRadius, and bowAttack and crossbowAttack are now skipped on mobs that cannot use them
AIGoalSelectors:
- 0 clear
- 1 meleeAttackConditional{targetConditions=[ - distance{d=<3} ]}
- 2 moveTowardsTargetConditional{s=1;minrange=10;maxrange=80;targetConditions=[ - isPlayer true ]}

Triggers

NEW: onPlayerEnter / onPlayerExit

  • Added mob triggers that fire once for each player who moves into or out of a region, checked on the mob's timer clock; @trigger is the player. Leaving by logging out, dying, or changing worlds does not fire onPlayerExit
Skills:
- message{m=Turn back while you can} @trigger ~onPlayerEnter{shape=sphere;location=@selfLocation;radius=20}

NEW: onTotemPop

  • Added the onTotemPop trigger (alias onTotem), fired when a Totem of Undying saves a mob. It runs synchronously, so cancelevent stops the totem from saving the mob

NEW: onLeash / onUnleash

  • Added the onLeash (alias onLeashed) trigger for when a player leashes a mob, and onUnleash (alias onUnleashed) for when a mob is unleashed. @trigger is the player, and for onUnleash it is empty when something other than a player unleashed the mob. cancelevent cancels the leash or unleash (#10060)

Bounds Shapes

  • onEnterBounds, onExitBounds, onPlayerEnter, onPlayerExit, inBounds, and @bound accept shape=sphere (with location and radius) and shape=cylinder (also height), besides the default two-corner cuboid
  • Corners and locations accept a location targeter such as @selfLocation or @CasterSpawnLocation, resolved on every check
  • Added x1/y1/z1 and x2/y2/z2, replacing one coordinate of a resolved corner, e.g. for a region between two pins at any height
  • Bounds trigger config errors now say what is wrong, e.g. a cylinder without height
Skills:
- teleport @CasterSpawnLocation ~onExitBounds{shape=sphere;location=@CasterSpawnLocation;radius=20}
- message{m=Welcome to the arena} @trigger ~onPlayerEnter{c1=arena_a;c2=arena_b;y1=-64;y2=320}

Dialogs

  • Added ForEach and PageSize to body elements and buttons: one copy per target or value, split into pages (<dialog.page>, <dialog.pages>)
  • Added Skills (inline mechanics) to buttons
  • Added clickable text: <skill:Name:key=value> in body text runs a skill on click
  • Initial works on every input type. Inputs start with values carried from the previous dialog
  • Option labels support MiniMessage and placeholders
  • Item elements accept Mythic items, vanilla item lines such as DIAMOND{amount=3}, drop tables and placeholders
  • Conditions on body elements, inputs and buttons can read dialog.* values
  • Added MythicDialogOpenEvent, MythicDialogClickEvent and DialogManager#open
  • /mm dialogs show accepts key=value pairs
  • Placeholders resolve inside MiniMessage tags in all MythicMobs text, such as <head:<target.name>>
  • <char> accepts codes above FFFF, such as <char.1F600>
  • Fixed WAIT_FOR_RESPONSE dialogs staying on the waiting screen when a click runs no skills (1.21.8+)
  • Fixed hasDialogOpen staying true after the player left or used the ExitButton
  • Fixed button clicks writing their values into the opening skill's variables
  • Fixed closeDialog causing errors on 1.21.6 and 1.21.7
  • MiniMessage tags typed into text inputs show as plain text
  • Clicks on a dialog that is no longer shown are ignored
  • Fixed Multiline on text inputs not applying, and added MaxLines and Height (1 to 512 pixels), which only apply when Multiline is true (#10002)
Buttons:
- ForEach: "@PlayersOnServer{targetself=true}"
  PageSize: 6
  Label: "<skill.value>"
  Skills:
  - message{m="<gold>You picked <skill.value>"}

Placeholders

  • Added riding (aliases vehicle, mount), passenger (alias rider) and passengers (alias riders), returning the UUID of the entity the scoped entity is riding, the UUID of its main passenger, and a list of the UUIDs of all its passengers
  • Added <mythicitem.[MythicItem].lore>, returning the item's lore lines joined by new lines. Menu lore now splits placeholder values on new lines (#10061)
  • Added <skill.audience-uuids>, returning the UUIDs of the skill's execution audience separated by commas, or nothing when it has none
  • Fixed % (remainder) never enabling math mode in placeholders
  • Fixed the scoped item.amount placeholder always returning 0
  • Fixed mythicitem placeholders always returning UNDEFINED (#10059)
  • Fixed removed placeholders.yml keys staying registered after /mm reload (#10086)

Items

NEW: Item Components

  • Added UseEffects (SpeedMultiplier, CanSprint, InteractVibrations), SwingAnimation (Type of NONE, WHACK or STAB, and Duration in ticks) and MinimumAttackCharge (1.21.11+)
  • Added AttackAnimation and InteractAnimation (26.3+). On 26.3 SwingAnimation sets both
UseEffects:
  CanSprint: true
  SpeedMultiplier: 1.0
SwingAnimation:
  Type: STAB
  Duration: 12
MinimumAttackCharge: 1.0
  • Added ItemName, the vanilla default name, which is not italic and does not count as a custom name for anvil or predicate checks
  • Added Options.HideTooltip, Potion.Type, Potion.DurationScale (Paper 1.21.5+) and DamageType (1.21.11+)
  • The Hide list also accepts data component ids such as minecraft:food (Paper 1.21.5+)
ExamplePotion:
  Id: POTION
  ItemName: <gold>Elixir of Haste
  Potion:
    Type: swiftness
    DurationScale: 2.0
  Hide:
  - potion_contents
  • Added UnsetComponents (Paper 1.21.3+), DamageResistant (1.21.2+), PaintingVariant (1.21.5+), and Compostable, CookingFuel and BrewingFuel (26.3+)
  • Equippable gained EquipOnInteract (1.21.5+), CanBeSheared and ShearSound (1.21.6+), and UseRemainder accepts an Item and Amount section
  • CanPlaceOn, CanBreak and tool rules accept block tags and namespaced ids
FireproofSteak:
  Id: COOKED_BEEF
  UnsetComponents:
  - food
  - consumable
  DamageResistant: is_fire
LumberAxe:
  Id: IRON_AXE
  CanBreak:
  - '#minecraft:logs'
  Tool:
    Rules:
    - materials: '#minecraft:mineable/axe,STONE'
      speed: 8
Ember:
  Id: PAPER
  Compostable:
    Layers: minecraft:compostable/medium
  CookingFuel:
    BurnTime: 1600
  BrewingFuel:
    Uses: 20

Misc

  • Fixed an invalid BreakSound value making the whole item silently fail to load. It now logs a config error
  • Fixed BlocksAttacks only loading when it was typed as BlocksAttaacks
  • Fixed BlocksAttacks blocking nothing by default and rejecting # tags
  • Fixed BlocksAttacks.BypassedBy throwing NoSuchMethodError on 26.1+
  • Fixed DefaultItemOptions.PreventCrafting in config-items.yml never being read (Crucible #327)
  • Fixed item templates dropping nested NBT keys from every merged template except the last one (#10042)
  • Fixed the getCustomData item meta keyword not reading nested custom_data compounds
  • Fixed a NullPointerException when clearing the lore of an item that has none

API

  • Added MechanicRegistry.registerProvider and ConditionRegistry.registerProvider, so a plugin can override a built-in mechanic or condition. A provider is asked when a line is parsed and returns a replacement, usually one that wraps the built-in and delegates to it. Providers chain, the original keeps its cooldown, targeter, conditions and targeting flags, and a replacement that drops an interface of the original is rejected
ConditionRegistry.registerProvider((name, config, current) ->
        name.equals("RAINING") ? new MyRainCondition() : null);
  • Added execution audience support to the API: SkillMetadata#getExecutionAudienceState, #getExecutionAudience, #setExecutionAudience, #hasExecutionAudience and #isolateExecutionAudience, overloads of MythicMob#spawn, SkillEventBus#processTrigger and SkillEventBus#buildSkillMetadata that take an audience, and MobManager#applyMobAudience, #applyAudienceVisibility, #registerAudienceTrackedEntity and #unregisterAudienceTrackedEntity
  • Added MythicAudienceLoadEvent, which lets a plugin supply a custom audience type with register(SkillAudience) when a mob or skill names one that Mythic does not know
  • Added AsyncPathNavigation#getPathFuture, which turns the placeholder path an async navigation returns from createPath into a future for the computed path. Call it right after createPath
  • Mythic eggs now respect a cancelled interaction, and MythicMobEggEvent carries the player (#10004)
  • Added Display to drop tables, readable through DropTable#getDisplayName
  • Added CHANGE_DESTROY_DIRECTION to PlayerActionPacketEvent for 26.3

Compatibility

  • Added support for Minecraft 26.3
  • Fixed playAnimation swing and critical hit animations on 26.3
  • Fixed DISPLAY bullets jittering at spawn on 26.3 (#10044)
  • Fixed HIDE_POTION_EFFECTS on 1.20.5+ by mapping it to HIDE_ADDITIONAL_TOOLTIP
  • Fixed Mythic eggs throwing IllegalAccessError on 26.2
  • Improved Folia handling: the Geyser effect animation runs on its target's region thread, projectile hits across regions work, the random spawn generator no longer blocks the global region thread, forced-sync metaskills no longer run on the global region thread, and prison block cleanup runs on the owning region
  • Fixed mobs whose entity was retired without a death event staying registered on Folia, and their despawn now runs on the owning region (#10003)
  • Fixed 41 conditions, including blockTypeInRadius, hasItem, inLiquid, isBaby, mounted and structure, reading from the wrong region thread on Folia
  • Fixed teleports and schedulers on Folia for the pin teleport command, spawner menu teleports, onDamaged and projectileRebound auras, cinematicCamera, enderbeam, look, throw and armor stand and mob bullets
  • Fixed bStats metrics throwing UnsupportedOperationException on Folia (#10027)
  • Fixed Crucible items missing lore on Folia
  • Fixed the score condition erroring on Folia when the objective does not exist (#10106)
  • Fixed auras never ticking or expiring on Folia

Bug Fixes / Other

  • Optimized random spawning: the spawn point search no longer takes chunk snapshots (27.5 µs to 0.9 µs per search, 199.7 KB to 1.9 KB allocated), the mob scan stops at the local cap (32.9 µs to 5.9 µs), mob counting is faster, and one-player spawn groups skip the chunk dedupe set
  • Optimized repeat and forEach loops, which no longer copy the variable key set on every pass (18% faster repeat, 43 to 53% less allocation)
  • Optimized display bullets flying straight by skipping the rotation math (80 ns to 2 ns per bullet tick)
  • Optimized blockmask ownership tracking with per-player primitive maps
  • Optimized saving mob children: only persistent children are written to the parent's persistent data, which reduces the cost of mobs that spawn many short-lived children such as MOB bullets
  • Replaced the whole-world entity scan in the livingNearTargetLocation targeter with a radius query
  • Reduced per-tick work in skill dispatch, mob lookups and damage events: skill mechanics and damage events no longer build debug messages that are thrown away when debug is off, mob lookups by UUID do one registry lookup instead of two or three, stats with no modifiers skip the modifier sum, and metaskills with parameters copy their data once instead of twice
  • Skipped discarded work on trigger, targeter and placeholder paths: trigger dispatch and damage triggers no longer build names for debug messages that are thrown away, config values without a placeholder no longer build a lookup context, targeters that return one entity use a plain list instead of a hash set, cooldown lookups check for cooldown state before reading the clock, skills no longer fire the skill event when no plugin is listening, and setting a variable builds one placeholder context instead of two
  • Optimized projectile hit detection queries, the entity lookup cache, and stat and float parsing
  • Fixed vanilla override mobs never dropping their natural equipment (#2296)
  • Fixed setlevel leaving the mob's current health at its old value
  • Fixed equipment changes re-adding the AI goals that - clear had removed
  • Fixed mob equipment being unreadable for the first 5 ticks after spawn
  • Fixed ~onLoad firing on spawn, caused by lookups before a mob was registered rebuilding it from its persistent data
  • Fixed mob variables being lost on an unclean restart. They are now autosaved instead of only on chunk unload and clean shutdown
  • Fixed mobs loaded from disk missing the default Variables of their type (#10049)
  • Fixed mob auras ending when a chunk or world unloads on mobs with Despawn: false (#10008)
  • Fixed the last signal not being saved when a mob unloads
  • Fixed parent assignment finishing after ~onSpawn skills had already run
  • Fixed MythicMobDespawnEvent firing during kills (#10005)
  • Fixed random spawns loading twice, and random spawn Cooldown ignoring placeholders
  • Fixed a startup error when the random spawn generator ticked before the timings handler existed
  • Fixed cluster random spawn groups being evaluated off the main thread on Paper
  • Fixed a drop that yields no item aborting the rest of its drop table (#10023)
  • Fixed the native Model: block not applying on a mob's first spawn (#10031)
  • Fixed multi-line nameplates inheriting the formatting of the first line (#10035)
  • Fixed PassthroughDamage removing thrown tridents, so Loyalty tridents return again (#10012)
  • Fixed PreventVanillaDamage mobs still reporting their vanilla damage to ~onAttack (#2294)
  • Fixed skill clock stalls caused by blocking entity lookups in the children condition and targeter
  • Fixed ThreatTable looking up entities off the server thread
  • Fixed moveTowardsTargetConditional never pursuing its target (#10034)
  • Fixed fleeConditional and nearestConditionalTarget spamming errors when no conditions are set
  • Fixed moveWithinDistanceOfTarget wandering and getting stuck instead of walking straight to the target
  • Fixed scaleByAttackCooldown (sbac) reading the post-reset attack cooldown from ~onSwing, and the attack_cooldown placeholder reading it in onAttack auras, on 26.1+ (#2257)
  • Fixed damageTag conditions not working in onDamaged aura skills (#10022)
  • Fixed skill damage keeping no attacker when its damage cause is not an entity attack (#10021)
  • Fixed the hit mechanic with ts=false firing the mob's own ~onAttack triggers (#10051)
  • Fixed a melee hit cancelled by another plugin after MythicMobs' damage handler (for example MMOItems' disable-melee-attacks through MythicLib) starting the attacker's immunity window and blocking skill damage within NoDamageTicks. Hits MythicMobs cancels itself no longer start it either (#10103)
  • Fixed auras expiring early when refreshed between ticks. Expiry now follows a fixed deadline, so auras end when their duration does
  • Fixed an async aura tick ending the aura before its onDeath component could fire
  • Fixed a race that could stop auras from registering
  • Fixed castinstead and orelsecast skills losing their skill parameters
  • Fixed deferred mechanics and loop iterations reading the wrong skill variables
  • Fixed metaskill condition elements overwriting each other's results
  • Fixed numeric variables updated at the same moment overwriting each other
  • Fixed a skill cooldown cleanup that could rarely discard an active lock before it was ready to be released
  • Fixed an audience snapshot race during skill setup
  • Fixed the goto mechanic trying to run after its world became invalid
  • Fixed projectiles overshooting maxRange at high velocity
  • Fixed the ringAroundOrigin and randomRingPoint targeters crashing the server with more than 360 points
  • Fixed ARROW projectile bullets spawning with the wrong rotation
  • Fixed location targeters ignoring an explicit 0 for coordinateYaw and coordinatePitch
  • Fixed particlebox drawing a sphere and sending the square of amount particles
  • Fixed blockwave blanking sign text and other block entity data when it restores blocks (#10085)
  • Fixed weather{type=sunny} leaving thunder running
  • Fixed cinematicCamera leaving the player frozen for good when its world cannot be found
  • Fixed a left click during a DISPLAY cinematic kicking the player
  • Fixed global-data.json failing to save with AccessDeniedException on shutdown (#10111)

5.13.0

General

  • Added PackDependencies and FileDependencies to packinfo.yml, letting a pack declare which plugins/files it needs so Mythic skips (instead of parsing and erroring on) content gated behind a missing dependency
PackDependencies:
- MythicCrucible
FileDependencies:
- enchantments/* MythicEnchants
  • Spawners gained Chance, RandomRotation, and UseWorldScaling options; most spawner fields (Cooldown, Warmup, MobsPerSpawn, MobLevel, Radius, RadiusY, ActivationRange, ScalingRange, LeashRange) now accept placeholders and ranged values instead of only flat numbers
Chance: 0.5
RandomRotation: true
Cooldown: 5to10
MobsPerSpawn: 1to3
  • Numeric attributes across 40+ mechanics (missile, projectile, beam, summon, orbital, lightning, shootfireball, volley, raytrace, particle effect mechanics, and more) now accept placeholders instead of only static numbers
  • Added Hide, HideFlags, Glint, and Enchantments icon options to menu configs; fixed conditionally-overridden icons showing item flags they shouldn't (#2232)

Stats

  • Changed CRITICAL_STRIKE_DAMAGE back to a compounding multiplier on final damage instead of being folded into the same additive pool as mechanics like modifyDamage{}
  • Fixed a lost-update race in stat recompute that could drop concurrent stat changes (e.g. from async auras); health regen now reads the live stat value every tick instead of a cache that could desync

Mechanics

NEW: Cinematics System

  • Added a scripted camera system for cutscenes, boss intros, and scripted reveals: keyframed camera paths are defined under cutscenes/ (or inline) and played back for a player with the cinematicCamera mechanic (aliases cinecam, camerapath), supporting looping, per-leg easing curves, a packet-only DISPLAY camera or a TELEPORT-based fallback, and optional onStart/onEnd skills
  • Added the cinematicCancel mechanic (aliases cinecancel, stopcinematic) to stop an active cinematic early
  • Added the isInCinematic condition (aliases incinematic, incine, cinematicactive) and the cinematic.active, cinematic.frame, and cinematic.progress placeholders
  • Added the /mm camera <pathId> add|remove command for building camera paths in-game
  • Added MythicCinematicStartEvent (cancellable) and MythicCinematicEndEvent API events for addons
  • Fixed the DISPLAY camera mode not loading chunks along the camera path
my_path_id:
  duration: 100
  easing: EASE_IN_OUT_CUBIC
  points:
  - "world,100,70,100,90,10"
  - "~,0,5,-10,0,30,40"

- cinematicCamera{path=my_path_id} @target

NEW: clearpath

  • Added the clearpath mechanic (aliases stoppath, clearnavigation, stopnavigation), clearing the target mob's current navigation path
- clearpath @self

Mount Mode

  • Added a mode option to the mount and summonPassenger mechanics: ADD (adds as a passenger), SET (sets the passenger, fails if one already exists, previous default behavior), or REPLACE (replaces all current passengers)
- mount{type=Wolf;mode=ADD} @self
- summonPassenger{type=Horse;mode=REPLACE} @self

OnDeath Aura Component

  • Added a ce/cancelEvent option to the ondeath aura component: on a successful on-death skill (Paper only), the death event is now cancelled and the entity revived instead of dying
- aura{onDeathSkill=ReviveSkill;ce=true} @self

Aura Component cancelOn* Flags

  • cancelOnDeath, cancelOnCasterDeath, cancelOnTeleport, cancelOnChangeWorld, cancelOnGiveDamage, and cancelOnTakeDamage can now be set on an individual aura component instead of only the aura line (#2254)
- aura{auraname=Shield;duration=200;components=[
    - ondamaged{cancelOnTakeDamage=true;ondamaged=BreakShield}
  ]} @self

Misc

  • setProjectileDirection now supports entity-target dispatch (e.g. @target) in addition to location targets (#2229)
  • Added hitBlockConditions (alias hbcond) to missile, projectile, and slashProjectile, letting conditions evaluated against the hit block decide whether the projectile is allowed to stop there
  • The forEach mechanic now exposes the current loop index via <skill.var.index>
  • The delay mechanic's ticks parameter now also accepts placeholders
  • aura merging can now override the attachment of an already-running instance instead of always keeping the original
  • Added the firefly particle type

Conditions

NEW: isCancelled

  • Added the isCancelled condition (aliases isCanceled, cancelled, canceled), checking whether the triggering event is currently cancelled, e.g. after an earlier cancelevent in the same skill chain
Skills:
- cancelevent{}
- message{m="blocked!"} ~onDamaged ?isCancelled

NEW: skyLightLevel

  • Added the skyLightLevel condition, testing the sky light level (light from the sky only) at the target location
- skylightlevel{l=10}

entityType Condition: Nested Variant Matching

  • entityType/mobtype now accepts per-type constraints (variant, color, style, mainGene, hiddenGene, biome, profession, crack, bodyColor, patternColor, pattern) to match specific animal variants, villager professions/biomes, sheep/llama/shulker colors, iron golem crack state, tropical fish patterns, and more
- entityType{type=[COW{variant=warm},SHEEP{color=rainbow}]}
- entityType{type=VILLAGER{profession=librarian;biome=taiga}}

Misc

  • Added a shape option (SPHERE default, CYLINDER, SQUARE) to mobsInRadius, matching the shape option already on the EntitiesInRadius/EntitiesNearOrigin targeters
  • Added the angry condition (alias isAngry) for bees, wolves, and vexes
  • Added the pollinated condition (aliases isPollinated, hasNectar) for bees
  • Expanded isSheared to also check bogged and snowmen
  • variableContains gained an EXACT_ENTRY (aliases EXACTENTRY, EE) compare type, matching a whole comma-separated entry instead of a substring
  • heightAbove/heightBelow now resolve their height value with the casting skill's metadata, so it accepts skill variables and other placeholders
  • Added the inBounds condition (aliases withinBounds, insideBounds); see onEnterBounds below

Targeters

NEW: targetinvulnerable

  • Added the targetinvulnerable targeter option (default true); set to false to skip invulnerable entities (e.g. Options.Invincible mobs)
@EntitiesInRadius{r=10;targetinvulnerable=false}

mythic / vanilla Filters

  • Added mythic and vanilla as target/ignore filter values, restricting a targeter to only Mythic entities or only non-Mythic (vanilla) ones
@EntitiesInRadius{r=10;target=mythic}
@EntitiesInRadius{r=10;ignore=vanilla}

NEW: Display/Interaction Target Filters

  • Added targettextdisplays, targetitemdisplays, targetblockdisplays, and targetinteractions filters (all default true), letting skills include or exclude text/item/block display and interaction entities

Misc

  • The uuid targeter now accepts a comma-separated list of UUIDs instead of only one

Mobs

NEW: Default Level

  • Added a top-level Level mob option (aliases MobLevel, Options.Level) setting the mob's default level, used whenever it spawns without an explicit one (spawner, /mm mobs spawn, totem, mob bullet, etc); accepts a fixed value or a minTOmax range rolled per spawn
  • Spawners with no MobLevel set now use the mob's own Level (or 1) instead of spawning level 0 mobs
  • Negative LevelModifiers values now work (previously silently ignored), so a stat can decrease per level
  • Mob level is never clamped below 1 anymore, including stray fractional levels from world scaling
  • A mob's saved level is read back correctly on reload/chunk-reload instead of being guessed from health
MyBoss:
  Type: ZOMBIE
  Level: 5
  LevelModifiers:
    HEALTH: 50
    MOVEMENT_SPEED: -0.005

Misc

  • Added DefaultMobOptions.PreventJockeyMounts, PreventConversion, PreventLeashing, PreventItemPickup, and NoDamageTicks global defaults in config-mobs.yml; fixed DefaultMobOptions.PreventVanillaDamage never being read

Triggers

NEW: onEnterBounds / onExitBounds

  • Added mob triggers that fire when a mob crosses into or out of an axis-aligned box defined by two corners (checked on the mob's timer clock; a mob spawning inside fires onEnterBounds on its first check). Corners accept a pin name, world,x,y,z, or x,y,z, and support placeholders/math
Skills:
- message{m="Entered the arena"} @World ~onEnterBounds{corner1=world,100,64,100;corner2=world,120,80,120}

Placeholders

NEW: min / max / clamp

  • Added .min{amount=X}, .max{amount=X}, and .clamp{min=A;max=B} meta placeholders for bounding a numeric placeholder or variable inline, instead of variableSet+variableInRange chains
- setvariable{var=caster.spawn_chance;value=<caster.var.spawn_chance.clamp{min=0;max=100}>} @self

Misc

  • Added location.temperature (aliases l.temp, temp), returning the adjusted biome temperature at a location
  • Added absorption (alias absorb), returning the scoped entity's current absorption (golden) health
  • <skill.var.damage-type> now falls back to the damage's tags (comma-joined) instead of the literal SKILL when no element is set; added <skill.var.damage-tags> for the raw tag list
  • Added slot.item, returning the item in an entity's equipment/inventory slot as a drillable item value supporting item meta-keywords

Items

  • BAG-type items now default their stack size to 1 (still overridable via Options.StackSize)

API

  • Added MythicLoadedEvent, fired once the plugin has fully finished loading
  • Added MythicCinematicStartEvent/MythicCinematicEndEvent (see Cinematics System above)
  • MythicTriggerEvent now implements Cancellable
  • Added a LootBag#give overload taking a BiFunction so addons can override how drop items are added to a player's inventory
  • Added a LootBag#give overload taking a BiConsumer for custom handling of items that don't fit in the player's inventory
  • Fixed addon-registered placeholders being dropped when MythicPlaceholdersLoadEvent fired before the addon subscribed to it (#2214)
  • Restored the deprecated SkillCondition#evaluateLocation(AbstractLocation) overload for addon compatibility

Compatibility

  • Added support for Minecraft 26.2
  • Improved Folia handling across triggers, spawners, mechanics, projectiles, and particle batching (region-thread dispatch for altitude, DEATH/death-observer, random spawn, spawner ticking, mechanic entity state, projectile onHit, and scheduler usage)
  • Fixed ~onMount/~onDismount throwing NoClassDefFoundError on 1.20.1
  • Fixed EntityKnockbackEvent breaking plugin load on 1.20.4
  • Fixed a snow golem entity-type lookup crash and guarded breeze projectile detection on pre-1.21

Bug Fixes / Other

  • Cached compiled math expressions in placeholders, conditions, and variable math for up to ~20x faster evaluation
  • Reduced per-tick allocations in skill delay placeholders, targeters, and projectile packet dispatch
  • Optimized packet-bullet rotation parsing, entity-teleport packets, AoE condition location resolution, and boss bar range checks
  • Optimized player-movement tracking with a lock-free per-player location holder instead of cloning Location on every move event
  • Reduced target-list copying in hot SkillMetadata clones
  • Replaced chunk iteration with a direct AABB spatial query in getEntitiesNearLocation, with NaN/Infinite-coordinate guards and finite world-height bounds
  • Made VariableRegistry/PlayerVariableRegistry lock-free and stopped firing MythicPlayerVariableSetEvent twice per bulk-write entry
  • Reduced per-tick allocations across projectile, packet-render, and damage-trigger hot paths
  • Kept VariableRegistry's backing map a ConcurrentHashMap after Gson deserialization instead of rebuilding it as Gson's LinkedTreeMap
  • Shared a single WorldUnloadEvent listener across all active projectiles instead of one per projectile
  • Skipped allocating a knockback-resistance AttributeModifier/UUID per hit in doDamage unless actually needed
  • Optimized the packet-entity renderer's per-tick player iteration and switched packet yaw/pitch to primitive storage
  • Replaced Stream pipelines with plain loops in ILocationSelector filtering
  • Removed throwaway list allocations in PacketEntityRenderer.sendPacket
  • Cut projectile per-tick packet dispatch overhead and cached entity UUIDs during target evaluation
  • Cut roughly a second off every /mm reload by caching jar annotation scans and skipping a per-item exception when no shield color is set
  • Sped up /mm reload further by narrowing config lookup-cache invalidation to just the affected section
  • Reduced per-tick target-evaluation overhead in projectile hit detection
  • Reduced redundant block-state lookups during projectile collision checks
  • Reduced allocations in projectile target buffering
  • Optimized async combat skill dispatch (~1.9x faster)
  • Optimized CylinderShape/SquareShape targeters, altitude condition, and stun mechanic location lookups; onDamaged aura matching no longer allocates a HashMap per hit
  • Optimized pin targeter random picks and hoisted repeated lookups out of timer-skill and mob-clock loops
  • Fixed O(n²) slowdown in targetinterval batching and RandomRingPointTargeter picks as target counts grow
  • Fixed particletornado's cloud particle sending invalid data and spamming "particle data is void" in console
  • Fixed a NullPointerException in skill cooldown checks and mechanic dispatch when a caster's entity was null
  • Fixed player-dropped items ignoring DropGlowColor/DropBeamColor (#2264)
  • Fixed chainmissile never bouncing to new targets (#2287)
  • Fixed PreventSnowFormation not applying during a snow golem's death animation (#2149)
  • Fixed self-target damage mechanics being blocked when PvP is disabled (#2285)
  • Fixed hitbox/hitboxissubhitbox conditions not seeing the ModelEngine sub-hitbox bone struck by a projectile
  • Fixed the command-skill executor never initializing when only MythicRPG was installed
  • Fixed blockmask masking only occluding blocks by default instead of all non-air blocks (#2277)
  • Fixed dark hologram text and a concurrency NullPointerException in hologram rendering (#2199)
  • Guarded rayTraceBlock against infinite/NaN or extremely distant coordinates that could hang the server
  • Fixed the attack_cooldown placeholder and ~onAttack trigger reading the post-reset cooldown value on 26.1+ (#2257)
  • Fixed a memory leak where projectile bookkeeping used entity metadata instead of persistent data, leaking until server restart
  • Fixed ~onHear never reacting to projectile sounds (arrows, thrown potions, etc.)
  • Fixed bulletKillable projectiles terminating on their first hit instead of only on death or despawn (#2272)
  • Fixed the stat aura component losing its applied modifier on /mm reload (#2271)
  • Fixed ARROW projectile bullets dealing shield-bypassing vanilla arrow damage alongside the intended skill damage (#2274)
  • Fixed mobs keeping vanilla random equipment when their chunk unloaded before the deferred equip pass ran
  • Fixed recoil's pitch/yaw options not resolving placeholders/math expressions per cast (#2265)
  • Fixed disabled stats not loading their display/formatting config, which NPE'd Crucible item lore generation
  • Fixed ~onBowHit not firing for Crucible's simulated projectile skill damage (#2261)
  • Fixed the damage mechanic's re-entrancy guard dropping onAttack-triggered damage even with triggerSkills/ts=true set (#2269)
  • Fixed attribute-mapped stat changes (e.g. from async aura ticks) applying off the entity's owning thread and corrupting the attribute tracker (#2270)
  • Fixed hugSurface/heightFromSurface on the totem mechanic not actually positioning the model (#2267)
  • Fixed orbital bullet=DISPLAY rendering off its circular path due to a forward offset (#2237)
  • Fixed the DamageModifier stat's TriggerStats/ParentStats reading from the wrong stat's config scope (#2213)
  • Fixed dialog element/button conditions being evaluated against the caster instead of the viewer, buttons ignoring their own conditions/cooldown, and dialogs not reloading on /mm reload (#2251)
  • Fixed the sound mechanic's volume not supporting placeholders
  • Fixed the metaskill mechanic evaluating its target skill's Conditions twice per cast (#2246)
  • Fixed random-spawn maxHeight not being bounded to the world's build height limit (#2260)
  • Fixed a Model Engine model being applied twice on spawn when Model.Id was configured
  • Fixed duration fields (e.g. Cooldown, mechanic durations) losing the ability to be given as a random range after duration units were added
  • Fixed the speak{} mechanic's speech-bubble hologram rendering dark
  • Fixed tracklocation and other location-targeted mechanics silently doing nothing when cast with an entity targeter
  • Fixed the onDeath aura component not firing on player deaths
  • Fixed the onDeath aura component never firing when cancelOnDeath was enabled
  • Fixed spawner warmup not arming when the async despawn clock finalized a kill as a despawn before the death event arrived (#2204)
  • Guarded entity teleports against unloaded/null worlds, including the teleport mechanic and a projectile's end skill on world unload
  • Fixed recoil/fear forced rotation kicking players with "Invalid move player packet received"
  • Fixed the charged/creeperCharged condition failing to load due to a constructor mismatch
  • Fixed generated tooltip_style component keys not resolving under the MythicCrucible pack namespace
  • Fixed damage modifiers that reduce entity vs entity damage to exactly 0 not applying unless CancelDamageIfZero was also enabled
  • Fixed a race between the async mob clock and EntityDeathEvent that could skip the DEATH trigger or miss a killer's PreventMobKillDrops on quick deaths
  • Fixed shoot mechanic's ITEM and BLOCK projectile types not working
  • Fixed blockwave throwing LIGHT blocks

5.12.1

General

  • Particle effects are now queued and bundled to greatly reduce packet usage, and particle effects will not respect the client's particle settings (configurable)
  • Added support for using duration units in skill cooldowns and most mechanics with durations and intervals by adding a suffix (e.g. 5s = 5 seconds, 20t = 20 ticks)
Cooldown: 5t
Cooldown: 1m

- potion{type=POISON;duration=10s}

Stats

NEW: MUTATOR Stats

  • Added the MUTATOR custom stat type for applying a stat value to other stats through components, formulas, and operations
AGILITY:
  Enabled: false
  Type: MUTATOR
  AlwaysActive: true
  Display: 'Agility'
  PlayerBaseValue: 0
  Components:
    - Stat: BONUS_DAMAGE
      Formula: 'v / 5'
      Operation: ADDITIVE
    - Stat: CRITICAL_STRIKE_CHANCE
      Formula: 'v / 1000'
      Operation: ADDITIVE

Command Skills

Command Parent

  • Added Command.Parent to command skills to allow for creation of sub-commands.
ParentCommandSkill:
  Command:
    Id: parent

ChildCommandSkill:
  Command:
    Id: child
    Parent: ParentCommandSkill

Mechanics

OnAttack Aura Component

  • Added trigger condition support to the onattack aura component
- aura{auraname=Counter;duration=200;components=[ - onattack{onattack=CounterSkill} ]} @self ?targetwithin{d=5}

ToggleSitting

  • Added the togglesitting mechanic for controlling pet sitting
- togglesitting{state=toggle} @target
- sit{state=true} @target

Conditions

NEW: canBeHitByProjectile

  • Added the canBeHitByProjectile condition
  • Custom MEG hitboxes are skipped through the API
- canBeHitByProjectile
- hitByProjectile

NEW: petsitting

  • Added the petsitting condition for checking whether a pet is sitting
- petsitting
- petsit

Triggers

NEW: onEffectRemove

  • Added the onEffectRemove trigger
Skills:
  - skill{s=EffectRemovedSkill} ~onEffectRemove

Items

CustomModelData Component

  • Added support for typed CustomModelData component values
  • Supports float, string, boolean, and color data
  • Supports scalar, list, and map-list formats
  • Requires Paper 1.21.4+
CustomModelData:
  - float/1,2,3
  - string/example_model
  - boolean/true
  - color/#ff8800

API

  • Exposed stat registration methods for addons
  • Added MythicStatsRegistrationEvent
  • Added PlaceholderDuration
  • Added experimental API for packet item lore

Bug Fixes / Other

  • incombat can now check players tracked by the combat-tag tracker
  • Improved Folia handling for RandomSpawnGenerator
  • Improved Folia handling for SetTextDisplayMechanic entity writes
  • Improved caster scheduling for virtual casters
  • Optimized MythicMenu rendering by skipping per-render placeholder resolution for static placeholders
  • Optimized text pixel length calculation
  • Cached regex metakeyword patterns
  • Optimized boss bar updates
  • Optimized single-token placeholder parsing
  • Optimized random location target selection
  • Optimized final damage calculation
  • Optimized spawner clock ticking
  • Optimized target condition evaluation allocations
  • Optimized random generation in ChanceCondition
  • Optimized drop hot paths
  • Optimized EntitiesNearbyTargeter
  • Optimized PlaceholderInt parsing
  • Optimized IEntitySelector player filtering
  • Optimized variable string joins
  • Optimized MapVariable, MapSerializer, and AuraRegistry loops
  • Fixed blockwave to use the existing BlockState when no material is specified
  • Fixed setDisplayEntityItem nt supporting block display entities
  • Fixed some issues with default stat base values in stats.yml
  • Fixed sortNum placeholder output for list variables
  • Fixed sortNum placeholder output for set variables
  • Fixed documented defaults not being honored in playersInRadius
  • Fixed MiniMessage tags not parsing in custom kill messages
  • Fixed default flash particles not being colored white
  • Fixed overlapping blockmask mechanics with durations so newer masks keep their duration when older masks expire
  • Fixed RandomSpawner REPLACE recursion on Mythic-initiated spawns
  • Fixed hasitem defaulting amount to the condition variable instead of >0
  • Fixed nameplate brightness
  • Fixed stat executor loading order
  • Fixed parent command handling for command skills
  • Fixed stats.yml extraction timing so addons can register stats early
  • Fixed particlelineequation ignoring eqy and eqz
  • Fixed teleport losing preservepitch and preserveyaw during safe spawn lookup
  • Fixed particlesphere applying yoffset twice
  • Fixed trail particle location key using the source instead of the target
  • Fixed aura{cancelOnDeath=false} persisting through player respawn
  • Fixed MythicMobDeathEvent and drops being missed during async skill clock races
  • Fixed 1.21.1 compatibility issues
  • Fixed inverted BukkitAttribute.values() filtering
  • Fixed onTick auras continuing after expiry
  • Fixed negative-duration aura loops
  • Fixed nested entity targeters in location= slots not applying sort, conditions, or limit
  • Fixed onattack skill variables for damage-amount
  • Fixed onattack skill variables for damage-type
  • Fixed onattack skill variables for damage-cause
  • Fixed MobsNearOrigin throwing an NPE when type is missing
  • Fixed MobsNearOrigin to log a config error when type is missing
  • Fixed pickupitem leaving fancy-drop PDC on picked-up items
  • Fixed giveitem filling decorated pots instead of dropping items beside them
  • Fixed summoning issues
  • Fixed durations returning excessive precision
  • Fixed math formulas returning excessive precision
  • Fixed damage{} not respecting triggerSkills
  • Fixed stun allowing players to teleport upward
  • Fixed stun restoring g= as an aura group option
  • Fixed -1 not giving infinite duration on potions

5.12.0

General

  • Added support for 1.21.11 and 26.1.x (requires Java 25)
  • Added automatic config updating
  • Improved case-insensitive config loading
  • Added new files/ pack directory
  • Added auto-generated .internal pack. This will contain some assets that can be auto-generated by Crucible, along with other helpful internal things that can modified.

Stats System

  • Updated the default stats.yml with better base values
  • Added missing stats to the default stats.yml
  • Added LOOT_BIAS stat for affecting weighted droptables

Mechanics

NEW: Aura Components

  • Rewrote auras to be component-based so a single aura can combine multiple effects
  • Added targetIsCaster=true
  • Added decayStackOnExpire=true
  • Added persistent cancelOnQuit=false
  • Added ChunkLoadAuraComponent
  • Added projectilerebound
- aura{auraname=MultiAura;duration=200;interval=10;targetIsCaster=true;decayStackOnExpire=true;components=[ - onattack{onattack=[ - particles{p=flame;a=50;s=1} @self ]}, - stat{stat=HEALTH;type=ADDITIVE;value=20} ]} @target

NEW: removeTaggedAuras

  • Added removeTaggedAuras for clearing aura instances by tag
- removeTaggedAuras{tags=stun;limit=2} @target

NEW: Charges / CooldownMode

  • Added Charges to skills and metaskills
  • Added CooldownMode to skills and metaskills
Charges: 3
CooldownMode: PARALLEL

NEW: addSkillCharges

  • Added addSkillCharges for restoring charges to tracked skills
- addSkillCharges{skill=Dash;amount=1;order=LATEST;overflow=true} @self

NEW: showDialog

  • Added showDialog for opening custom Paper dialogs
- showDialog{dialog=QuestOffer} @trigger

NEW: closeDialog

  • Added closeDialog for force-closing an active dialog
- closeDialog @trigger

NEW: hide

  • Added hide / hideFromPlayers for hiding the caster from targeted players, with optional persistence
- hide{permanent=true;save=true} @PlayersInRadius{r=30}

NEW: enchantItem

  • Added enchantItem for applying enchantments directly to a target slot
- enchantItem{enchant=SHARPNESS;level=1;slot=HAND} @self

NEW: SetCustomMenuTitle

  • Added SetCustomMenuTitle / setMenuTitle for updating an open custom menu title
- setMenuTitle{title="<gold>Boss Rewards"} @self

Wait

  • Added onTimeoutSkill / ontimeout / ots to wait
- wait{cond=[ - onground ];tt=300;ontimeout=TimeoutSkill}

Sudo

  • Added chained=true to sudo
- sudoskill{chained=true;skill=Example} @EIR{limit=3;radius=10}

Heal

  • Added tags to heal mechanics
- heal{a=10;tags=holy,burst} @self

DropItem

  • Added ForceDynamic to DropItem
- dropitem{item=MyDrop;ForceDynamic=true} @self

Sound

  • Added emitter and seed options to sound mechanics
- sound{s=minecraft:entity.warden.heartbeat;emitter=caster;seed=42} @self

Projectile

  • Added spread to volley
  • Added bulletBrightness to projectile mechanics
  • Added bulletALOD=false to projectile mechanics
- volley{spread=4} @target

Throw

  • Added placeholder support and triggers=false to throw
- throw{v="<caster.var.throw_speed>";vy=1.5;triggers=false} @target

Custom Menus

  • Added Shared: false to custom menus
  • Added UIElements to custom menus
CustomMenu:
  Shared: false
  UIElements:
  - myc_menu_hats{char=\ue832;path=ui/cosmetics_gui_hat;height=256;ascent=14}

Conditions

NEW: input

  • Added input for checking live player movement keys
- input{key=forward,sprint}

NEW: skillIsRecharging

  • Added skillIsRecharging for checking skill recharge state
- skillIsRecharging{skill=Dash}

NEW: statDamageModifier

  • Added statDamageModifier for stat skill checks
- statDamageModifier{m=1.01} castInstead PositiveEffectSkill

NEW: inLiquid

  • Added inLiquid, including waterlogged block support
- inLiquid

NEW: isFrozen

  • Added isFrozen
  • Added freezing / isfreezing aliases
- isFrozen

NEW: uuid

  • Added uuid for comparing an entity against a specific UUID value
- uuid{u="<trigger.uuid>"}

NEW: goatHorn

  • Added goatHorn for checking whether a goat still has a horn
- goatHorn

NEW: isSheared

  • Added isSheared for checking sheep shearing state
- isSheared

NEW: trim

  • Added trim / armorTrim for checking armor trim pattern and material
- trim{slot=CHEST;pattern=sentry;material=gold}

NEW: blockAbove

  • Added blockAbove for checking material at an offset above the evaluated location
- blockAbove{m=DIRT;y=2}

NEW: isTarget

  • Added isTarget / target for checking whether the evaluated entity is the caster mob’s current target
- isTarget

inClaim

  • Extended inClaim support to PlotSquared
  • Extended inClaim support to Residence
- inClaim

Composite Conditions

  • Composite conditions may now contain spaces more reliably
- ((day false || raining true) && onBlock{material=LIME_CONCRETE}) true

Item Filters

  • Added placeholder support to hasitem
  • Added variable support to hasitem
  • Added placeholder support to haspermission
  • Added variable support to haspermission
  • Added runtime item filter resolution to item-related conditions and mechanics
- hasitem{i="<caster.var.required_item>"}

Targeters

useBoundingBox

  • Added useBoundingBox / bb=true to shaped entity targeters and cone bounding-box checks for @EIC
@EIC{a=45;r=12;bb=true}

sort

  • Added sort=OLDEST and sort=NEWEST for entity target filters
@EIR{r=20;sort=OLDEST}

EntitiesInLine

  • Added placeholder + math support to EntitiesInLine radius
@EntitiesInLine{r="<skill.var.beam_radius>"}

RandomLocations

  • Added placeholder + math support to RandomLocations targeters
@RandomLocations{a=5;r="<caster.var.scatter_radius>"}

Mobs

NEW: 1.21.11 Entity Types

  • Added support for CAMEL_HUSK
  • Added support for NAUTILUS
  • Added support for PARCHED
  • Added support for ZOMBIE_NAUTLIS
Type: CAMEL_HUSK

NEW: Axolotl Variant

  • Added Variant support for Axolotls
Variant: blue

ThreatTable

  • Added ThreatTable.DropUnreachableSeconds
ThreatTable.DropUnreachableSeconds: 10

Saddles

  • Added newer mob support to saddle logic
  • Improved isSaddled support for newer mobs
- isSaddled

Triggers

NEW: Input Triggers

  • Added ~onInputForward
  • Added ~onInputBackward
  • Added ~onInputLeft
  • Added ~onInputRight
  • Added ~onInputJump
  • Added ~onInputSneak
  • Added ~onInputSprint
- message{m="Jump detected"} ~onInputJump

NEW: onHealed

  • Added ~onHealed
- skill{s=AfterHeal} ~onHealed

NEW: onSheared

  • Added ~onSheared
- skill{s=AfterShear} ~onSheared

NEW: onEffectApply

  • Added ~onEffectApply
- skill{s=OnPotionGain} ~onEffectApply

NEW: onThrownByMechanic

  • Added ~onThrownByMechanic, with ~onThrown as an alias
- skill{s=AfterThrow} ~onThrown

NEW: onMount

  • Enabled ~onMount
- skill{s=MountedSkill} ~onMount

Placeholders

Placeholder Engine

  • Refactored placeholders onto a new parser/segment pipeline
  • Added wildcard registration
  • Added generic return types
  • Added MythicLineConfig support for meta keywords
  • Improved static placeholder parsing
  • Added {default=...} support to variable placeholders

NEW: Input Placeholder

  • Added live input placeholders for player movement state
<trigger.input.jump>

NEW: Aura Stacks Placeholder

  • Added <caster.aura.ID.stacks>
<caster.aura.FireShield.stacks>

NEW: <skill.power>

  • Added <skill.power>
- message{m="Power: <skill.power>"} @self

NEW: Skill Charge Placeholders

  • Added <[scope].skill.SkillName.charges>
  • Added <[scope].skill.SkillName.maxcharges>
  • Added <[scope].skill.SkillName.overflowcharges>
- message{m="Dash: <caster.skill.Dash.charges>/<caster.skill.Dash.maxcharges> (+<caster.skill.Dash.overflowcharges>)"} @self

NEW: damage-amount-post

  • Added damage-amount-post
  • Added <skill.var.damage-amount-post>
- message{m="Final damage: <skill.var.damage-amount-post>"} @self

NEW: Dialog Placeholders

  • Added dialog input placeholders
- message{m="Class: <dialog.classChoice>"} @trigger

NEW: itemcount

  • Added itemcount for counting vanilla or Mythic items in a player's inventory
- message{m="Diamonds: <caster.itemcount.DIAMOND>"} @self

NEW: <char.*>

  • Added <char.*> for deferred Unicode character insertion
<char.007B>

NEW: Random UUID

  • Added <random.uuid>
- message{m="<random.uuid>"} @self

Misc

  • Added sortByValue map meta keyword
  • Added round math support
  • Renamed <item.level> to <item.droplevel>

Items

General

  • Added Options.Glint: false support

New Component Support

  • Added AttackRange
  • Added BlocksAttacks
  • Added Weapon
  • Added KineticWeapon
  • Added PiercingWeapon
  • Added JukeboxPlayable
  • Added NoteBlockSound
  • Added UseRemainder
  • Added BreakSound
  • Added Instrument
  • Added Enchantability
  • Added Repairable
  • Added OminousBottleAmplifier
  • Added PotDecorations
  • Added banner_patterns
  • Added LodestoneTracker
AnItem:
  Material: DIAMOND
  AttackRange: 3.5
  Weapon:
    ItemDamagePerAttack: 2
    DisableBlockingForSeconds: 0.5
  JukeboxPlayable: "minecraft:thirteen"
  UseRemainder: ADifferentItem
  Repairable:
  - STICK
  PotDecorations:
    Back: brick
    Left: arms_up_pottery_sherd
    Right: skull_pottery_sherd
    Front: prize_pottery_sherd

API

  • Added API for registering custom command functions
  • Added API for custom equippables
  • Added MythicPlayerQuitEvent
  • Added MythicAuraStartEvent
  • Added MythicAuraStopEvent
  • Added MythicMobPreSpawnConfigureEvent
  • Added MythicTargetEvent
  • Added final attack meta damage interception API
  • Exposed aura remaining ticks
  • Added menu hooks
  • Added icon hooks
  • Added color-picker hooks

Compatibility

  • Greatly improved Folia compatibility
  • Added inClaim support for PlotSquared
  • Added inClaim support for Residence

Bug Fixes & Optimizations

  • Refactored the placeholder engine
  • Improved static placeholder handling
  • Reduced hot-path allocations in projectiles
  • Reduced hot-path allocations in targeters
  • Reduced hot-path allocations in drops
  • Reduced hot-path allocations in cooldowns
  • Reduced hot-path allocations in clustering
  • Reduced hot-path allocations in registry lookups
  • Improved menu reload performance
  • Improved custom-name component caching
  • Optimized case-insensitive config handling
  • Fixed persistent aura save/rejoin issues
  • Fixed aura termination races
  • Fixed removeAura stat leaks
  • Fixed onDamaged aura regressions
  • Fixed random placeholder output regressions
  • Fixed MiniMessage placeholder regressions
  • Fixed bar placeholder regressions
  • Fixed stance placeholder regressions
  • Fixed threat-table placeholder regressions
  • Fixed cached stat placeholder regressions
  • Fixed static placeholder regressions
  • Fixed non-placeholder < parsing issues
  • Fixed recursive placeholder cache races
  • Fixed placeholder concurrency issues
  • Fixed negative projectile gravity
  • Fixed projectile hits against owner sub-hitboxes
  • Fixed text display brightness issues
  • Fixed zero-velocity display bullets
  • Fixed projectile bounce axis bugs
  • Fixed projectile NPEs
  • Fixed doEndSkillOnHit=false handling
  • Fixed random spawning logic
  • Fixed spawner stale data
  • Fixed per-player random spawn cooldowns
  • Fixed double spawns
  • Fixed natural despawn unregistering
  • Fixed persistent mob restore on chunk load
  • Fixed level scaling issues
  • Fixed BaseValue stat issues
  • Fixed stat rounding issues
  • Fixed heal percent issues
  • Fixed additive damage modifier behavior
  • Fixed modDamage{action=ADD} applying damage as a multiplier
  • Fixed item attribute doubling and reload resets
  • Fixed OnCooldownSkill redirects ignoring the target skill cooldown
  • Fixed menu generation issues
  • Fixed conditional menu issues
  • Fixed menu reload performance issues
  • Fixed hidden item handling
  • Fixed FAWE schematic lookup outside Mythic folders
  • Fixed EntitiesInCone targeting when looking up or down
  • Fixed haspotion condition issues
  • Fixed inLiquid condition issues
  • Fixed summon owner/parent flags
  • Fixed runaigoal priorities and stacking
  • Fixed hologram hex colors without Nexo
  • Fixed additional 26.1.x follow-up issues
  • Fixed Folia chunk races
  • Fixed Folia command races
  • Fixed Folia potion effect threading issues
  • Fixed Folia visibility threading issues
  • Fixed Folia heal event threading issues
  • Fixed Folia totem handling
  • Fixed Folia trading handling

5.11.0

General

  • Added support for 1.21.10
  • Dropped support for 1.19.X, 1.20.2, 1.20.6, and 1.21.3
  • Kept support for 1.20.1, 1.20.4, 1.21.1, and 1.21.4+
  • Rewrote /mm i import and improved import of NBT, display, and MiniMessage lore
  • Moved most custom menu logic into the base plugin; menus now require Premium or RPG
  • Moved custom command handling from RPG into Premium

Optimiations

  • Added ShareComponents option to deduplicate identical mechanics, targeters, and conditions
  • Optimized placeholder and component memory usage via flyweighting

Compatibility

  • Improved model application timing to further reduce flickering
  • Updated Lands support to the latest version
  • Updated LibsDisguises integration, disguising mobs before spawning to reduce flickering
  • Removed mcstats.org reporting
  • Disabled ShopGUIPlus support temporarily

Mechanics

NEW: fear

  • Added fear aura mechanic causing targets (including players) to run around uncontrollably

NEW: TRAIL particle

  • Added TRAIL particle with color, duration, and source=@targeter

NEW: forEachPin

  • Added forEachPin{pin=X;skill=Y} for executing a mechanic once per pin location
  • The active pin location is exposed via @Pin

NEW: VariableMove

  • Added VariableMove mechanic to move variables across names/registries, with optional createnew

NEW: determineCondition

  • Added determineCondition mechanic for dynamic condition evaluation in metaskills

Velocity

  • velocity mechanic no longer alters components that are not specified
  • Recoil movement smoothed further

Misc

  • Stun mechanic now defaults to type #stun
  • blockwave now uses the target block’s material when unspecified
  • Added inheritExpirationTime to VariableMove
  • Improved projectile hit detection against sub-hitboxes

Conditions

NEW: MetaskillCondition

  • Added MetaskillCondition to let metaskills determine condition results

NEW: isSibling

  • Added isSibling condition to check sibling mob relationships

Targets Condition

  • targets condition may now specify a targeter instead of relying on inherited targets

Enhancements

  • Placeholder support added to TargetWithin and TargetNotWithin
  • Metaskill conditions may now parse skill parameters
  • Added error catching to BlockType

Targeters

NEW: @EscapeLocation

  • Added targeter that finds a nearby Enderman-like escape location

NEW: @EntitiesNearPin

  • Added targeter for entities around a pin location

Location Targeters

  • Added surface and surfaceTolerance

Mobs

NEW: Copper Golem (1.21.10)

  • Options.WeatheringState
  • Options.Waxed

NEW: Mannequin (1.21.10)

  • MannequinOptions.Immovable
  • MannequinOptions.Description
  • MannequinOptions.Pose
  • MannequinOptions.Skin
  • MannequinOptions.Cape
  • MannequinOptions.Elytra
  • MannequinOptions.Model: CLASSIC/SLIM
  • MannequinOptions.Player

Other Mob Additions

  • Added Options.Variant for cow, chicken, and pig
  • Added Options.RandomizeProperties to disable vanilla random mob variation

Triggers

NEW: onDismounted

  • Added trigger for when an entity is dismounted

Placeholders

Numeric Placeholder Improvements

  • Added Long variable type
  • Added .round and .precision.X meta keywords

Static Placeholder Optimization

  • Added static placeholder pre-parsing
  • Improved runtime performance and post-reload caching

Misc

  • Added experimental <centertext> placeholder

Items

  • Added ItemVariable drop type for item-handling mechanics
  • Improved /mm i import handling of NBT and MiniMessage content
  • Added Options.SkinID for head items
  • Changed item version format to major.minor.patch (up to 255.255.255)
  • Added drop: prefix for item variables

API

  • Added RandomDouble bias (API-only)
  • Added icon template API for custom menus
  • Expanded templated menu icon functionality
  • Added more placeholder/variable APIs and RandomDouble bias configuration
  • Try to append Mythic Type before spawning so that it's available in CreateSpawnEvent

Bug Fixes & Optimizations

  • Added placeholder support to projectile gravity
  • Added placeholder support to bonus damage fields
  • Added bonusDamageModifiers/bdm to damage mechanics
  • Improved BlockMatcher error handling
  • Fixed mob spawn reason incorrectly being PATROL
  • Fixed vanilla overrides overwriting mob options on chunk reload
  • Fixed owner and parent AI goals on newer versions
  • Fixed ~onSpawnOrLoad not firing when no ~onSpawn triggers existed
  • Fixed multiple particle issues on newer versions
  • Fixed projectile inaccuracy at extreme coordinates
  • Fixed projectile sub-hitbox detection
  • Fixed aura attachments not being removed when expired
  • Fixed aura errors and concurrency issues on Folia
  • Fixed numerous Folia regressions (projectiles, auras, delays, summoning)
  • Fixed item attribute stacking issues
  • Fixed player heads on 1.21.10
  • Fixed invalid Base64 skull textures by auto-padding
  • Fixed NPEs in meta skills, drop-table-less mobs, and onKnockbackEntity
  • Fixed various BlockMatcher issues and improved error logging
  • Fixed import command failing on non-Paper servers
  • Fixed config loading issues caused by missing newline
  • Fixed placeholder spam and stat placeholder timing issues
  • Fixed recoil mechanic issues
  • Fixed debug spam from meleeattack goal
  • Fixed damage breaking in prior build
  • Fixed look mechanic on no-AI entities
  • Fixed skull-texture crashes in mob types
  • Fixed plugin not loading on 1.21.10
  • General refactoring and internal cleanup across systems

5.10.0 (Release)

General

  • Added 1.21.7 and 1.21.8 support
  • Added HAPPY_GHAST entity type
  • Performance: faster second-pass processing and improved caching for entity lookups and item parsing on reload
  • Default config: added several missing options

API & Events

  • New: MythicReloadCompleteEvent
  • New (core): ReloadEvent
  • New: MythicPlayerVariableSetEvent, MythicPlayerVariableRemoveEvent
  • MythicHealMechanicEvent now also calls EntityRegainHealthEvent
  • Added meta access to DamageMetadata
  • Added old meta access in SkillTriggerMetadata
  • Added API groundwork for RPG cross-compatibility

Placeholders

  • Added <target.armor>, <&lt>, <&gt>, <^dot>, <^dot2>
  • Added PlaceholderAngle
  • Placeholders now supported in more places (e.g., item browser parsing)
  • Fixed generic int, float, and double placeholders not parsing variables
  • Fixed PlaceholderVector not working under complex cases
  • Fixed placeholders with Item NBT (string/int/float/double) not resolving

Variables

  • New variable types: Set, List, Map, Boolean, Vector, Time, Item, MetaSkill
  • Meta Variable Placeholders: <[scope].var.[name].keyword> with keyword chaining
  • Variable.ofType updated; PolymorphicPlaceholder added
  • Mob Variables can set all registered variable types
  • Internals: relocated Default Variable handler for Crucible usage

Mechanics

  • New: ForEach and ForEachValue
  • New: ClearTarget mechanic
  • Updated: variableadd / variablesubtract to support new variable types
  • Projectile family:
    • Added many missing projectile options
    • Added startYOffset, startForwardOffset, startSideOffset to shoot and volley
  • Orbital family:
    • Added placeholder support to ParticleOrbital radius
    • Added immuneDelay; fixed multi-hit immunity
    • Removed hs alias for hugSurface
    • Improved targeting logic with orbitals
  • Aura: sync=true now forces sync scheduler
  • Look mechanic: minor behavioral tweaks
  • Summon: fixed useTargetYaw/useTargetPitch
  • Stun: fixed freezeFacing inversion; fixed on newer versions

Teleport (Paper-only)

  • Added options to all teleport mechanics (Paper):
    • Teleport cause
    • Vehicle retention
    • Support for Paper TeleportFlags
  • Fixes: addressed regressions that broke teleport mechanics; additional polish to new options

Targeters & Triggers

  • Targeters:
    • Added shape to @EntitiesInRadius and @EntitiesNearOrigin
    • Added universal upoffset location attribute
  • Triggers:
    • Shulkers now support onShoot and onBowHit
    • Fixed onDeath for falling block mobs

Conditions

  • New: VariableContains
  • New: projectileHasEnded
  • New: isSkill{name=...}
  • mythicMobType condition: exactmatch=false option
  • Added xdiff and zdiff conditions
  • Fixed health conditional parsing triggers

Items & Equipment

  • Item flags: allow full flags (e.g., HIDE_ATTRIBUTES) in Hide field
  • Compatibility: drop unsupported HIDE_POTION_EFFECTS on > 1.20.5
  • Item systems:
    • Faster item cache on reload (also parses placeholders/variables)
    • Fixed tool rules (closes #2027)
    • Fixed cases where item mechanics could fail
    • Attempted fix for vanillaonly=true in ItemMatcher

Mobs & Spawning

  • Options:
    • Options.Aware: false
    • Options.PreventKnockback
    • Hidden: true (prevents mobs appearing in lists) and fixed inheritance making it useless
  • Datapacks: proper spawn location for mobs spawned by datapacks

Holograms & Displays

  • Holograms: fixed multiple regressions in previous builds
  • Text display bullets:
    • Added bulletRotation
    • Fixed rotation code on 1.20_R1

Compatibility & Misc

Bug Fixes & Other

  • Added placeholder support to summon radius attributes
  • Fixed NPEs: startup (#2029), MythicConfig, ForEach, Summon, vector with DisplayItem totems, target setting
  • Fixed recoil mechanic on 1.21.4+
  • Fixed errors when other plugins call certain methods before load
  • Fixed auras IllegalStateException introduced in a dev build
  • Fixed level modifier errors (rare cases)
  • Fixed Log mechanic message parsing
  • Fixed variableequals warnings when target variable absent
  • Fixed onShoot aura not setting <skill.var.bow-tension>
  • Fixed various missile verticalOffset issues
  • Fixed immutable list errors with glow on 1.21.8
  • Fixed setOwner/removeOwner for all tameable types

Older Changelogs

Updated Oct 28, 2026