4.7.0 [Dev Builds]

Major Features

  • Support for 1.14.2

Better MetaSkills

MetaSkills can now in many places be put in-line instead of having to reference another skill. This means you will no longer have to make multiple small skills in order to use certain complex meta-skills, such as projectiles.

This is done by creating a new list of mechanics surrounded by square brackets []s instead of putting a skill name. You can do this to nest skills pretty much infinitely. Each new list of skills should be properly indented to make sure YAML reads them correctly.

Skills:
- projectile{
      interval=1; velocity=30; bulletType=BLOCK; material=MAGMA_BLOCK; tyo=0.5; g=1; bulletSpin=-40; hnp=true; stopatentity=false; duration=100;
      onHit=[
          - damage{amount=50}
          - ignite{ticks=20}
      ];
      onTick=[
          - particles{p=flame;a=20;hs=0.5;vs=0.5}
      ];
      onEnd=[
          - particles{p=largeexplode;a=50;speed=1;hs=0.05;vs=0.05}
          - effect:sound{s=entity.dragon_fireball.explode;p=0.6;v=2}
          - damage{amount=30} @ENO{r=5}
      ];
  } @targetlocation

Math/Placeholders

This feature is Premium-only.

You can now use math and numeric placeholders in lots of places! The plan is to expand this to be usable anywhere, but it's a big undertaking.

In order to use math where able, you can simply put placeholders and equations between '' where you'd normally put a number value.

For example:

Skills:
- damage{amount=1}
- damage{amount='5 + 5'}
- damage{amount='<caster.level> * 10'}

and so on

The following mechanics can use math so far:

  • damage
  • damagePercent
  • heal
  • healPercent
  • setLevel

Math is also usable in drop amounts:

Drops:
- gold_nugget '1 + (0.2 * <caster.level>)'

Projectile Bullets

Projectile mechanics can now specify a bullet type that will represent the projectile. No longer are projectiles just limited to particles!

These work with the projectile, missile, and orbital mechanics.

Bullet types available are:

  • ARROW - projectile{bulletType=ARROW;…}
  • BLOCK - projectile{bulletType=BLOCK;material=STONE;…}
  • ITEM - projectile{bulletType=ITEM;material=STONE;…}
  • MOB - projectile{bulletType=MOB;mob=SkeletonKing;…}

Yes, that's right, you can even shoot projectiles made up of other Mythic mobs! Mobs shot with the projectile skill cannot be interacted with, but will still use all their skills…

You can also use the new bulletSpin=# option to give your bullets some spin.

Mobs

Added support for all 1.14 mob types.

Skills

4.6.0 [Premium]

General

  • Added config option RandomSpawning.DisableVanillaSpawns
  • Skills can now be called with a new shorthand syntax skill:name
Skills:
- skill:someskill ~onAttack

Major Features

Better Saving

Mobs with Despawn: false will now save their information far more reliably, and now remember everything about themselves between restarts such as their owner, stance, etc.

Variables System

MythicMobs now includes many new mechanics and conditions for dealing with variables, with options for temporary, non-saving, or permanent variables that can be placed on mobs or players. See the variables page for more information.

Placeholders

The Placeholders (formerly called variables for some reason) system has been totally redone and is now much faster, in addition to having an assortment of new placeholders.

This refers to the system of having <> placeholders in any configured strings such as <caster.name>

This system now integrates with PlaceholderAPI, and you can use %placeholderapi% placeholders anywhere that you can use MM placeholders

Placeholders should now usable in any mechanics and conditions that allow strings.

Some of the new Placeholders include:

  • <caster.var.X> - gets the value of the variable X on the current caster
  • <target.var.X> - gets the value of the variable X on the current target
  • <trigger.var.X> - gets the value of the variable X on the current trigger
  • <skill.var.X> - gets the value of the variable X on the current skill tree
  • <random.#to#> - a random number between # and #

Variable placeholders can have a |default appended in-case the variable you're looking for isn't set.

<target.var.something|default>

In-Line Conditions

You can now use basic conditions within mechanics using the new ? “if” operator. These conditions only run as regular conditions (targeting the caster), can not have condition actions, and they always check if the condition is true.

For example:

Skills:
- message{m="hey i'm on a gold block!"} @trigger ?onBlock{t=GOLD_BLOCK} ~onInteract

Your mechanic lines can have as many of these as you want in it, multiples do work.

Mobs

  • Added Options.PreventSunburn: true for burnable mobs

Mechanics

NEW: BreakBlock

Breaks the block at the targeted location

Skills:
- breakblock @targetlocation

NEW: onAttack

A special Aura mechanic that adds a temporary onAttack skill to the target. Can also be used to modify damage done by the attack.

Skills:
- onAttack{auraName=fiery_strikes;onHit=FireStrike;duration=200;charges=5;multiplier=2} @self

In this example, the caster's next 5 physical hits within 10 seconds would trigger the FireStrike skill targeting whatever was hit and also deal 200% damage. However, if FireStrike's conditions failed, it would deal regular damage as the multiplier would not trigger either.

onAttack has the following options:

  • All options available to Auras
  • onHit=[skill] - A skill to execute while the aura is active
  • cancelEvent=true - Whether to cancel the event and do no base damage
  • multiplier=# - An optional multiplier on the original hit's damage
  • add=# - An optional static increase to the original hit's damage

NEW: onDamaged

A special Aura mechanic that adds a temporary onDamaged skill to the target. Can also be used to modify damage done by the attack.

Skills:
- onDamaged{auraName=fire_shield;onHit=FireShield;duration=200;charges=5;multiplier=0.5} @self

In this example, the caster's next 5 hits taken in 10 seconds would trigger the FireShield skill targeting whatever hit them and also deal 50% damage. However, if FireShield's conditions failed, it would deal regular damage as the multiplier would not trigger either.

onDamaged has the following options:

  • All options available to Auras
  • onHit=[skill] - A skill to execute while the aura is active
  • cancelEvent=true - Whether to cancel the event and damage taken
  • multiplier=# - An optional multiplier on the original hit's damage
  • sub=# - An optional static decrease (or increase if negative) to the original hit's damage

NEW: RemoveOwner

Removes the target mob's owner.

NEW: SendResourcePack

Forces the target player to download a resource pack. Player must have resource packs enabled on the server.'

Skills:
- sendResourcePack{url=www.website.com/resourcepack.zip} @target

NEW: SetFaction

Sets or changes the target mob's faction

Skills:
- setFaction{faction=X}

NEW: SetGameMode

Sets the game mode of the targeted player

Skills:
- setGameMode{mode=ADVENTURE} @trigger ~onInteract

NEW: Shield

Shields the target with absorption hearts for a set amount.

Skills:
- shield{amount=10;maxShield=20} @target

NEW: ShieldPercent

Shields the target with absorption hearts for a percentage of their maximum health.

Skills:
- shield{multiplier=0.5;maxShield=2} @target

MaxShield also acts as a multiplier, so the example shield would stack up to 2x the target's max health.

NEW: VariableSet

Sets a variable on the specified scope.

  setVariable{
      variable=[scope].[name];
      value=[the value];
      type=[variable_typpe];
      save=[true/false];
      duration=[optional_duration_in_ticks]
    }
Skills:
- setvariable{var=skill.testVar;value="hello";type=STRING} ~onInteract
- setvariable{var=caster.something;value=1;type=INTEGER;save=true} @self ~onInteract
- setvariable{var=target.temporaryVar;value="im temporary";type=STRING;duration=200} @target ~onAttack

Scope can be set by prefixing scope.name to the variable, or by using the scope=[scope] option.

NEW: VariableAdd

Adds an amount to a variable on the specified scope. Only works with numeric variable types.

Skills:
- variableadd{var=skill.testVar;amount=1} ~onInteract

NEW: VariableSubtract

Subtracts an amount to a variable on the specified scope. Only works with numeric variable types.

Skills:
- variablesubtract{var=skill.testVar;amount=1} ~onInteract

Auras

Added various options to Auras, and fixed many bugs:

Option Description
maxStacks=5 The maximum stacks of an aura that can exist on a target from a particular caster
mergeAll=false Defaults to false, auras from all casters on the same target will be merged and have their stacks increased
mergeSameCaster=true Defaults to true, auras from the same caster on the same target will be merged and have their stacks increased
refreshDuration=true Defaults to true, refreshes the duration on auras when a new stack is applied

Heal and HealPercent

  • Overhealing now applies absorption hearts instead of increasing maximum health.
  • Added MaxOverhealing option for both skills, working exactly like the similar shield mechanics.

PushButton

  • Fixed on 1.13
  • Now works with location targeters

Summon

  • Added summonerIsParent=false, summonerIsOwner=false options

ToggleLever

  • Fixed on 1.13
  • Now works with location targeters

Conditions

NEW: StringEquals

Returns true if the the two strings match. Both values can use placeholders.

Conditions:
- stringEquals{value1="yes";value2="<mob.var.ready|nope>"}
- stringEquals{value1="yes";value2="%essentials_godmode%"}

NEW: VariableEquals

Returns true if the variable matches the value. The value can contain placeholders/other variables/etc.

Conditions:
- variableEquals{variable=[scope].[variablename];value="[a value]"}
- variableEquals{variable=target.somevariable;value="hello"} true
BearGrowl:
  TargetConditions:
  - variableEquals{var=target.heardbear;value="yes"} cancel
  Skills:
  - message{m="You hear a growling noise"}
  - setvariable{var=target.heardbear;value="yes";duration=6000}

NEW: VariableIsSet

Returns true if the variable is set on the target scope.

  1. variableIsSet{variable=[scope].[variablename]}
  2. variableIsSet{variable=target.somevariable} true

NEW: VariableInRange

Returns true if the variable is within the given range. Only works with numeric variables.

  1. variableInRange{variable=[scope].[variablename];range=[range]}
  2. variableInRange{variable=target.somevariable;range⇒10} true

Triggers

NEW: onDespawn

After years of people asking, we've finally figured out how to add a decent ~onDespawn trigger. This should fire whenever the mob stops existing for any reason other than death.

Items

NBT Support

  • You can now specify NBT tags on items in the format:

Item:

  Id: DIAMOND_SWORD
  NBT:
    Base:
      ATag: 20
      SomeOtherTag: something
    GemSlots:
      RedGem: 0
    'Denizen NBT':
      somedenizentag: a_string

This allows cross-over with a lot of other plugins, or just for storing some custom information.

For the more technically-inclined, anything under 'Base' will go under the item's base compound tag, and anything else will go under the corresponding key (or if no sub-items are defined, everything will go under the base tag).

If using with Denizen, all tags you want to use in Denizen must go under 'Denizen NBT' and must be lower-case to work in your Denizen scripts.

Drop Tables

  • Added “nothing” droptype for helping with weighted droptables
  • Finally fixed/implemented BonusLevelItems and BonusLuckItems

BonusLevelItems: [number]/[range]

  • A modifier on the number of items dropped based on the mob's level
  • Can be set as a range, i.e. 0.2to0.5
  • Works like: amount = amount + (mob_level * bonus_level_items)
  • Requires that TotalItems, MinItems, or MaxItems be set on the table to work

BonusLuckItems: [number]/[range]

  • A modifier on the number of items dropped based on the killer's luck stat
  • Can be set as a range, i.e. 0.15to8
  • Works with Luck attribute, Luck-based enchants/curses, and Luck potion effects
  • Works like: amount = amount + (luck * bonus_luck_items)
  • Requires that TotalItems, MinItems, or MaxItems be set on the table to work

RandomSpawns

  • Optimized and improved random spawn point generation
  • Fixed RandomSpawns not obeying MaxMobsPerChunk option

PositionType

  • Added PositionType: [LAND/SEA] option, defaults to LAND
  • Land spawns will only ever spawn on land
  • Sea will only ever spawn in water

Compatibility

PlaceholderAPI

Placeholders from PlaceholderAPI can now be used anywhere MythicMobs placeholders can be used, including in mechanics, conditions, etc.

  1. message{m=“<trigger.name> has God-Mode? %essentials_godmode%”} @trigger ~onDamaged

WorldGuard

  • Readded WorldGuard 6 support for Minecraft 1.8-1.12

API

Added MythicMobDespawnEvent, which should trigger whenever mob stops existing for any reason that isn't death.

Bugs/Other

  • Fixed MPets compatibility
  • Fixed bugs with new particle options
  • Fixed potential dupe glitch with consumeHeldItem mechanic and Artifacts
  • Fixed bugs with item durability not applying on 1.13+
  • Fixed various bugs with item generation
  • Fixed SkillAPI and McMMO xp messages showing even when disabled
  • Fixed RandomSpawns not obeying MaxMobsPerChunk option
  • Fixed targeter sort=RANDOM not returning any targets
  • Fixed <trigger.name> not displaying when trigger is a mob
  • Fixed particle projectiles being stopped by half-slabs
  • Fixed console spam from WorldGuard
  • Fixed some spawner issues involving not tracking despawning mobs correctly
  • Fixed imported bukkit items not loading
  • Fixed cast/castinstead condition actions not obeying cooldowns
  • Fixed many legacy items not converting properly in droptables
  • Fixed damaged mobs not dying with ignoreArmor=true
  • Fixed mobs spawning multiple mounts in some scenarios
  • Fixed mob owner and cooldowns not saving between restarts
  • Fixed threat tables not dropping targets that change worlds

4.5.9 [Latest Free]

  • Backported more bug fixes for item importing

4.5.1-4.5.8

  • Backported support for WorldGuard 6 on 1.8-1.12
  • Backported another bug fix for item importing
  • Fixed bugs with item importing
  • Fixed several bugs with the API
  • Backported more API changes to 4.5.X
  • Backported various bug fixes
  • Backported latest API changes to 4.5.X
  • Fixed several bugs with items
  • Built against latest WorldGuard 7.0 dev builds
  • Fixed several other minor bugs
  • Fixed item names not processing special characters correctly
  • Optimized mob spawning a bit
  • Fixed some formatting in error messages
  • Fixed an incompatibility with Artifacts

4.5.0

General

  • Added support for Minecraft 1.13 and 1.13.1
  • Massive internal update to allow backwards compatibility with pre-1.13 servers
  • Improved error catching with more informative error messages
  • Changed config loader to only load .yml and .txt config files
  • Improved some of the example files

Commands

  • Added -p flag to killall command to kill persistent mobs
  • Added version command
  • Added some new testing commands

Mobs

General

  • Added Adult and Baby options for ageable animals.
  • Age will no longer override on offspring unless configured to.

New: Baby_Drowned

New: Cod

New: Drowned

New: Donkey

  • Now separate from Horse
  • Includes options: Saddled, CarryingChest, Tamed

New: Dolphin

New: Mule

  • Now separate from Horse
  • Includes options: Saddled, CarryingChest, Tamed

New: Phantom

  • Includes Size option to modify phantom size

New: PufferFish

====New: Salmon====.

New: Skeletal_Horse

  • Now separate from Horse
  • Includes options: Saddled, Tamed

New: TropicalFish

  • Includes options: Pattern, PatternColor, and BodyColor

New: Turtle

  • Includes options: Age, Agelock

New: Zombie_Horse

  • Now separate from Horse
  • Includes options: Saddled, Tamed

Armor Stands

  • ArmorStand mobs now use Degrees for poses instead of radians

Falling Block

  • Added option Options.DropsItem: [true/false], defaults to true
  • Added option Options.HurtsEntities: [true/false], defaults to true

Iron Golem

  • Added option Options.PlayerCreated: [true/false], defaults to false

Sheep

  • Added option Options.Sheared: [true/false], defaults to false

Snow Golem

  • Added option Options.Derp: [true/false], defaults to false

Villager

  • Added option Options.HasTrades: [true/false], defaults to false

Skills

Particle Effects

  • Added particles squid_ink, bubble_pop, current_down, bubble_column, nautilus, dolphin
  • Added size option to reddust particle
  • Added material option for item_crack, block_crack particles

Potion

  • Added potion effects CONDUIT_POWER, DOLPHINS_GRACE, SLOW_FALLING

Velocity

  • Add operators “REMOVE” and “DIVIDE”

Conditions

NEW: Cuboid

Checks if a target entity is within the defined cuboid represented by location1 and location2.

  • - cuboid{location1=x,y,z;location2=x,y,z;world=world}

NEW: LastDamageCause

Checks the entity's last damage cause

Conditions:
- lastdamagecause ENTITY_ATTACK

https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/entity/EntityDamageEvent.DamageCause.html

NEW: Pitch

Checks the target entity's pitch

TargetConditions:
- pitch 20to40
- pitch <100

NEW: Wearing

Condition to check the armor slots of living entities for normal or mythic items

TargetConditions:
- wearing{slot=helmet;material=DIAMOND_HELMET} true
- wearing{slot=chestplate;mmitem=AnItem}

Slots are helmet, chestplate, leggings, and boots

NEW: Yaw

Checks the target entity's yaw

TargetConditions:
- yaw >50
- yaw 50to100

Stance

  • Add option strict=true/false (false by default)

Targeters

General

  • Vanilla targeters have been deprecated and removed.

Target Limits

All entity targeters now support target limits. With this you can limit how many things you target, including the order in which they are selected.

This is done with the options:

  • limit=#
  • sort=X

Lets say you want your ability to only target the 2 nearest players within 30 yards. To do this, you'd simply set the limit 2 to and sort by nearest:

  • @PlayersInRadius{r=30;limit=2;sort=NEAREST}

Currently sort can have the following values:

  • NONE (usually sorts by how long the entity has existed)
  • RANDOM
  • NEAREST
  • FURTHEST

Items

  • This update includes a built-in item converter that allows all legacy material names and data values to continue to be used.
  • Old items should not require updating, but we make no promises as there may be some fringe cases we missed.
  • Added Durability field for items that can have durability

Potions

Added potion effects CONDUIT_POWER, DOLPHINS_GRACE, SLOW_FALLING for potion items

Compatibility

  • Updated to be compatible with WorldGuard 7.0.0-beta1
  • Updated to latest LibsDisguises
  • Updated to use the new MPets API
  • Removed BarAPI support

LibsDisguises

  • Added support for custom LibsDisguises disguises w/ Disguise.Type: name
  • If Disguise.Type does not match a known entity type, MM will ask LibsDisguises for any custom types defined in disguises.yml

Bug Fixes/Other

  • Show build number on plugin startup
  • Fixed many instances where bad configs would cause the plugin to not load
  • Fixed NPE in RandomMessage Mechanic
  • Fixed NPE with Get Egg Command tab completion
  • Fixed console warning when AIR used for blockmask
  • Numerous bug fixes for skill mechanic parsing
  • Fixed console error caused by boss bars
  • Fixes for ParticleBox effect
  • Fixed projecitles not obeying StopAtBlock option
  • Fixed bugs with ThreatTable API
  • Fixed conditionVar not working with Currency condition
  • Fixed MythicItem drops not dropping correct amount
  • Fixed Tropical Fish options not applying
  • Fixed NPEs in random spawns
  • Fixed sound mechanic being case-sensitive on 1.13+
  • Fixed and improved positioning of prison mechanicc
  • Fixed RandomSpawn ADD not working on 1.13+
  • Fixed ArmorStand HasGravity option working backwards
  • Fixed @Cone targeter positioning the cone thousands of blocks away
  • Countless other bug fixes we forgot about

Older Changelogs

changelog.txt · Last modified: 2019/06/18 00:09 by rogerplaysmc