|
|
|
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](/skills/variables) 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](/skills/variables) 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](/skills/variables) 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 |