4.6.5
- Basic support for 1.14
- Backported lots of bug fixes from 4.7
4.6.0 - 4.6.4
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.
- variableIsSet{variable=[scope].[variablename]}
- variableIsSet{variable=target.somevariable} true
NEW: VariableInRange
Returns true if the variable is within the given range. Only works with numeric variables.
- variableInRange{variable=[scope].[variablename];range=[range]}
- 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.
- 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