https://github.com/BerndiVader/MythicMobsExtension/wiki
Click here to see stuff that is not yet in the wiki. Click here for the lastest builds Click here for the repos
Click here for the MythicMobsExtensions external modules!
** 10.02.2018 *** added possibility to load externals mechanics stored in MythicMobsExtension/externals folder.
** 22.01.2018 *** added cmpnbt condition. If more then just a testfor is needed. See cmpnbt for details.
** 19.01.2018 *** tweaked all floating mechanics & added facedir=[bool] to entity- mythicfloating mechanics.
** 07.12.2017 *** removed debug messages from lastdamagecause & ANY in steal mechanic choose a random, no AIR, inventory slot.
** 07.12.2017 *** added randomspeed mechanic & movespeed condition. See randomspeed ore movespeed for details.
** 05.12.2017 *** added shuffle option for dropmythicitem mechanic & MythicMobsExtItemDropEvent is called whenever this mechanic is used.
** 31.12.2017 *** fixed mythic_parrot level not set properly if parrot comes from mythicmobs spawner.
** 30.12.2017 *** fixed parrot cookie issue. Added Options.CookieDie: false/true or use cancelevent ondamaged. See Parrotfix.
** 23.12.2017 *** added usecounter boolean option to speechbubble & modifybubble mechanic. Added timer option to modifybubble to change the timer.
** 22.12.2017 *** added <additem.[material_name]> placeholder to add an itemline for speechbubble mechanics. See speechbubble for details.
** 22.12.2017 *** added modifybubble & removebubble mechanic. See speechbubble mechanics for details.
** 19.12.2017 *** added a condition to get the damage indicator percentage. See getindicator condition.
** 15.12.2017 *** added triggerdirection, targetdirection & ownerdirection targeter. See targeters for details.
** 03.12.2017 *** added modifyarrows on entity body. Change the amount of arrows targets body. See mechanics for details.
** 28.11.2017 *** added jumping, running, crouching & sleeping conditions. See conditions for details.
** 21.11.2017 *** tweaked disarm to work for all LivingEntities & added disarm duration. See disarm for details.
** 20.11.2017 *** added setrotation & entitygoggleat mechanic. See setrotation & entitygoggleat for example.
** 20.11.2017 *** changed movement method for blockfloating to fix fallingblocks glitches. Thanks aDaxxas!
** 17.11.2017 *** added speechbubble mechanic. See speechbubble mechanic for details. (requires HolographicDisplay plugin)
** 05.11.2017 *** added playergoggleat mechanic & isgoggling and isspinning conditions. See playergoggle mechanic for details.
** 05.11.2017 *** tweaked stun skill & added playerspin mechanic. See playerspin mechanic for details.
** 04.11.2017 *** tweaked stun skill. facing=true now works for players & passengers will not be ejected.
** 11.10.2017 *** added mythicfloating and support for location targets to all floating mechanics. See floating mechanics for details.
*** 9.10.2017 *** added asequip mechanic. mainly to equip head of armorstand with any Bukkit Material Type.
*** 9.10.2017 *** added ownertarget targeters. Targets the target of the owner of the mob. (Only work with mm 4.3 or patched 4.2)
*** 7.10.2017 *** added sideOffset & frontOffset to createhelthbar mechanic. See createhealthbar mechanic for details.
*** 24.9.2017 *** added boolean expression to iteminhand condition. See iteminhand condition for details.
*** 18.9.2017 *** improved grenade skill to work with eyedirection and targetdirection. See grenade mechanic for details.
*** 17.9.2017 *** added https://github.com/lucko/helper loader for further usage.
*** 12.9.2017 *** added returnhome pathfindergoal. See advaipathfinder for more details. Meanwhile 1_12 only. Needs some more testing.
*** 11.9.2017 *** added Block break chance to PathfinderBreakBlocks. See advaipathfinder for details.
*** 04.9.2017 *** added materialtypes to breakblocks pathfindergoal. See advaipathfinder for details.
*** 27.8.2017 *** added mobs config node "onDamageForOtherCause: true/false" to activate onDamage trigger for all none entity damage like lava fire etc... use lastdamagecause to react on the damagecause.
*** 25.8.2017 *** added counter option to createhealthbar mechanic. See createhealthbar for details.
*** 10.8.2017 *** fixed createhealthbar mechanic & added display option to skill. See createhealthbar for details.
*** 10.8.2017 *** added createhealthbar mechanic. Requires the holographicdisplay plugin to work. See createhealthbar mechanic for details.
*** 10.8.2017 *** fixed (maybe) several issues with other plugins & fixed mobsinradius compare distance with different worlds.
*** 06.8.2017 *** added advaipathfinder mechanic, rangedmelee & runfromsun pathfindergoal. See advaipathfinder mechanic for more.
*** 04.8.2017 *** since now, take care of the wiki: https://github.com/BerndiVader/mmCustomSkills26/wiki made by muhahahahahe thx alot to him.
*** 04.8.2017 *** added parsedstance mechanic & parsedstance target/compare condition. See parsedstance mechanic for details.
*** 01.8.2017 *** fixed some bugs. Fixed compatibility with MM 4.2, added infront, behind & attackable/damageable condition. See conditions for more info.
*** 19.7.2017 *** added unequip mechanic. More work on castif, now possible to use it like boolean expressions. See castif for more info.
*** 14.7.2017 *** added bounce=true/false(default) & bred=0.2f(default) & onbounceskill to effect/mythicprojecitle mechanic Use this options to bounce the projectile.
*** 13.7.2017 *** added MythicEffectProjectile, fixed pfacedir for mythicprojectiles and some more. See MythicProjectiles for details.
*** 10.7.2017 *** added setmeta, delmeta mechanics & hasmeta condition. See MetaMechanics for details.
*** 05.7.2017 *** some work on the projectiles & mythicplayers. See CustomProjectiles/MythicPlayers for details.
*** 04.7.2017 *** (alpha)implemented MythicPlayers addon. See MythicPlayers for more details and examples.
*** 03.7.2017 *** (alpha)added mythicorbitalprojectile & some cleanup. See mythicorbitalprojectile for details and example. (known issue: the voffset applies very very late)
*** 02.7.2017 *** added mythicprojectile and customparticles. See customprojectiles mechanic for details and example.
*** 30.6.2017 *** last finally added rpgitem armor support to customdamage & added pspin to entityprojectile
*** 25.6.2017 *** added itemprojectile, blockprojectile & entityprojectile. Beta in meanwhile. Report issues. See CustomPrjectiles for more details. MythicMobs 4.1.0 or higher
*** 22.6.2017 *** added targetinsight option to customteleport mechanic. destination targeter now parse variables. Changed sdelay to teleportdelay. See customteleport for more details.
*** 21.6.2017 *** added some more improvements to customteleport. See customteleport for details and example.
*** 14.6.2017 *** added customteleport mechanic. See customteleport for details. Beta in meanwhile. Released in hurry.
*** 11.6.2017 *** added temporary biome condition fix for randomspawners with spawn method ADD. See biomefix for details.
*** 26.5.2017 *** added ignoredestoffsetyaw (idoy) to customparticleline. See customparticleline mechnic.
*** 25.5.2017 *** added customparticleline & added keeptargetyaw and keepcasteryaw to swap mechanic. See customparticleline and swap mechanic for details. MythicMobs 4.1.0 or higher
*** 19.5.2017 *** added CustomSummon mechanic. Usage same as the original MythicMobs summon but in addition you can use addx(ax),addy(ay),addz(az) to the location.
*** 9.5.2017 **** activated MythicMobs ~onKill trigger for all ActiveMobs (see example at the end of the readme)
*** 7.4.2017 **** fixed random bug in damagearmor and added support for negative values. Because of that changed ranged syntax from "1-2" to "1to2"
Bukkit's entity type name: "mythic_parrot" /summon mythic_parrot
Custom parrot class for better handling of the cookie thing.
selfnotarget=true/false(default)
set the players target to self if the player do not have a target at crosshair. Bit hacky workaround for skill not being triggered if no target is set.
With this module you can turn any player on your server into a MythicPlayer. With almost all abilities of a MythicMobs mob. But there are some limitations. Because a player is a player and not a mob its very important that you make all the mob yamls that will be used for player ++persistent++ otherwise it will break your server and because of that fact you can only use MythicMobs yamls that have persistent set to true. Well thats the only limit.
Transform the targeted player into a mythicplayer.
m=[MobType]
Any valid MythicMob configuration with persistent option enabled.
Make the mythicplayer player a ordinary player again. No further options needed here.
This mechanic is used to update the crosshair target of the player.
selfnotarget=snt=true/false(default)
If enabled the target of the player will be set to self. Thats a hacky workaround for skills not being triggered if no target is avail.
Example configuration for a full working MythicPlayer (Summon the PlayerMonkey and interact with it to turn into the MythicPlayer mob or damage the mob to be normal player):
Mob yaml file:
PlayerMonkey:
Type: villager
Display: "&cPlayer Monkey"
Health: 20
AIGoalSelectors:
- 0 clear
AITargetSelectors:
- 0 clear
Skills:
- activeplayer{m=MythicPlayer} @trigger ~onInteract
- normalplayer @trigger ~onDamaged
MythicPlayer:
Type: player
Options:
Persistent: true
Modules:
ThreatTable: true
Skills:
- firework{t=1;d=0;f=true;tr=true} @selflocation ~onSpawn
- skill{s=PlayEffectOnTarget} ~onTimer:20
- particlesphere{particle=angryVillager;amount=10;radius=1} @trigger ~onAttack
- heal{a=5} @self ~onDamaged <25% 1
- skill{s=ApplyStealth} @self ~onCrouch
- skill{s=RemoveStealth} @self ~onUnCrouch
- message{msg="use"} @self ~onUse
Skill yaml file:
ApplyStealth:
Skills:
- message{msg="crouch"} @self
- potion{type=INVISIBILITY;duration=999999;level=4} @self
- particlesphere{particle=cloud;amount=20;radius=1} @self
RemoveStealth:
Skills:
- message{msg="uncrouch"} @self
- particlesphere{particle=cloud;amount=20;radius=1} @self
- removepotion{p=INVISIBILITY} @self
PlayEffectOnTarget:
Skills:
- settarget
- particlesphere{particle=flame;amount=10;radius=1} @target
Store the current servertick into scoreboard or metatag.
Where tag is name of the tag and meta true/false(default) if scoreboard or metatag should be used.
Execute a javascript function out of the script.js file provied in MythicMobsExtension folder.
Example:
Dummy1:
Type: zombie
Health: 10
Skills:
- jsmechanic{js="ChangeTargetsName";newname=jsmechanicrox} @self ~onDamaged
Scripts.js:
var ChangeTargetsName=function(data,target,mlc) {
if (target instanceof org.bukkit.entity.LivingEntity) {
target.setCustomName(mlc.getString("newname","whatever"));
target.setCustomNameVisible(true);
return true;
}
return false;
}
This example change the name of the castermob to jsmechanicrox.
Get a MythicMob intern field and store it into a metatag or into stance.
Example:
TestMonkey:
Type: zombie
Skills:
- getmobfield{field=lastSignal;stance=true} @self ~onInteract
- message{msg="<mob.stance>"} @world ~onInteract
This example loads the mobs last signal into the mobs stance variable and broadcast the <mob.stance> into the world.
Forms a nbt and applies it to the targeted entity. Note the surrounding "" for nbt option!
Any valid nbt can be applied where variables like <mob.name> etc are allowed!
Example:
TestMonkey:
Type: zombie
Skills:
- equip{i=Sword:0} @self ~onSpawn
- setnbt{nbt="{LeftHanded:1b}"} @self ~onInteract
This example makes it that the entity change the weapon from right to left side.
Force the player to see the border warning effect.
Where play=true for on or false for off. Example:
BloodyScreen:
Skills:
- bloodyscreen{play=true}
- delay 10
- bloodyscreen{play=off}
Force the target to drop an item from its storagte/equipment to the ground.
Where in [range]
is the range the new random speed is picked.
Example:
newSpeed:
Skills:
- randomspeed{range=0.2to0.5} @self ~onInteract
Summon a floating item, block, entity or mythicmobs mob relative to caster or static at location.
Almost all options like in mythicprojectile are useable.
Zoom the player's view. Where v is a value of 0 (no zoom) to 1.0f full avail zoom. Ex:
zoom:
Skills:
- playerzoom{v=1.0f}
- playerzoom{delay=180;v=0.0f}
First set the zoom to 1 after 180 ticks set the zoom back to 0.
Set the cooldown of the selected item. Only avail for player targets.
Set the item used for the attack to a cooldown of 120 ticks.
Modify the amount of arrows on the targets body. Use "ADD, SUB, CLEAR" for mode and integer value for amount.
Removes all arrows from the targeted body.
Adds 4 arrows to the arrows on targeted entity's body.
Subtract 4 arrows from the total amount of arrows on targeted entity's body.
Force the player to see the loading screen or the end screen. With a repeat skill its possible to make a blackscreen for the player.
playloading:
Skills:
- playloading{repeat=60;repeatInterval=1}
- closeinventory{delay=61}
This force all targeted players to see the loading screen for 60 ticks. Use closeinventory to return the player into normal view.
playblackscreen:
Skills:
- playcredits{repeat=60;repeatInterval=1}
- closeinventory{delay=61}
This force all targeted players to see a black screen for 60 ticks. Use closeinventory to return the player into normal view.
Force the target to drop an item from its storagte/equipment to the ground.
- dropinventory{item="material=[MATERIAL_TYPE]||ANY,amount=[NUMBER],lore=[TEXT],where=[HAND][OFFHAND][ARMOR][INVENTORY]";pickupdelay=[TICKS];pieces=[NUMBER]} @trigger ~onInteract
Where in item=""
all the item information is stored. pickupdelay
= amount of ticks the item cannot be picked up again. pieces
how many
pieces out of the inventory, regardless of itemstacks, are dropped.
Examples:
drop2pieces:
Skills:
- dropinventory{item="material=DIRT,amount=1,where=HAND";pieces=2} @trigger ~onInteract
dropAll:
Skills:
- dropinventory{item="material=ANY,amount=64,where=ANY";pieces=41} @trigger ~onDamaged
First example drop 2 dirt regardless the item is in an stack or there are just two single dirtstacks in the inventory. The second example drop the inventory entirely because of where & material = any, amount is atleast a stack and pieces = 41 (max slots of a player)
Force the player to close the current open inventory.
Force a fake death sequence of the castermob.
This play the fake death sequence for the mob. After 50 ticks the mob appear again. This can be used to do some real wiered stuff:
fakedeath:
Skills:
- fakedeath{duration=500}
- delay 14
- heal{oh=true}
- setrotation{yo=2;dur=500} @self
This skill for example, will stop the death sequence when the mob is horizontal position for 500 ticks.....
Set the mythicmobs mob health and maxhealth to a new amount. Random amount allowed. Ignore or allow level health modifier. Use set add or multiply the amount.
add a random value between 2 and 5 to the maxhealth.
set the maxhealth to random value between 10 and 20.
multiply the maxhealth with a random value between 0.5 and 1.
Force the entity to goggle at the targeted entity for duration amount of ticks. Doesnt work too well if the entity have ai.
Rotates the entity yo degrees relative to its yaw, amount of duration times. Doesnt work too well if the entity have ai.
Use this mechanic to add something like a speechbubble to your mob. Use it like this. text
inside of "" is the output text. linelength
or ll
is the max charlength of the lines. offset
or yo
is the yoffset of the bubble. time
or ti
is how long the bubble is shown above the mob.
so
and fo
for side and forward offset relative to casters direction, where vertical negative is behind and horizontal negative is right side. anim
true or false if the text should be animated at popup. (option) id
is the id of the entity's speechbubble if you want to use modifybubble or removebubble mechanic.
Use <additem.ITEM_NAME>
inside the text
option to add an itemline to the bubble. Use any valid bukkit item material name. Use placeholder inside text
option to force a new line. Use usecounter
true/false to enable counter for the bubble.
speechbubble{text="&5<target.name>&f, hello! My name is &3<mob.name>&f Nice to meet you. How are you doing? I think its a pretty nice weather today, isnt it?";ll=20;offset=2.2;so=sideoffset;fo=forwardoffset;time=300} @trigger ~onInteract
BubbleMonkey:
Type: zombie
Display: "DingDong"
AITargetSelectors:
- 0 clear
Skills:
- equip{i=BlackbeardHead:4} @self ~onSpawn
- speechbubble{text="&5<target.name>&f, hello! My name is &3<mob.name>&f Nice to meet you. How are you doing? I think its a pretty nice weather today, isnt it?";ll=20;offset=2.6;time=300} @trigger ~onInteract
- speechbubble{text="&5<target.name> &2Stop punching me around!";ll=80;offset=2.6;time=300} @trigger ~onDamaged
Use this mechanic to modify a existing bubble for the caster: modifybubble{id=existing_id;text="new test";ll=linelength;so=sideoffset;fo=forwardoffset;offset=offset;usecounter=true/false;timer=ticks}
Removes an existing bubble from the caster: removebubble{id=existing_id}
Modify a line of a bubble: linebubble{id=existing_id;mode=append/replace/remove;oldline="oldlinetext";newline="newlinetext"}
If bubble with id have a line that contains oldline
that line will be removed, replaced with newline, or if used append a newline will be added.
Example:
BubbleMonkey:
Type: zombie
Display: "DingDong"
AITargetSelectors:
- 0 clear
Skills:
- speechbubble{id=effects;usecounter=false} @self ~onSpawn
# creating a bubble instance at spawn.
BubbleSkill:
Skills:
# - linebubble{id=effects;mode=append;newline="<additem.dirt>"}
# - linebubble{id=effects;mode=remove;oldline="<additem.dirt>"}
# - linebubble[id=effects;mode=replace;oldline="<additem.dirt>";newline="<additem.stone>"}
Disarm the targeted player and store the equipped item in the first free slot in the players inventory. The mechanic is not executed if the player has no space in its inventory. If used on a none player the entity is disarmed for duration amount of ticks instead of stored in inventory.
Force the targeted player to stare at caster while still is full moveable for duration amount of ticks. Use the isgoggling
condition
to determine if the player already goggles at something.
spin the player target around. Use the isspinning
condition to determine if the player is already spinning around.
extinguish the target if its on fire.
if the mob is damaged and in case the mob is on fire it extinguish the mob.
Equip an armor stand with any Bukkit Material Type. Equp the head slot with any Material.
If mobtype = armorstand equip diamond sword on head slot.
Change the weather and time for the targeted player only. The effect will last duration amount of ticks.
Set the faction of the targeted entity if its an MythicMobs mob. Any variable present at runtime can be used. (Additional you should look at the conditions infaction and samefaction)
- setfaction{faction=SomeFaction} @self ~onSpawn
- setfaction{faction=<mob.name> @self ~onSpawn
Same as the build-in disguise mechanic. But additional it parse every variable that is present while the skill is executed.
Rename the targeted entity. Only works on living entities and do not work for players. Use name option for the new name. The mob variables are parsed. You can use all the variables (http://www.mythicmobs.net/manual/doku.php/skills/stringvariables) avaible at runtime. Set visible to true or false if the name should be displayed without hover the entity.
set the targeter entity to perma owner of the activemob. Resistent against reload and server restart until the mob is dead. Althought only make sense on despawn false mobs.
Use this mechanic to execute a random skill by chance and priority.
- advrandomskill{renewrandom=true;skills=priorityrandomskill1:0.1,priorityrandomskill2:0.2,priorityrandomskill3:1} ~onDamaged
- customrandomskill{rrenewrandom=false(default);skills=priorityrandomskill1:0.1,priorityrandomskill2:0.2,priorityrandomskill3:1} ~onDamaged
- This check if rnd match first skill, if yes skill is executed, if not check for the next skill. If none matched yet the last entry with a chance of 1 will always be executed.
- If renewrandom/newrandom/rnr is set to true a new random is created for the next entry else for all entries the same random is used.
- advrandomskill{skills=priorityrandomskill1:0.5,priorityrandomskill2:0.3,priorityrandomskill3:0.2} ~onDamaged
- Same as above but if no chance match nothing will be executed.
Use this mechanic to change the display of the mobs healthbar if exists.
- Changes the healthbar display if the mob is damaged.
Use this mechanic to display a healthbar above the mythicmobs head.
Creates a healthbar for the spawned mob with an y-offset of 2.5. And adds so(sideoffset) to left/right of mob and add fo(frontBackOffset). Use iy(ignoreYaw) if you dont want sideoffset affected by the entity's yaw.
The healthbar is removed after the mob is removed. Use "$h" as placeholder for the mobs health. If counter is set the healthbar is visible counter amount ticks after the mob is damaged. Use -1 to set it perma visible.
Use this mechanic to add custom pathfinder goals or any other mythicmobs pathfindergoal parsed for variables. Its a NoTargetMechanic and therefor always be used at caster.
Some examples:
- advaipathfinder{goal="clear"}
- advaipathfinder{goal="2 runfromsun 2"}
- advaipathfinder{goal="3 goto 0,0,0"}
- advaipathfinder{goal="4 goto <target.l.x>,<target.l.y>,<target.l.z>"}
- advaipathfinder{goal="1 randomstroll"}
jumpoffvehicle:
- Syntax in custompathfinder:
- custompathfinder{goal="1 jumpoffvehicle"}
- Adds the ability to the mob to jump off fron any vehicle if in combat mode.
attack:
- Syntax in advaipathfinder:
- advaipathfinder{goal="1 attack 1.5 3"}
- Above example make the mob attack its target at a speed of 1.5 and a melee range of 3 blocks.
- Make the mob attack its targets. The goal sends the signal AIHIT whenever it do an attack. Catch the signal in the mob skills to make highly customized attacks!
- MORE ADVANCED OPTIONS IN PROGRESS!
shootattack:
advaipathfinder{goal="[goalpriority_value] shootattack [follow_speed],[range1],[attack_speed],[distance]"}
- Syntax in advaipathfinder:
- advaipathfinder{goal="1 shootattack"}
- Set goal 1 to PathfindergoalShootAttack. Will make ANY creature entity able to range attack. Sends the signal AISHOOT to customize the projecitle
Example:
VillagerHood:
Type: villager
Display: "Villager Hood"
AITargetSelectors:
- 0 clear
- 1 players
Skills:
- skill{s=SpawnEvent} @self ~onSpawn
- shoot{type=ARROW;velocity=2;damage=1} @trigger ~onSignal:AISHOOT
SpawnEvent:
Skills:
- advaipathfinder{goal="clear"}
- advaipathfinder{goal="0 shootattack"}
- advaipathfinder{goal="1 movetowardstarget"}
- advaipathfinder{goal="2 randomstroll"}
runfromsun:
- Syntax in advaipathfinder:
- advaipathfinder{goal="1 runfromsun 5"}
- Set goal 1 to PathfindergoalFleeSun with a speed of 5
rangedmelee:
- Syntax in advaipathfinder:
- advaipathfinder{goal="1 rangedmelee 5"}
- Set goal 1 to PathfinderMeleeAttack with a range of 5 blocks.
followentity:
advaipathfinder{goal="[goalpriority_value] followentity [speed_value],[follow_rad_min],[follow_rad_start] [entity_uuid]"}
- Syntax in advaipathfinder:
- advaipathfinder{goal="1 followentity 2,3,10 <trigger.uuid>"}
- Set goal 1 to PathfinderFollowEntity with speed 2 to the trigger of the skill, start following if entity outside [follow_rad_start] radius and follow until entity is within [follow_rad_min].
breakblocks:
advaipathfinder{goal="[goalpriority_value] breakblocks [materialtype_array] [blockbreakchance_value]"}
- Syntax in advaipathfinder:
- advaipathfinder{goal="1 breakblocks grass,dirt,stone 50"}
- Set goal 1 to PathfinderBreakBlocks. Blocks that can be broken are grass, dirt and stone. If none is given all blocks can be broken. Respect worldguards block-break deny flag.
- The entity have a chance of 50% to break the block. Possible chances 0-100;
returnhome:
advaipathfinder{goal="[goalpriority_value] returnhome [speed_value] [x],[y],[z],[travel_radius],[tp_radius],[boolean_ignoretarget]"}
- Syntax in advaipathfinder:
- advaipathfinder{goal="1 returnhome 2 <mob.l.x>,<mob.l.y>,<mob.l.z>,200,1024,false"}
- Set goal 1 to PathfinderGoalReturnHome. The entity will return to the mobs location present at execution of the mechanic. With speed of 2. Mob can travel inside a radius of 200 disq and has a tp radius of 1024. Means if the mob is outside of 1024 it will be teleported. Because of the last false the mob will not go home aslong it has a target. Set it to true and the mob will run home whenever its outside of its range.
- In addition there are two signals send:
- GOAL_STARTRETURNHOME - Send to mob if the entity start to travel home.
- GOAL_ENDRETURNHOME - Send to mob if the entity is arrived at home.
Set a the stance of an activemob filled parsed variables, like <mob.uuid> <target.uuid> and so on. In addition see parsedstance condition to compare parsed stances.
special variables
- <target.l.*> are parsed within pstance with the block position of the location if there is a location targeter
- <target.l.dx dy dz> to get the coordinates as double not the block position.
- <target.meta.*> where * is the name of the metatag. If used with a location targeter the block metatags are used.
- <mob.meta.*> where * is the name of the metaag. Ex:
<mob.meta.<trigger.uuid>
reteruns the value stored in casters triggers uuid tag if there is one.
- mythicprojectiles/effectprojectile:
pfacedir=
true/false(default) Projectile object will face in movement direction.pfoff=
value(0.0 default) The front offset of the object. A value of -1.0 is about the center of the caster mob.targetable=
true/false(default) Create a metadata on the object called "nottargetable" useful for to exclude the entity from targeters.eyedir=
true/false(default) If eyedir is used. The projectile do not need a target. It will be shoot in the entities look direction.invis=
true/false(default) to apply invisible to the projectile.bounce=
true/false(default) if enabled the projectile bounce from the ground. only make sense if gravity is used and stoponground=false.bred=
0.2f(default) the amount the bouncing velocity is reduced.onbounceskill=onbounce=ob=
skillname The skill that will be executed if the projectile hit the ground.
- mythicorbitalprojectiles:
pfacedir=
true/false(default) Projectile object will face in movement direction.targetable=
true/false(default) Create a metadata on the object called "nottargetable" useful for to exclude the entity from targeters.- the owner of the orbital projectile will be set to its caster.
tag=
value If used this tag will be parsed and added as metatag to the orbitalentity.invis=
true/false(default) to apply invisible to the projectile.
Shoot any Item. Use it like the original MythicMobs projectile mechanic. In addition use pitem or pobject to choose any droppable item.
pobject=
Any valid bukkit item type.
Shoot any FallingBlock. Use it like the original MythicMobs projectile mechanic. In addtion use pblock or pobject to choose any FallingBlock.
pobject=
Any valid Bukkit fallingblock type.
Shoot any Entity. Use it like the original MythicMobs projectile mechanic. In addtion use pentity or pobject to choose any Entity. Since v1.11 you can use pspin to spin the entity where pspin=VALUE value is the speed.
pobject=
Any valid bukkit entity type.
Shoot any MythicMobs mob as a projectile. In addition use pobject or pmythic to choose a existing MythicMobs mob. See example for details. If you dont need the projectile object you can use MythicEffectProjectile and use the futures of mythicprojectile without object.
pobject=
MythicMob used for the projectile objectpfoff=
value(0.0 default) The front offset of the object. A value of -1.0 is about the center of the caster mob.pvoff=
value(0.0 default) The vertical offset of the object.pfacedir=
true/false(default) Projectile object will face in movement direction.eyedir=
true/false(default) If eyedir is used. The projectile do not need a target. It will be shoot in the entities look direction.targetable=
true/false(default) Create a metadata on the object called "nottargetable" useful for to exclude the entity from targeters.pspin=
value(0 default) If there is a value != 0 the pobject will be spinned at value speed.invis=
true/false(default) if invisible will be applied to the pobjectbounce=
true/false(default) if enabled the projectile bounce from the ground. only make sense if gravity is used and stoponground=false.bred=
0.2f(default) the amount the bouncing velocity is reduced.onbounceskill=onbounce=ob=
skillname The skill that will be executed if the projectile hit the ground. For bounce example see below.
Summon a orbital object on the targeted entity. Do not work on locations. The owner of the orbital projectile will be set to its caster. See the example who to use it.
pobject=
MythicMob used for the orbital objectoradx=
radius xorady=
radius yoradz=
radius z axsis.oradsec=
how much angle added per sec. (speed)pvoff=
vertical offset.pfacedir=
true/false(default) Projectile object will face in movement direction.targetable=
true/false(default) Create a metadata on the object called "nottargetable" useful for to exclude the entity from targeters.tag=
if used it will add a parsed metatag to the orbitalentity. Example: tag=<trigger.uuid>invis=
true/false(default) if invisible will be applied to the pobject
ItemProjectile:
Skills:
- itemprojectile{pitem=DIRT;ontick=IP-Tick;onend=IP-Hit;v=20;i=1;hR=1;vR=1}
IP-Tick:
Skills:
- effect:particles{p=cloud;amount=1;speed=0;hS=0.2;vS=0.2} @origin
IP-Hit:
Skills:
- effect:particles{p=lava;amount=20;speed=0;hS=0.2;vS=0.2} @origin
- damage{a=10}
MythicProjectile Example:
Mobs Yaml: https://pastebin.com/6U6iUxkF
Skill Yaml: https://pastebin.com/Vnanzhmz
Items Yaml: https://pastebin.com/ddkeJaqG
MythicOrbitalProjectile Example:
MythicOrbitalBullet:
Skills:
- mythicorbitalprojectile{pobject=MythicOrbital1;ontick=IP-Tick-dust-blue;i=1;hR=0;vR=0;oradx=0;oradz=1.5;orady=-1.5;oradsec=3;md=20000;se=false;sb=false;pvoff=1}
- delay 40
- mythicorbitalprojectile{pobject=MythicOrbital1;ontick=IP-Tick-dust-red;i=1;hR=0;vR=0;oradx=0;oradz=1.5;orady=1.5;oradsec=3;md=20000;se=false;sb=false;pvoff=1}
- delay 40
- mythicorbitalprojectile{pobject=MythicOrbital1;ontick=IP-Tick-dust-green;i=1;hR=0;vR=0;oradx=1.5;oradz=1.5;orady=-1.5;oradsec=3;md=20000;se=false;sb=false;pvoff=1}
- delay 40
- mythicorbitalprojectile{pobject=MythicOrbital1;ontick=IP-Tick-dust-black;i=1;hR=0;vR=0;oradx=1.5;oradz=1.5;orady=1.5;oradsec=3;md=20000;se=false;sb=false;pvoff=1}
BouncingBulletSkills:
BouncingBullet:
Cooldown: 1
Skills:
- effectprojectile{ontick=BouncingBulletTicking;onbounce=IP-bounce-effect;v=5;i=1;g=0.2;hR=0;vR=0;sb=false;sfo=0;tyo=0;bounce=true;bred=0.5;md=200;mr=100;pfacedir=true}
BouncingBulletTicking:
Skills:
- mythiceffectprojectile{ontick=IP-Tick-bouncing;v=1;i=1;g=0;hR=0;vR=0;eyedir=true;sfo=0;md=1;pfoff=-4}
IP-Tick-bouncing:
Skills:
- customparticles{p=reddust;amount=1;hs=0;vs=0;speed=0;yoffset=0;foffset=0} @origin
IP-bounce-effect:
Skills:
- customparticles{p=explosion;amount=5;hs=0;vs=0.0;speed=0;yoffset=0.5;foffset=0} @origin
Set parsed(!) metadata for the target. You can use all variables that are avaible while the skill is executed.
The tags "tag" and "value" can contain any mob variable. Example: [- setmeta{meta=<target.uuid>} @self]
add the uuid of the target as metatag to the mob. You can also use values and types, but this is more for further purpose. Still you can go form them too. If usecaster is set to true the metatag is always set for the caster of the skill. No matter what targeter is used.
- setmeta{meta="tag=lastdamagedentity;value=<trigger.uuid>;type=STRING"} @self ~onAttack
This will set the lastdamagedentity tag of the mob to the victims uuid. It is possible to set a metadata of a block by using a location targeter. All blocks including air are valid.
Delete a metatag from the targeted entity. Be aware, if you remove tags that are not added by yourself, might break something else!
This remove the lastdamagedentity tag if the mob stop fighting.
With this condition you can check any parsed meta. In its main purpose its a compare condition. Mean its a TargetConditions because it needs 2 entities. But by setting the cs tag (compareself) in the condition, you can choose if the target or the caster metas are checked. Its also possible to use a list of tags. All mob variables that are useable at the moment the skill is executed can be used. Use hasmetasimple if you only need ot check a single entry.
- hasmeta{meta="tag=tagname;value=metavalue;type=BOOLEAN/NUMERIC/STRING";cs=true/false;action=true/false/cast/castinstead}
- hasmetasimple{tag=tagname;value=metavalue;type=BOOLEAN/NUMERIC/STRING;cs=true/false;action=true/false/cast/castinstead}
Example: - hasmeta{meta="tag=lastdamagedentity;value=<target.uuid>;type=STRING";cs=true;action=true}
This will check the caster entity if it has the tag "lastdamagedentity" and if it contains the uuid of the target. If cs=false it would check the target entity. The following condition use a list. ATM it will meet the condition if only 1 of the tags match. This will be changed in the future.
Example: - hasmeta{meta="tag=<target.uuid>||tag=<trigger.uuid>";cs=true;action=true}
Checks if the caster mob have the tag target uuid or trigger.uuid.
The following example shows how to make it, that every entity can hit the villager only once. After that the entity have to interact with the villager do get removed and can hit him again one time:
Mob yaml:
MetaMonkey:
Health: 1000
Type: villager
Display: "Meta Monkey"
AIGoalSelectors:
- 0 clear
Skills:
- skill{s=cancelDamageIfMeta;sync=true} @trigger ~onDamaged
- skill{s=setMetaTag} @trigger ~onDamaged
- skill{s=delMetaTag} @trigger ~onInteract
Skill yaml:
delMetaTag:
TargetConditions:
- hasmeta{list="tag=<target.uuid>";action=true;cs=true}
Skills:
- message{msg="<mob.name> >> <trigger.name> i remove you from my black list!"} @world
- delmeta{meta="tag=<trigger.uuid>"} @self
setMetaTag:
TargetConditions:
- hasmeta{list="tag=<target.uuid>";cs=true;action=false}
Skills:
- message{msg="<mob.name> >> <trigger.name> i will remember you!"} @world
- setmeta{meta="tag=<trigger.uuid>"} @self
cancelDamageIfMeta:
TargetConditions:
- hasmeta{list="tag=<target.uuid>";cs=true;action=true}
Skills:
- cancelevent
Advanced teleport mechanic. Use this to teleport from/to variable destinations with variable behaviors.
Options:
destination=
MythicMobs targeter or vanilla targeter. Use "" that the targeter can be parsed.noise=n=
number, random point around the targetteleportdelay=tdelay=td=
number, delay in ticks between teleportation (if more than 1)infrontof=front=f=
true/false, teleport in front of target (if target is a entity)returntostart=return=r=
true/false, if the source entity should return to its start positionbetweenlastentitysignal=bls=
signalname to be send to caster mob between the teleportations, where the trigger is the last entity (if target was an entity)betweennextentitysignal=bns=
signalname to be send to caster mobignoreowner=io=
true/false, if the owner of the caster mob should be ignored.maxtargets=mt=
number, the maximium number of targets.targetinsight=insight=is=
true/false, only the targets insight of the current position are used.
Example Mob:
Monkey:
Health: 300
Type: zombie
Display: "Monkey"
AIGoalSelectors:
- 0 clear
Skills:
- customsummon{t=ChainDummy;setowner=true} @selflocation ~onDamaged
ChainDummy:
Type: armor_stand
Options:
Invisible: true
Invincible: true
Skills:
- customteleport{destination="@EIR{r=40}";teleportdelay=10;front=false;fs=ende;bns=bns;bls=bls;r=false;io=true;is=true} @self ~onSpawn
- skill{s=chain} @trigger ~onSignal:bns
- remove @self ~onSignal:ende
# NOTICE THE "" FOR THE DESTINATION!
Example Skill:
chain:
Skills:
- lightning
- customparticleline{particle=reddust;amount=5;color=#feff90;ys=2.5;vd=1.0;hd=-0.5;distanceBetween=0.5;tyo=1.25}
Or use some variables in the destination targeter:
- customteleport{destination="@Location{c=<mob.l.x>,<mob.l.y>,<mob.l.z>}"} @eir{r=40} ~onDamaged
Drop a mythicitem or a mythicdroptable.
Options:
mythicitem=item=itemtype=type=t=i=
Internal name of the mythic item or the mythic droptable.amount=a=
the amount of the that will be dropped if a mythic item, the amount of droptable creation if a droptable.shuffle=true/false
if true the droptable itemlist will be shuffled by random.
- dropmythicitem{item=MythicItem;a=1} @pir{r=20} ~onAttack
This drop one MythicItem at all players in radius of 20 if the mob targets a entity. Additional, whenever this mechanic is called there is a
MythicMobsExtItemDropEvent
called with the mythicmobs the trigger and the drop as an arraylist.
The same like the original but added vDestOffset & hDestOffset to adjust the targetlocation. Use vDestOffset to adjust the height and use hDestOffset to adjust the x/z position. Use idoy true/false(default) = ignoredestoffsetyaw to ignore the yaw of the targetlocation. With this its possible to target a specific part of the entity.
- customparticleline{particle=reddust;amount=5;color=#feff90;ys=2.5;vd=1.0;hd=-1.0;idoy=true;distanceBetween=0.5;tyo=1.25} @pir{r=10} ~onTimer:5
Use setthreattarget to clear the activemobs threattable and add {a=double} targeter to the threat. Default amount is 65536.
To clear the threattable and trigger the dropCombat Event use:
Swap location of caster and target. Use keeptargetyaw=kty false/true or keepcasteryaw=kcy false/true to keep the original direction or not.
Use this mechanic to stun the target.
Where duration=d=
how many ticks the target will be stunned and facing=true/false
if yaw pitch of entity shall remain. gravity=true/false
false(default) turn off gravity while the entity is stunned. In addition there is the isstunned condition. Look at Conditions. If stopai is used. The ai of the mob will be disabled while playing the stun and reapplied afterwards.
Use this mechanic to add ax,ay,az to the targetlocation. Use ranged value in amount option. Use leashtocaster(leash/lc) to leash the summoned mob to the caster.
Summon 2 to 20 mobs of type mobname.
This example do not check for a safeplace it will spawn the mob no matter if its in block or such. If you want to use safeplace add noise. Example:
This example shows how to spawn mobs relative to the direction of the targeted mob:
ued=useEyeDirection=EyeDirection;ifb=inFrontBlocks=inFront
Use setowner (true/false) to set the owner to the mob which casted the custumsummon skill.
This summon the mob mobname and set its owner to the mob which casted the skill.
Use tag
option to add a parsed string to the scoreboard of the summoned mob. Variables are allowed and are parsed.
This summon the mob mobname and add the uuid of the target to the summoned mobs scoreboard.
Use invisible=inv
option to summon the mob invisible.
Use this mechanic to add oxygen to the LivingEntity.
a = amount =
the amount of oxygen that will be added. A player has a usual max air amount of 300. A amount of 20 gives about 1 bubble air.
Add specific amount of food to the players foodlevel.
a = amount =
the food amount. The amount of 1 add 1/2 foodlevel.
Use this mechanic to remove all or a specific potion from the targeted entity. Use removepotion or cure.
t = type = p = potion =
ALL by default. Use "ALL" to remove all effects or use a single effect or a list like: p=INVISIBILITY,SPEED,HEAL
Use this mechanic for a temporary mythicmobs damage mechanic fix. See http://www.mythicmobs.net/index.php?threads/skill-damage-bypassed-armour.3373/ this thread for details of the issue.
a = amount =
1 by default. The amount of damage applied. 1 = 1/2 heart. Ranged amount possbile: 1to2ia = i = ignorearmor =
false by default. If the armor of the target should be ignored or not.pk = pkb = preventknockback =
false by default. If knockback should be applied or not.pi = preventimmunity =
false by default. If immunity should be used or not.ignoreabs = iabs =
false by default. If absorbation should be ignored or not.percentage=p=
false by default. If true it uses the amount as percent.pcur=pc=
false by fault. Need that percentage=true. If pc is true is use the percent of current health if false it use percent dmg of maxhealth.rdbd=
if used the damage of the skill is reduced by blockdistance. Ex: rdbd=0.01 reduces the damage by 1% per block.
This is a fix for custom player heads for 1.8.8 as it appeard to not work with mm versions greater than 2.5.1
skull=s=
a valid MythicMobsItem to equip on head.
Example:
mob yml:
Monkey:
Type: zombie
Display: 'a MythicMobs Monkey'
AIGoalSelectors:
- 0 clear
Skills:
- equipskull{skull=Pirate} @self ~onSpawn 1
item yml:
Pirate:
Id: 397
Data: 3
Options:
SkinTexture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmVmMDEyOTdlMmUxYWNkMDQ4ODJhMGM0NGU0OGYxZjE1Y2JiYTI1ODJmOTFiMDgxYzkyOTIwZmVkOGYzMjIwIn19fQ====
armor=
all / helmet / chest / leggings / boots / hand / offhand - can be single name or all or a listsignal=
name of the signal which will be send to the target if set.
armor=
all / helmet / chest / leggings / boots / hand / offhand - can be single name or all or a listdamage=
armor damage amount as integer or as ranged value for ranged value use "to".signal=
name of the signal which should be send to mob if an armor part is broken. dont set it if you dont want a signal to be send.
Example:
dmgpig:
Type: pig
Display: 'DontHitMe'
Health: 500
Damage: 1
Faction: neutral
Despawn: true
AIGoalSelectors:
- 0 clear
- 1 randomstroll
- 2 float
Skills:
# this will damage the whole armor and handitem & offhanditem with damage value of 20
- damagearmor{armor=all;damage=20;signal=armorbroken} @target ~onDamaged >0 1
# this will damage only the chest with a random value between 1 to 20
- damagearmor{armor=chest;damage=1to20;signal=armorbroken} @target ~onDamaged >0 1
# this will repear hand,offhand,helmet items with a random value between 20 to 40
- damagearmor{armor=hand,offhand,helmet;damage=-20to-40;signal=armorbroken} @trigger ~onDamaged >0 1
- message{msg="Oh dear! A part of your armor is gone!"} @trigger ~onSignal:armorbroken
- grenade{size=3;amount=1;fuse=20;fire=false;breakblocks=true;utime=60;ueffect=true;undotnt=true;ued=boolean}
size=
radius of the explosionamount=
how many grenades the mob throw at oncefuse=
how long the fuse tickfire=
should there be fire too? true / falsebreakblocks=
damage the blocks? true / falseutime=
how many ticks until restore the blocksueffect=
should there be a restore effect? true / falseundotnt=
should the blocks be restored at all? true / falseued=
if true the grenade is thrown in eye direction. if false the grenade is thrown in target direction
Example:
grenadezombie:
Type: zombie
Health: 20
Skills:
- grenade{size=2;amount=1;fuse=20;fire=false;breakblocks=true;utime=40;ueffect=true;undotnt=true} @target ~onTimer:200
- grenade{size=2;amount=1;fuse=60;fire=false;breakblocks=false;utime=40;ueffect=false;undotnt=false} @pir{r=20} ~onTimer:60
min=
lowest levelmax=
highest levelself=
true = targetself / false = target any other targeted mob
Example:
RndLvlMob:
Type: zombie
Skills:
- setrandomlevel{min=1;max=10;self=true} @self ~onSpawn 1
items=
Can be a list of valid spigot items. One of the items shuffled by random will be tried to steal from the targeted player. Use "ANY" for any item.failsignal=
name of the signal that should be send to the mob if the stealing failed. default signal = steal_failoksignal=
name of the signal that should be send to the mob if the stealing was good. default signal = steal_ok
Use this skill and the mob drop all its stolen items. Good idea to use it on death. Or all the items are gone with the mob to herobrine.
There is a buildin cancel damage condition if the mob should make no damage while try to steal. It can be activated if the stance of the mob is "gostealing" So if the mob have the gostealing stance set, it will do no damage to its target.
Thief example:
mob yml:
thief:
Type: villager
Display: 'Thief'
Health: 20
Damage: 0
Modules:
ThreatTable: true
Options:
AlwaysShowName: false
Despawn: true
AIGoalSelectors:
- 0 clear
- 1 meleeattack
- 2 avoidskeletons
- 3 avoidzombies
- 4 randomstroll
- 5 float
AITargetSelectors:
- 0 clear
- 1 players
Skills:
- setstance{stance=gostealing} @self ~onSpawn 1
- skill{s=FleeGotSomeStuff;sync=true} ~onSignal:steal_ok 1
- skill{s=FleeButGotNothing;sync=true} ~onSignal:steal_fail 1
- skill{s=Steal} ~onTimer:60 >0 1
- DropStolenItems ~onDeath 1
skillfile:
Steal:
Cooldown: 1
TargetConditions:
- distance{d=<3} true
- lineofsight true
Conditions:
- stance{s=gostealing} true
Skills:
- steal{items=DIAMOND_SWORD:1,IRON_SWORD:1,DIAMOND:3,EMERALD:3;failsignal=steal_fail;oksignal=steal_ok} @NearestPlayer 0.75
FleeGotSomeStuff:
Cooldown: 1
Skills:
- setstance{stance=flee} @self
- RunAIGoalSelector{s=clear}
- delay 2
- RunAIGoalSelector{s=fleeplayers}
- effect:smoke @self
- potion{type=SPEED;duration=200;level=1} @self
- delay 400
- effect:smoke @self
- remove @self
FleeButGotNothing:
Cooldown: 1
Skills:
- setstance{stance=flee} @self
- RunAIGoalSelector{s=clear}
- delay 2
- RunAIGoalSelector{s=randomstroll}
- delay 400
- effect:smoke @self
- remove @self
Player only condition Check if the player is digging into a block. Aliases ismining, digging, isdigging.
Player only condition Check if the player has the defined achievement or achievements.
- achievement=ach=achievements: valid achievement entry or an array. valid achievements
Player only condition Check if the player has the defined advancement or advancements.
- advancement=adv=advancements: valid advancement entry or an array. valid advancements
- motiondirection{directions=[MOTIONDIRECTIONTPYE]||[MOTIONDIRECTIONTYPES];store=[BOOL];action=[BOOL]||[CAST]||[CASTINSTEAD]}
Conditions && TargetConditions Checks in which direction the entity is moving to. Regardless its eyedirection. Possible directions: LEFT, FORWARD_LEFT, FORWARD, FORWARD_RIGHT, RIGHT, BACKWARD_RIGHT, BACKWARD, BACKWARD_LEFT or leave blank for any. The directions can also be in a list like: left,forward_left,forward_right
Use as Conditions && TargetConditions Check the nbt more advanced than testfor can do. With the ability to ignore nbt by adding id:ignore or use ranged values "rd:1to5" or "rd:>0" or rd:<1 or simple a usual value like 1 Please use "(" && ")" instead of "{" && "}" for compatibility issues. Look at the examples:
Ex: - cmpnbt{nbt=(Fire:"rd:>50")}
condition is true if the entity is on fire for more than 50 ticks.
Ex: - cmpnbt{nbt=(Fire:-1)}
condition is true if the entity is not on fire.
Ex: - cmpnbt{nbt=(Rotation:["rd:<361","rd:>65"])}
condition is true if the pitch is above 65 (looks at ground) while yaw is ignored because its always smaller than 361.
Ex: - cmpnbt{nbt=(ArmorItems:[(),(),(),(id:"minecraft:diamond_helmet",Count:"rd:>0")])}
this condition is true if the entity wears nothing but atleast 1 helmet made out of diamonds. :)
Ex: - cmpnbt{nbt=(ArmorItems:[(),(),(id:ignore),(id:"minecraft:diamond_helmet",Count:1)])}
this condition is true if the entity wears no shoes, no trousers but a helmet made of diamonds and something else on its chest.
To use as Conditions condition. Check if the caster is riding or driving another entity. Use an array zombie,skeleton,creeper
or a single type boat
or ANY
for any entity.
Ex: - hasvehicle{types=ANY}
condition is true if the caster is riding, driving an entity.
Ex: - hasvehicle{types=zombie,boat,skeleton}
condition is true if the caster is riding, driving one of the types.
To use as Conditions && TargetConditions condition. Check the generic movementSpeed.
Ex: - movespeed{rage=<0.51}}
condition is true if the speed is below 0.51.
To use as Conditions && TargetConditions, PLAYER ONLY condition. Get the players bow tension.
Possible range is -1 for nothing at all, or 0.0 to 1.0. Where 1 is full strength. If unsure add debug=true
and check the values in console.
While getbowtension
check the strength while the bow is drawn, lastbowtension
get the last strength of the entity's bowtension if there was any. To add skills ot the entity while draw the bow use getbowtension, if the entity shoot the bow use lastbowtension to get the strength the arrow is fired.
Ex: - getbowtension{range=>0.9};debug=true}
condition is true if the tension of the bow is more than 90% of its full strength.
To use as Conditions && TargetConditions, PLAYER ONLY condition. Unlike getindicator this condition do not return a realtime value, instead it returns the indicator status of the last armswing. Range is 0.0f to 1.0f. Default value is >0
Ex: - getlastindicator{value=1}}
condition is true if the indicator was fully loaded on last swing.
To use as Conditions && TargetConditions, PLAYER ONLY condition. Checks the status of the crosshair damageindicator.
Range is 0.0f to 1.0f. Default value is <1.1
Ex: - getindicator{value=<0.51}}
condition is true if the indicator is not at more than 50%.
To use as Conditions && TargetConditions, PLAYER ONLY condition. Checks if the selected item is on cooldown. value=0 if not.
Ex: - oncooldown{v=1to10};action=CASTINSTEAD lowcooldownskill}
To use as Conditions && TargetConditions, return true if caster or target match the testfor. See https://www.digminecraft.com/game_commands/testfor_command.php PLEASE NOT THE "" for vc option!
To use as TargetConditions, return true if caster & target location in same world.
To use as Conditions, return true if the location is ON a solidblock.
To use as Conditions, return true if the location is INSIDE a solidblock.
To use as TaretConditions or Conditions, return true if the entity is jumping.
To use as TaretConditions or Conditions, return true if the entity is crouching.
To use as TaretConditions or Conditions, return true if the entity is sleeping.
To use as TaretConditions or Conditions, return true if the entity is running.
To use as TargetConditions, return true if caster & target have same mythicspawner.
Checks if the mythicmobs mob comes from a mythicspawner. Use a List or ANY.
Checks if the player is goggling at something. See playergoggle mechanic.
Checks if the player is spinning around. See playerspin mechanic.
To use as TargetConditions, checks if the caster is riding its target.
Checks if the the entity exists. Only makes sense as TargetCondtions though. Useful for triggers where its not always sure that there will be an entity as target. Like ~onTimer and such stuff.
Example
TargetConditions:
- ispresent{action=true}
# true if the target is an entity and it exists.
By default (without range option) checks if the entity is burning or not. If range is given, return true if the burning ticks match the range.
- eir{isb=[BOOLEAN];types=[ALL]||[SINGLETEXT]||[ARRAY];amount=[RANGEDVALUE];radius=[VALUE];action=[boolean]}
Check if amount entities of type "ALL" or "ENTITYTYPE" or "ENTITYTYPES" are in radius.
- leir{isb=[BOOLEAN];types=[ALL]||[SINGLETEXT]||[ARRAY];amount=[RANGEDVALUE];radius=[VALUE];action=[boolean]}
Check if amount living entities of type "ALL" or "ENTITYTYPE" or "ENTITYTYPES" are in radius.
Check if amount players are in radius.
Example
Conditions:
- eir{types=ARROW,DIAMOND_SWORD;amount=1to10;radius=10}
# true if there are 1 to 10 dropped items of type arrow and diamond_sword around.
- leir{types=ZOMBIE,SKELETON,CREEPER;amount=>5;radius=20}
# true if there are more than 5 entities of the type list around.
- pir{amount=>0;radius=64}
# true if there is atleast 1 player in radius of 64 blocks.
- eir{types=all;isb=true;amount=>0;radius=10}
# true if there is atleast 1 other entity in radius of 10 blocks & not on
same block as source location.
Check the player only time.
Check the player only weather.
Returns true if the mobs owner is online, alive or in same world.
Determines if the caster or target (if used in TargetConditions) is in the faction or in one of the factions if used as array. Any mythicmobs
variable avail at runtime can be used. Eg: faction=<mob.stance>
Example
Conditions:
- infaction{faction=SomeFaction;action=true}
- infaction{faction=aFaction,anotherFaction,yetAnotherFaction;action=true}
#####- samefaction{faction=[STRING]or[ARRAY];action=[BOOLEAN]}
Determines if the caster AND target are in the same faction or in one of the factions if used as array. Any mythicmobs variable avail at
runtime can be used. Eg: faction=<trigger.name>
Example
TargetConditions:
- samefaction{faction=SomeFaction;action=true}
- samefaction{faction=aFaction,anotherFaction,yetAnotherFaction;action=true}
This condition can determine if the target is looking at the caster. Therefor a field-of-view-ratio defined in fov as a double is used. For normal sized entities a fov-ratio of 1.999D (used by default) is a good value to use. You can also adjust the Yoffset by define yo. For the standard sized entities a yo of -0.4D (used by default) is a good value. Usually the default offsets working very well on almost all entities. But if you need to adjust them, you can set debug=true and if the condition is used the fov and vecY offsets are written into the console. With that info you can easy adjust the values to your need.
Example:
mobfile:
WeepingMonkey:
Health: 500
Type: zombie
Display: "Weeping Monkey"
Skills:
- skill{s=freeze} @pir{r=32} ~onTimer:20
skillfile:
freeze:
Conditions:
- isstunned{action=false}
TargetConditions:
- infront{view=45}
- lookatme
Skills:
- stun{d=60;facing=true} @self
Use this condition to determinate the relative direction to the target. Use this condition in TargetConditions. Where 180 is the right side. 90 degree is straight infront and 270 degrees are exact behind. If you use angle=0to180
the it compares if the target comes from infront, where angle=90to270
means the targeted entity is somewhere on the right side of the caster. etc...
Example:
skillfile:
targetsonleft:
TargetConditions:
- relativedirection{angle=>315}
- relativedirection{angle=<45}
Skills:
- message{msg="Found <trigger.name> on my left!"} @world
mobfile:
Monkey:
Health: 500
Type: zombie
AITargetSelectors:
- 0 clear
AIGoalSelectors:
- 0 clear
- 1 randomstroll
Display: "Me Monkey"
Skills:
- skill{s=targetsonleft} @pir{r=20} ~onTimer:20
- ownsitem/iteminhand{list="where=[ANY||HAND||ARMOR||INVENTORY];material=[ANY||MATERIALTYPE];amount=[RANGEDVALUE];lore=[LORETEXT]";action=[BOOLEAN]}
- ownsitemsimple{where=[ANY||HAND||ARMOR||INVENTORY];material=[ANY||MATERIALTYPE];amount=[RANGEDVALUE];lore=[LORETEXT];action=[BOOLEAN]}
Works as target or entitycondition. A single value or a boolean expression argument can be given (see below for some examples). This condition works on all living entities, where the INVENTORY where type only works for players.
NOTE: The ownsitemsimple variant is used to only add 1 item to compare. There is no list and no "" but also no boolean expression.
ownsitem{list="where=HAND;material=IRON_SWORD;amount=1"&&"where=ARMOR;material=DIAMOND_CHESTPLATE;amount=1"
Returns true if the entity holds an iron sword AND wears a diamond chestplate.
ownsitem{list="where=HAND;material=IRON_SWORD;amount=1"||"where=ARMOR;material=DIAMOND_CHESTPLATE;amount=1"
True if the entity holds an iron sword OR wears a diamond chestplate.
ownsitem{list="where=HAND;material=IRON_SWORD;amount=1"&&"where=ARMOR;material=DIAMOND_CHESTPLATE;amount=1"||"where=INVENTORY;material=DIRT;amount=1"
True if the player holds an iron sword AND wears a diamond chestplate OR has 1 piece of dirt in its inventory.
Checks if the entity is in motion. Do not work for players or none living entities.
Check the entities direction. Possible values: NORTH, NORTH_EAST, EAST, SOUTH_EAST, SOUTH, SOUTH_WEST, WEST, NORTH_WEST
If cs (compareself) = true the TargetCondition check if the target's uuid is in the casters stance. If cs = false the condition check if the stance is set in the targeted entity if its a mythicmobs mob.
If you want to use the customtargeters, you need atleast MythicMobs 4.3 or if you only have the lastest release, you need a patched 4.2. Place this jar in your pluginsfolder and restart your server. It will patch all the necessary things in MythicMobs to use CustomTargeters. https://github.com/BerndiVader/MythicMobsPatcher
Get the location length size infront of the targeted entitys motion.
Get the nearest block location at crosshair or the location length amount of blocks away.
Returns the crosshair targeted entity or location if caster is a player
If caster mob have an owner it returns the target of the owner or if owner is player the crosshair target.
Returns the entity if the lastdamage was done by an entity.
Returns the target of the targeted entity. In case of target is a player the crosshair target.
Returns the target of the triggered entity. In case of target is a player the corsshair target.
Returns the location length blocks away from the direction the caster is looking. @eyedirection{l=20}
returns the location 20 blocks infront of the direction the caster is looking at.
Returns the location length blocks away from the direction the trigger is looking. @triggerdirection{l=20}
returns the location 20 blocks infront of the direction the trigger is looking at.
Returns the location length blocks away from the direction the target is looking. @targetdirection{l=20}
returns the location 20 blocks infront of the direction the target is looking at.
Returns the location length blocks away from the direction the owner is looking. @ownerdirection{l=20}
returns the location 20 blocks infront of the direction the owner is looking at.
BowMonkey:
Type: skeleton
Display: "&cBowMonkey"
AITargetSelectors:
- 0 clear
- 1 monsters
Skills:
- skill{s=DamageCauseMeele} @self ~onDamaged
- skill{s=DamageCauseProjectile} @self ~onDamaged
- skill{s=KillCauseProjectile} @trigger ~onKill
- skill{s=KillCauseMeele} @trigger ~onKill
MeeleMonkey:
Type: zombie
Display: "&cMeeleMonkey"
AITargetSelectors:
- 0 clear
- 1 monsters
Skills:
- skill{s=DamageCauseMeele} @self ~onDamaged
- skill{s=DamageCauseProjectile} @self ~onDamaged
- skill{s=KillCauseProjectile} @trigger ~onKill
- skill{s=KillCauseMeele} @trigger ~onKill
KillCauseProjectile:
TargetConditions:
- lastdamagecause{cause=PROJECTILE;damager=ANY;action=TRUE}
Skills:
- message{msg="Sorry <trigger.name> i am no Wilhelm Tell though!"} @world
KillCauseMeele:
TargetConditions:
- lastdamagecause{cause=ENTITY_ATTACK;damager=ANY;action=TRUE}
Skills:
- message{msg="I killed <trigger.name> just with my hands only!"} @world
DamageCauseProjectile:
Conditions:
- lastdamagecause{cause=PROJECTILE;damager=ANY;action=TRUE}
Skills:
- message{msg="Someone try to shoot me down!"} @world
DamageCauseMeele:
Conditions:
- lastdamagecause{cause=ENTITY_ATTACK;damager=ANY;action=TRUE}
Skills:
- message{msg="Help! It punch me in my face!"} @world