** 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"
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
Summon a floating item, block, entity or mythicmobs mob relative to caster or static at location.
Almost all options like in mythicprojectile are useable.
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
Will drop 2 dirt regardless the item is in an stack or there are just two single dirtstacks in the inventory.
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.
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;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
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{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.
- 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"}
shootattack:
- 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.
Use this mechanic to compare conditions and targetconditions inside of skills and execute a skill if meet or another if not meet.
- castif{c="onground true && outside true && playerwithin{d=10} true";tc="onblock grass true && outside true";meet=meetSkill;meettargeter="@[any_targeter]";else=elseSkill;elsetargeter="@[any_targeter]"} @trigger ~onDamaged
conditions=c=
(Optional) The conditions to compare with the caster. Can be an arraylist split by &&targetconditions=tc=
(Optional) The conditions to compare with the targeted entity. Can be an arraylist split by &&meet=
(Optional) The skill to be executed if the conditions are meet.else=
(Optional) The skill to be executed if the conditions not meet.meettargeter / elsetargeter=
(Optional) Renew the meet / else skills targeter if present. Surrounded with ""!! The meet and else skills inherit the skilldatas like targeter, caster, targets from the parent skill.
Now possible, to use && || expressions. Example:
- castif{c="onground true && outside true || playerwithin{d=10} true";tc="onblock grass true && ouside true";meet=meetMetaSkill;elese=elseMetaSkill} @trigger ~onDamaged
This parse the c condtions lets say the mob is outside onground but player not within 10: (true&&true)||false condition will meet. Same work for the targetcondtion too.
- 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.
- 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.
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.
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.
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.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
To use as TargetCondiitons or Conditions, return true if the entity is jumping.
To use as TargetCondiitons or Conditions, return true if the entity is crouching.
To use as TargetCondiitons or Conditions, return true if the entity is sleeping.
To use as TargetCondiitons 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.
Checks if the entity is burning or not.
Check if amount entities of type "ALL" or "ENTITYTYPE" or "ENTITYTYPES" are in radius.
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.
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]}
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.
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.
Use this condition to check if the target is attackable by the caster. Only avail as TargetConditions / CompareConditions
Use this condition to check if the target is behind the caster or infront of the caster. Use view to define an angular, where 90 is frontal facing and left/right side is 0. A view of 45 will make it have a view field of 45° in facing direction or behind. Use 0 or 1 to check is its infront or behind no matter what angle.
Check if the location is in a MobArena arena. Requires MobArena plugin to work.
Check if the target is in a certain biome.
biome=b=
A list with valid biome names.action=a=
true / false
Check if the target is stunned (true) or not (false) The example will match if the target isnt stunned. Please notice that this can be used at the caster, or as TargetConditions. If used as TargetConditions the targeter for the metaskill is important.
Check what caused the last damage to the MythicMob mob. cause and damager can be a single value or a List
cause=c=
The cause of the last damage. Valid is "ANY" or Bukkit's DamageCause https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/entity/EntityDamageEvent.DamageCause.htmldamager=attacker=
The EntityType of the attacker. Valid is "ANY" or Bukkit's EntityTypes https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/entity/EntityType.html
- mobsinradius{mobtypes=mythicmobs1,mythicmobs2,mythicentity1,mythicentity2;a=5to10;r=20;action=TRUE}
Use this condition to check how many mobs are in radius.
mobtypes=types=mobs=mob=t=m=
The mythicmobs or mythicentities to check. Or use ALL for any mythicmobs mob.amount=a=
ranged value to match. example: a=<20 or a=>10 or a=5 or a=5to10 for rangeradius=r=
radius to checkaction=
true/false
This condition can be used on every allow/deny flag. If region has no flag set, it inherits the flag of the parent region.
This condition can be used to check if the region denys the spawning of some entitytypes. If region has no flag set, it inherits the flag of the parent region.
This condition can be used to check if the faction has a specific flag set to true or false. Here is a list of all flagnames: animals, monsters, peaceful, endergrief, explosions, firespread, friendlyfire, infpower, offlineexplosions, open, permanent, powergain, powerloss, pvp, zombiegrief
This condition meets if the mob has a target (true) or no target (false).
This condition checks for the vertical distance between target and mob. Use ">" for greater "<" smaller or "to" for range.
Example:
Mobfile:
Monkey:
Type: zombie
Display: "&cMythicMobs Monkey"
Damage: 1
Health: 10
Armor: 1
DamageModifiers:
- FALL 0.25
Skills:
- skill{s=jumpToTarget} @target ~onTimer:50 1
Skillfile:
jumpToTarget:
Conditions:
- hastarget{a=true}
TargetConditions:
- distance{d=<4} true
- hdistance{d=2to3;a=true}
Skills:
- leap{velocity=120} @target
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
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.
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