Recipe Flags

WHAT ARE FLAGS ?
  Flags are the stuff that make a recipe very special! You can add various features to a recipe by using flags.
  For examples see advanced recipes.html.

USING FLAGS
  Flags can be added in 4 'zones':
  - at the beginning of the file - which are copied to all recipes from that file.
  - after recipe type (CRAFT, COMBINE, etc) - where they affect that specific recipe, you may even overwrite file flags for that specific recipe!
  - after recipe ingredients - to apply basic item requirements to a specific ingredient.
  - after recipe's individual results - to apply flags for the result items.

ABOUT ARGUMENTS
  Flags have arguments but not always are they all required.
  Arguments enclosed between < and > are required and those enclosed between [ and ] are optional.
  Some arguments may have 'or false', that means you can just type false in there to make it do something special (most likely disable the flag or a feature)

ALIASES
  They're just other names for the flag that you can use, they have no special effect if used, only for your preference.

Contents

^ Contents

@addtobook <book id> [volume <num>]

    Recipe


    This flag is a shortcut for quickly adding recipe(s) to books.
    Using this flag more than once will overwrite the previous one.

    The book must exist first, you must create it, see 'recipe books.html' for how to do that.

    The '<book id>' argument must be an existing book's ID/filename, case insensitive.
    Optionally you can specify which volume to add it to, otherwise it will be added in its 'recipes' node and left to be added automatically to the latest volume with free slots.

    NOTE: To properly remove recipes from books you must first remove this flag (to avoid re-adding them) then go to the book's YML file and remove them from there as well.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @addtobook testing book // matches a 'Testing Book.yml' book for example
      @addtobook random stuff volume 3 // matches a 'Random Stuff.yml' with volume 3 book for example

    Aliases: @recipebook
^ Contents

@applyenchantment <arguments>

    Result


    Applies the enchantments from books onto the result
    Using this flag more than once will overwrite the previous one.

    As '<arguments>' you must define at least one feature to copy from the ingredient to the result.
    Arguments can be one or more of the following, separated by | character:
      ingredientaction <action> = (default largest) merge action for all of the ingredients
      resultaction <action>     = (default largest) merge action applied to the result
      ignorelevel               = Ignore enchantment level restrictions
      maxlevel <level>          = Restrict the maximum level
      onlybooks                 = Only copies enchantments from Enchanted Books. Without this, all item enchantments will be copied

    Actions include:
      largest = Use the largest of the two enchantments if two are merged (Sharpness I + Sharpness III = Sharpness III)
      combine = Add the enchantment levels together (Sharpness I + Sharpness III = Sharpness IV)
      anvil   = Combine enchantments similar to anvils (Sharpness I + Sharpness II = Sharpness II) and (Sharpness II + Sharpness II = Sharpness III)



    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @applyenchantment
      @applyenchantment resultaction combine // Combines the levels with the resulting item's enchants
      @applyenchantment ingredientaction combine | ignorelevels | onlybooks // Combines all ingredients levels from books while allowing higher than vanilla allowed enchants

    Aliases: @applyenchant, @applyenchantments, @applyenchants
^ Contents

@banneritem <basecolor> | [pattern] <color> | [...]

    IngredientResult


    Creates a custom banner
    Using this flag more than once will overwrite the previous one.

    The <basecolor> argument is required
      Values: white, orange, magenta, light_blue, yellow, lime, pink, gray, light_gray, cyan, purple, blue, brown, green, red, black

    Patterns can be added after the base color and are separated by the '|' character
      [pattern] is the banner pattern type
        Values: name index.html#bannerpattern
      <color> is required for each pattern, color values are the same as <basecolor>
      Multiple patterns can be added


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @banneritem black
      @banneritem red | circle_middle blue | skull yellow
      @banneritem green | half_horizontal yellow | circle_middle orange

    Aliases: @banner
^ Contents

@biome <types> | [fail message]

    RecipeResult


    Sets the biome required to allow crafting.
    Using this flag more than once will overwrite the previous one.

    For '<types>' you can list the biomes you want to allow or disallow.
    It needs at least one biome name and you can add more separated by , character.
    Also you can disallow biomes by prefixing them with ! character.
    Biomes: name index.html#biomes


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @biome jungle, jungle_hills
      @biome !mushroom_fields, !mushroom_field_shore
^ Contents

@blockpowered [arguments]

    RecipeResult


    Requires the workbench or furnace block to be powered by redstone.

    Optionally you can use the following arguments separated by | character and in any order:
      indirect          = check for indirect redstone power, through other blocks.
      failmsg <message> = overwrite the failure message.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @blockpowered
      @blockpowered failmsg <red><bold>YOU HAVE NO (indirect) POWAAH!!! | indirect

    Aliases: @poweredblock, @blockpower, @redstonepowered
^ Contents

@bookitem title [text]

@bookitem author [text]

@bookitem generation <generation>

@bookitem addpage [text]

    IngredientResult


    Changes book's contents.
    Using this flag more than once will configure the same flag.

    Supports colors and format (e.g. <red>, <blue>, &4, &F, etc).

    Use 'title <text>' and 'author <text>' only on written books, it doesn't work on book and quill therefore they're optional.
    Title and author must not exceed 64 characters, colors included (2 chars each).

    Use generation <generation> to set the book's generation. Defaults to ORIGINAL
      <generation> values: original, copy_of_original, copy_of_copy, tattered

    Use 'addpage <text>' to add a new page, the text can contain \n to add new lines to it, but it mainly word-wraps itself.
    Page contents must not exceed 256 characters, colors (2 chars each) and new line (1 char each) included.
    Optionally you can leave the text blank to add a blank page.

    Supported items: written book, book and quill.

    Allows quotes to prevent spaces being trimmed.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @bookitem title The Art of Stealing
      @bookitem author Gray Fox
      @bookitem generation COPY_OF_ORIGINAL
      @bookitem addpage <bold>O<reset>nce upon a time...
      @bookitem addpage // added blank page
      @bookitem addpage \n\n\n\n<italic>      The End.
      @bookitem title " The Art of Stealing " // Quotes at the beginning and end will be removed, but spaces will be kept.
      @bookitem author "   Gray Fox   "
      @bookitem addpage " <bold>O<reset>nce upon a time... "

    Aliases: @book
^ Contents

@broadcast <text> | [permission]

    RecipeResult


    Prints a chat message for all online players.
    Using this flag more than once will overwrite the previous message.

    Optionally you can set a permission node that will define who sees the message.

    Colors are supported (<red>, &5, etc).
    You can also use these variables:
      {player}         = crafter's name or '(nobody)' if not available
      {playerdisplay}  = crafter's display name or '(nobody)' if not available
      {result}         = the result item name or '(nothing)' if recipe failed.
      {recipename}     = recipe's custom or autogenerated name or '(unknown)' if not available
      {recipetype}     = recipe type or '(unknown)' if not available
      {inventorytype}  = inventory type or '(unknown)' if not available
      {world}          = world name of event location or '(unknown)' if not available
      {x}              = event location's X coord or '(?)' if not available
      {y}              = event location's Y coord or '(?)' if not available
      {z}              = event location's Z coord or '(?)' if not available
        Relative positions are supported: {x-1},{y+7},{z+12}
      {rand #1-#2}     = output a random integer between #1 and #2. Example: {rand 5-10} will output an integer from 5-10
      {rand #1-#2, #3} = output a random number between #1 and #2, with decimal places of #3. Example: {rand 1.5-2.5, 2} will output a number from 1.50 to 2.50
      {rand n}         = reuse a random output, where n is the nth {rand} in a recipe used excluding this format

    Allows quotes to prevent spaces being trimmed.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @broadcast {playerdisplay} <green>crafted something!
      @broadcast '{player}' crafted '{recipename}' at {world}: {x}, {y}, {z} | ranks.admins
      @broadcast "  Extra space  " // Quotes at the beginning and end will be removed, but spaces will be kept.

    Aliases: @announce, @msgall
^ Contents

@bundleitem <item>[:data][:amount]

@bundleitem item:<name>

    IngredientResult


    {flag} Adds a stack of items to a bundle.
    This flag can be used more than once to add more items to bundle.

    You can use a predefined item from an item recipe:
      Format = item:<name>
      <name> = The name of an item recipe defined before this flag.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @bundleitem dirt:0:40 // Add 40 dirt
      @bundleitem diamond_sword:1500 // Add an almost destroyed diamond_sword
      @bundleitem item:test sword // Will use the item from the 'test sword' recipe, assuming it's defined.

    Aliases: @bundle
^ Contents

@cloneingredient <arguments>

    Result


    Clones the ingredient matching material of the result used on.
    Using this flag more than once will overwrite the previous one.

    As '<arguments>' you must define at least one feature to copy from the ingredient to the result.
    Arguments can be one or more of the following, separated by | character:
      data [<mod> <value>]                   = copy data value with optional modifier, <mod> can be +,-,/,* or % as math operator and <value> a number.
      amount [<mod> <value>]                 = copy stack amount with optional modifier, <mod> can be +,-,/,* or % as math operator and <value> a number.
      enchants                               = copies the enchantments.
      name                                   = copies the custom item name.
      lore [number or text or regex:pattern] = copies all the custom item lore/description unless conditions are added to copy specific lines.
        [number]                             = copies only the lore on line number. More lore conditions can be added to copy more lines
        [text]                               = copies any lore lines that contain the text
        [regex:pattern]                      = copies any lore lines that match the regex pattern. Escape for '|' is a double '||'. Any double pipes will be converted back to single pipes for regex parsing.
      special                                = copies item's special feature like leather armor color, firework effects, book contents, skull owner, etc.
      allmeta                                = copies enchants, name, lore and special.
      all                                    = copies entire item (data, amount, enchants, name, lore, special)
      allowedtypes <type, ...>               = set material types other than the result type that can be cloned from

    NOTE: If the result's material is present in the ingredients more than once, when using the recipe it will clone the details of first item in the grid.

    To apply conditions for ingredients (ranged data values, specific names, etc) then you can use the @ingredientcondition flag too.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @cloneingredient data // just copy data value
      @cloneingredient data +2 // copy data value and add 2 to it
      @cloneingredient amount * 2 // copy amount and multiply it by 2
      @cloneingredient data % 2 // get the remainder from data divided by 2.
      @cloneingredient data | amount | lore // only copy these things
      @cloneingredient all // copy entire ingredient
      @cloneingredient all | allowedtypes stone_axe, iron_axe // copy ingredients from the first ingredient that matches a stone axe, iron axe, or the result type

    Aliases: @clone, @copy, @copyingredient
^ Contents

@command <text or false>

    RecipeResult


    Executes the command when recipe is successful.
    This flag can be used more than once to add more commands to the list.

    Commands are executed server-side, if you add / prefix it will execute the command on the crafter.

    You can also use these variables:
      {player}         = crafter's name or '(nobody)' if not available
      {playerdisplay}  = crafter's display name or '(nobody)' if not available
      {result}         = the result item name or '(nothing)' if recipe failed.
      {recipename}     = recipe's custom or autogenerated name or '(unknown)' if not available
      {recipetype}     = recipe type or '(unknown)' if not available
      {inventorytype}  = inventory type or '(unknown)' if not available
      {world}          = world name of event location or '(unknown)' if not available
      {x}              = event location's X coord or '(?)' if not available
      {y}              = event location's Y coord or '(?)' if not available
      {z}              = event location's Z coord or '(?)' if not available
        Relative positions are supported: {x-1},{y+7},{z+12}
      {rand #1-#2}     = output a random integer between #1 and #2. Example: {rand 5-10} will output an integer from 5-10
      {rand #1-#2, #3} = output a random number between #1 and #2, with decimal places of #3. Example: {rand 1.5-2.5, 2} will output a number from 1.50 to 2.50
      {rand n}         = reuse a random output, where n is the nth {rand} in a recipe used excluding this format


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @command /say I crafted {result}!
      @command kick {player}

    Aliases: @cmd, @commands
^ Contents

@compassitem <worldName> <x> <y> <z> | [requiresLodestone]

    IngredientResult


    Sets the position that a compass points to.

    <worldName> is the name of the world you want to compass to work in.

    <x> <y> <z> are the x, y, and z coordinates you want to point to. <y> being the vertical only matters if you set requiresLodestone option to true

    The following variables may also be used
      {world}          = world name of event location or '(unknown)' if not available
      {x}              = event location's X coord
      {y}              = event location's Y coord
      {z}              = event location's Z coord
        Relative positions are supported: {x-1},{y+7},{z+12}
      {rand #1-#2}     = output a random integer between #1 and #2. Example: {rand 5-10} will output an integer from 5-10
      {rand #1-#2, #3} = output a random number between #1 and #2, with decimal places of #3. Example: {rand 1.5-2.5, 2} will output a number from 1.50 to 2.50
      {rand n}         = reuse a random output, where n is the nth {rand} in a recipe used excluding this format

    [requiresLodestone] is optional and defaults to false:
      Requires a lodestone at the location set
      values: true or false

    Specific items: compass.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @compassitem world 100 65 200 // Will track this location without a lodestone
      @compassitem world 100 65 200 | true // Requires a lodestone to be at x=100, y=65, z=200 for the compass to track this location

    Aliases: @compass
^ Contents

@cooldown <number>[suffix] | [arguments]

@cooldown false

    RecipeResult


    Sets a cooldown time for crafting a recipe or result.
    Once a recipe/result is used, the crafter can not craft it again for the specified amount of time.
    If set on a result, the result will be unavailable to the crafter for the cooldown time but the rest of results and the recipe will work as before.
    NOTE: cooldowns will be saved on server shutdown to maintain longer cooldowns.

    The <number> argument must be a number, by default it's seconds.
    The [suffix] argument defines what the <number> value is scaled in, values for suffix can be:
      s  = for seconds (default)
      m  = for minutes
      h  = for hours
      d  = for days
    You can also use float values like '0.5m' to get 30 seconds.

    Optionally you can add some arguments separated by | character, those being:
      global            = make the cooldown global instead of per-player.
      msg <text>        = overwrites the information message; false to hide; supports colors; use {time} variable to display the new cooldown time.
      failmsg <text>    = overwrites the failure message; false to hide; supports colors; use {time} variable to display the remaining time.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @cooldown 30
      @cooldown 30s // exactly the same as the previous flag
      @cooldown 1.75m | failmsg <red>Usable in: {time} // 1 minute and 45 seconds or 1 minute and 75% of a minute.
      @cooldown .5h | global | failmsg <red>Someone used this recently, wait: {time} | msg <yellow>Cooldown time: {time} // half an hour

    Aliases: @cooltime
^ Contents

@crossbowitem <item>[:data][:amount]

@crossbowitem item:<name>

    IngredientResult


    {flag} Adds a charged projectile to a crossbow.
    This flag can be used more than once to add more charged projectiles.
      NOTE: The item must be a valid crossbow projectile, such as an arrow or firework rocket.

    You can use a predefined item from an item recipe:
      Format = item:<name>
      <name> = The name of an item recipe defined before this flag.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @crossbowitem arrow:0:40 // Add 40 arrows
      @crossbowitem firework_rocket // Adds a firework rocket
      @crossbowitem item:customrocket // Will use the item from the 'customrocket' recipe, assuming it's defined.

    Aliases: @crossbow
^ Contents

@custommodeldata <number>

    IngredientResult


    Changes result's custom model data.
    Used with custom datapacks


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @custommodeldata 7
      @custommodeldata 1234567

    Aliases: @modeldata
^ Contents

@displayresult <item or first> | [silentfail]

@displayresult item:<name> | [silentfail]

    Recipe


    Sets the display result of the recipe.
    Using this flag more than once will overwrite the previous message.

    As 'item' argument you can define an item like in a result, material:data:amount.
    Or you can set the item as 'first' to use the first display result available, very useful for multiple results having @ingredientcondition flag on them.

    Optionally, using 'silentfail' argument you can make the recipe print no result if it wouldn't give anything in the case of no results being allowed to craft (by other flags, like @ingredientcondition).

    NOTE: If there is no item to be displayed (all are secret or unavailable), using this with 'first' will not do anything.
    NOTE: Can only be used on workbench recipes because it can not have effect on other recipes.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @displayresult first // displays the first available result
      @displayresult diamond_helmet:120 // damaged diamond helmet

    Aliases: @resultdisplay, @showresult
^ Contents

@enchantedbook <enchant> [level or max]

    IngredientResult


    Adds stored enchantments in a enchanted book item.
    This flag may be used more times to add more enchantments to the item.

    You must specify an enchantment name or id, see name index.html#enchantment
    Optionally you can set the level of enchantment
      Default is the enchantment's start level
      You can use 'max' to set it to enchantment's max level.
      You can use 'remove' to remove the enchantment (from a cloned ingredient)

    You can set a random level using the {rand} format:
      {rand #1-#2}     = output a random integer between #1 and #2. Example: {rand 2-3} will output an integer from 2-3
      {rand n}         = reuse a random output, where n is the nth {rand} in a recipe used excluding this format
        If using a saved random output that includes decimals, it will be rounded to the nearest integer.

    Enchantments are forced and there is no level cap!

    Specific item: enchanted_book


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @enchantedbook efficiency // dig_speed alias
      @enchantedbook damage_all max
      @enchantedbook arrow_fire 127
      @enchantedbook sharpness remove
      @enchantedbook sharpness {rand 3-5} // Gives a random level of 3, 4, or 5

    Aliases: @enchantbook, @enchantingbook
^ Contents

@enchantitem <enchantment> [level]

    IngredientResult


    Enchants the result with the specified enchantment at specified level.
    You must specify an enchantment name, see name index.html#enchantment
    Optionally you can set the level of enchantment
      Default is the enchantment's start level
      You can use 'max' to set it to enchantment's max level.
      You can use 'remove' to remove the enchantment (from a cloned ingredient)

    You can set a random level using the {rand} format:
      {rand #1-#2}     = output a random integer between #1 and #2. Example: {rand 2-3} will output an integer from 2-3
      {rand n}         = reuse a random output, where n is the nth {rand} in a recipe used excluding this format
        If using a saved random output that includes decimals, it will be rounded to the nearest integer.

    Enchantments are forced and there is no level cap!
    This flag may be used more times to add more enchantments to the item.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @enchantitem OXYGEN // enchant with oxygen at level 1
      @enchantitem DIG_SPEED max // enchant with dig speed at max valid level
      @enchantitem ARROW_INFINITE 127 // enchant with arrow infinite forced at level 127
      @enchantitem SHARPNESS remove // removes a sharpness enchant
      @enchantitem SHARPNESS {rand 3-5} // Gives a random level of 3, 4, or 5

    Aliases: @enchant, @enchantment
^ Contents

@explode <arguments or false>

    RecipeResult


    Makes the workbench/furnace/player explode when recipe is crafted.
    This flag can only be declared once per recipe and once per result.

    Replace <arguments> with the following arguments separated by | character:
      power <0.0 to ...>      = (default 2.0) Set the explosion power, value multiplied by 2 is the range in blocks; TNT has 4.0
      fire                    = (default not set) Explosion sets fires.
      nobreak                 = (default not set) Makes explosion not break blocks.
      nodamage [self]         = (default not set) Explosion doesn't damage players or only the crafter if 'self' is specified.
      fail                    = (default not set) Explode if recipe failed as opposed to succeed.
      fuel <start,end,random> = (default start) Causes the explosion to happen at different times. Can only be used on fuel recipes.
    All arguments are optional and you can specify these arguments in any order.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @explode // will explode when recipe succeeds with power 2 and breaks blocks
      @explode nobreak | fire | power 6 // will explode  without block damage but sets fires
      @explode fail | power 2 // will explode when recipe fails
      @explode fuel end // On a fuel recipe, will cause the explosion to happen after the fuel runs out
      @explode fuel random // On a fuel recipe, will cause the explosion to happen sometime randomly before the fuel runs out

    Aliases: @explosion, @boom, @tnt
^ Contents

@failmessage [message or false]

    Recipe


    Changes the message when recipe fails due to failure chance.
    Using this flag more than once will overwrite the previous message.

    The message supports colors (<red>, &3, etc).

    You can also use the following variables inside the message:
      {failchance}    = recipe's chance of failure as a number.
      {successchance} = recipe's chance of success as a number.
      {resultchance}  = result's chance of success as a number.

    The same effect can be achieved by using @message on the fail result item.

    Allows quotes to prevent spaces being trimmed.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @failmessage <red>YOU FAILED, MWaHahahah!
      @failmessage "  Extra space  " // Quotes at the beginning and end will be removed, but spaces will be kept.

    Aliases: @failmsg
^ Contents

@fireworkitem effect <effect data>

@fireworkitem power <0-128>

    IngredientResult


    Configures firework rocket's effects.
    Using this flag more than once will append changes to the item.

    The 'effect' setting adds an effect to the rocket.
    Replace '<effect arguments>' with the following arguments separated by | character.
    Effects can be:
      color <red> <green> <blue>, ...           = (Required) Sets the primary explosion color(s), you can define more colors separated by comma.
      fadecolor <red> <green> <blue>, ...       = (Optional) Color(s) of the explosion fading, you can define more colors separated by comma.
      type <explode type>                       = (Optional) Shape/size of explosion, see: name index.html#fireworkeffect
      trail                                     = (Optional) Adds a trail to the explosion
      flicker                                   = (Optional) Adds a flicker to explosion
    Effects can be listed in any order.
    Colors must be 3 numbers ranging from 0 to 255, basic RGB format.

    The 'power <number 0-128>' value sets how long rocket will fly, each number is 0.5 seconds of flight, default 2, recommended max 4.

    Specific item: firework.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @fireworkitem effect color 0 255 0
      @fireworkitem effect trail | color 255 0 0 | type burst
      @fireworkitem effect color 255 0 200, 0 255 0, 255 128 0 | trail | type ball_large | fadecolor 255 0 0, 0 0 255, 0 255 0
      @fireworkitem power 1

    Aliases: @firework, @fireworkrocket
^ Contents

@fireworkstaritem <effect arguments>

    IngredientResult


    Configures firework charge's effect.
    Using this flag more than once will overwrite previous changes since the item only supports one effect.

    Replace '<effect arguments>' with the following arguments separated by | character.
    Effects can be:
      color <red> <green> <blue>, ...           = (Required) Sets the primary explosion color(s), you can define more colors separated by comma.
      fadecolor <red> <green> <blue>, ...       = (Optional) Color(s) of the explosion fading, you can define more colors separated by comma.
      type <explode type>                       = (Optional) Shape/size of explosion, see: name index.html#fireworkeffect
      trail                                     = (Optional) Adds a trail to the explosion
      flicker                                   = (Optional) Adds a flicker to explosion
    Effects can be listed in any order.
    Colors must be 3 numbers ranging from 0 to 255, basic RGB format.

    Specific item: firework_star.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @fireworkstaritem trail | color 255 0 0, 0 255 0 | type ball_large
      @fireworkstaritem type creeper | color 0 255 0 | fadecolor 255 0 0, 0 255 0 | flicker

    Aliases: @fireworkstar, @fireworkchargeitem, @fireworkcharge, @fireworkeffect
^ Contents

@forchance <group> [chance]% [^]@[flag declaration]

@forchance <chance>% [^]@<flag declaration>

    RecipeResult


    Triggers other flags or groups of flags by specified chance.
    Using this flag more than once will add more flags.

    The 'group' argument defines a group for the flags (not permission related), can be any combination of letters only, no spaces either.
    Grouping flags makes the system pick only one flag from the bunch which means it's also limited to 100% total chance.
    If a group is not defined then the flags will be added to the default group which is a special group that will trigger flags randomly according to their chance, it can trigger all at once or even none at all.

    The 'chance' argument suggests a chance value that can be between 0.01 and 100 and the '%' suffix is required.
    The chance argument is only optional if there's a group defined, then the remaining chance will be evenly split between all flags with undefined chance.

    The 'flag declaration' is a flag like you'd add a flag to a recipe or result, you can even add this flag into itself to make multi-chance structures.
    The flag declaration argument is only optional if there's a group defined and will act as literally nothing.
    Optionally you can prefix the flag declaration with the '^' character to add more flags to the same group (no group is still a group, but a special one).

    NOTE: If using '^' prefix, always use '^' and '@' together like '^@', no space in between.
    NOTE: In a group there must be at least a chance value or a flag declaration.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      // some simple example
      @forchance 25% @explode // 25% chance to explode
      // appending to flags example
      @forchance 80% @command say high chance message!
      @forchance 50% @command say 50-50 message... // this is a totally new flag, individual from the previous one.
      @forchance    ^@command say extra message! // this command will be added to the previous command flag's chance.
      @forchance    ^@summon zombie // This will summon a zombie along with the previous two commands.
      // appending flags with multiple chances example
      @forchance attack 40% @message Zombie Attack! // 40% of the time, it will send 'Zombie Attack!' and summon a zombie
      @forchance attack ^@summon zombie
      @forchance attack 40% @message Skeleton Attack! // 40% of the time, it will send 'Skeleton Attack!' and summon a skeleton.
      @forchance attack ^@summon skeleton
        // The remaining 20% of the time, nothing will happen.
      // all flags in a group must have a total of 100% chance since only one triggers, in this case the chance is calculated and it would be 33.33% for each.
      @forchance mystuff @sound level_up
      @forchance mystuff @sound note_bass
      @forchance mystuff @sound hurt
      // example of empty flag definition as nothing chance
      @forchance dostuff @broadcast yay!
      @forchance dostuff 75% // this sets the 'dostuff' group to do nothing 75% of the time
      // forchanception
      @forchance 50% @forchance 25% @forchance test @broadcast chanception occurred!
      // NOTE all of the examples above can be used in a single recipe if you want, there's no limit to the combinations!

    Aliases: @bychance, @chance
^ Contents

@fordelay <delay> @<flag declaration>

@fordelay @<flag declaration> // Add more flags to the previous one

    RecipeResult


    Run other flags after a delay.
    You can specify this flag more than once.

    The <delay> is the number of ticks that the <flag declarations>'s will be delayed by.
    The '<flag declaration>' must be a flag that will work without affecting the result.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @fordelay 100 @command /summon lightning_bolt ~ ~ ~ // 100 ticks after craft, summon lightning
      @fordelay 100 @forrepeat 5 10 @command /summon lightning_bolt ~{rand -5-5} ~ ~{rand -5-5} // @fordelay can be chained with @forrepeat for even more customization

    Aliases: @delay
^ Contents

@forpermission <permission node> @<flag declaration>

    RecipeResult


    Adds other flags with permission requirements.
    You can specify this flag more than once to add more permissions or more flags to a permission.

    Basically this is a storage for flags and will only trigger them if the crafter has the required permission.
    This is useful for using different values for flags on the same recipe but for different permissions.

    The '<permission node>' argument must be a permission node.
    The '<flag declaration>' must be a flag that will work on the current recipe or result.
    For extra awesomeness you can even add this flag inside itself!

    NOTE: This will trigger all flags that player has permission for which means that flag effects will stack up.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @exp -2                      // you can use original flag as is for players that do not have the permission
      @forpermission farmer.newbs @exp 4   // add 4 exp to the original -2 exp so player will have +2 exp
      @forpermission farmer.uber @exp 50   // add 50 exp to the original -2 exp and also add 4 exp if the player has that node too
      @forpermission farmer.uber @level 1  // if has required  give the crafter 1 level

    Aliases: @forperm
^ Contents

@forrepeat <times to repeat> <delay per repeat> @<flag declaration>

@forrepeat <times to repeat> @<flag declaration> // Defaults to a <delay per repeat> of 0

@forrepeat @<flag declaration> // Add more flags to the previous one

    RecipeResult


    Run other flags multiple times with an optional delay between them.
    You can specify this flag more than once.

    The <times to repeat> is the number of times the contained flags will be repeated.
    The <delay per repeat> is the number of ticks that each repeat after the first will be delayed by.
    The '<flag declaration>' must be a flag that will work without affecting the result.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @forrepeat 5 10 @command /summon lightning_bolt ~{rand -5-5} ~ ~{rand -5-5} // Summon lightning 5 times, with a 10 tick delay between them

    Aliases: @repeat
^ Contents

@gamemode <game mode>

@gamemode <game mode> | [message]

@gamemode false

    RecipeResult


    Requires the crafter to be in a specific game mode.
    Using this flag more than once will overwrite the previous ones.

    Values for <game mode> can be: c or creative, a or adventure, s or survival

    Optionally you can specify a failure message, should be short because it prints in the display result.
    Additionally you can use the following variables in the message:
      {playergm}  = player's game mode (which is not allowed)
      {gamemodes}  = list of required game modes


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @gamemode creative // only creative
      @gamemode s // only survival
      @gamemode a,s // only adventure and survival
      @gamemode false // disable flag, allow all gamemodes

    Aliases: @needgm
^ Contents

@getrecipebook <book id> [volume <num>]

    Result


    Overwrites result with the specified recipe book.

    For the '<book id>' argument you need to specify the book ID/filename, case insensitive.

    Optionally you can set which volume to give, will give first by default, using a bigger number than the number of volumes will pick the last volume.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @getrecipebook recipe stuff // matches a 'Recipe Stuff.yml' book for example.
      @getrecipebook vanilla_recipes volume 2 // matches a 'vanilla_recipes.yml' with volume 2 for example.

    Aliases: @getbook, @bookresult
^ Contents

@group [!]<group>, [...] | [fail message]

    RecipeResult


    Makes the recipe or item require the crafter to be in a permission group.
    Using this flag more than once will add more groups, the player must be in at least one group.

    The '<group>' argument must be a permission group.

    Adding ! character as prefix to individual groups will do the opposite check, if crafter is in group it will not craft.

    You can also specify more groups separated by , character.

    Optionally you can specify a failure message that will be used on the specific group(s) defined.
    The messages can have the following variables:
      {group}   = group that was not found or was found and it's unallowed.
      {groups}  = a comma separated list of the allowed or unallowed groups.

    NOTE: Vault with a supported permission plugin is required for this flag to work.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @group ranks.vip
      @group !jobs.builder | <red>Builders can't use this!
      @group jobs.farmer, jobs.trader | <red>You must be a farmer or trader!
      @group ! ranks.newbs, ! ranks.newbies | <yellow>Noobs can't use this. // valid with spaces too

    Aliases: @groups, @permissiongroup, @permgroup
^ Contents

@height <min or min-max> | [fail message]

    RecipeResult


    Checks if crafter or furnace is at least at 'min' height and optionally at most 'max' height.
    Using this flag more than once will overwrite the previous one.

    Optionally you can overwrite the fail message or you can use 'false' to hide it.
    In the message the following variables can be used:
      {height}  = height or height range


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @height 200 // must be high in the sky
      @height 0-30 | <red>You need to be deep underground!

    Aliases: @depth
^ Contents

@hide <arguments>

    IngredientResult


    Configures hide attributes for items

    Replace '<arguments>' with the following arguments separated by | character.
    Arguments can be:
      attributes     = Hide attributes like Damage
      destroys       = Hide what the item can break/destroy
      enchants       = Hide enchants
      placedon       = Hide where this item can be placed on
      potioneffects  = Hide potion effects on this item
      unbreakable    = Hide the unbreakable state
      dye            = Hides dyes from colored leather armor
      all            = Hides everything
    Arguments can be listed in any order.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @hide attributes // Removes Damage on a sword
      @hide placedon | destroys // Removes placed on line and break/destroy lines
^ Contents

@holditem <item or false> | [conditions]

    RecipeResult


    Makes the recipe require crafter to hold an item.

    This flag can be used more than once to add more items, the player will need to hold one to craft.
    Using the flag more than once with slot conditions will require an item in each slot added.

    The <item> argument can be in this format: material:data

    For [conditions] argument you may further specify what item must be used.
    Conditions must be separated by | and can be specified in any order.
    Condition list:

      slot <slotname>
        Changes the slot that is checked
        Slot name values:
          mainhand: selected hotbar slot. Defaults to this.
          offhand or shield: offhand slot.
          helmet: Helmet slot.
          chest or chestplate: Chestplate slot.
          legs or leggings: Leggings slot.
          boots: Boots slot.
          inventory: Any inventory slot.

      data <[!][&]num or min-max or all or vanilla or damaged or new>, [...]
        Condition for data/damage/durability, as argument you can specify data values separated by , character.
        One number is required, you can add another number separated by - character to make a number range.
        Additionally instead of the number you can specify 'item:data' to use the named data value.
        Special data values:
          all: Flips the data check to allow all data values instead of none initially.
          vanilla: Only allow data values within the vanilla ranges.
          new: Equivalent to 0, or an undamaged item.
          damaged: On weapons and armor, this is everything within vanilla limits that is considered a damaged item.
        Prefixing with '&' would make a bitwise operation on the data value.
        Prefixing with '!' would reverse the statement's meaning making it not work with the value specified.
        Optionally you can add more data conditions separated by ',' that the held item must match against one to proceed.
        Defaults to the equivalent of !all.

      enchant <name> [[!]num or min-max], [...]
        Condition for applied enchantments (not stored in books).
        This argument can be used more than once to add more enchantments as conditions.
        The name must be an enchantment name, see name index.html#enchantment
        The 2nd argument is the levels, it's optional
        A number can be used as level to set that level as requirement.
        You can also use 'max' to use the max supported level for that enchantment.
        Additionally a second number separated by - can be added to specify a level range, 'max' is also supported in ranged value.
        Prefixing with '!' would ban the level or level range.

      noenchant or !enchant
        Held item must have no enchantment
        Overrides enchant condition if set

      bookenchant <name> [[!]num or min-max], [...]
        Condition for book enchantments (not applied enchantments)
        This argument can be used more than once to add more enchantments as conditions.
        The name must be an enchantment name, see name index.html#enchantment
        The 2nd argument is the levels, it's optional
        A number can be used as level to set that level as requirement.
        You can also use 'max' to use the max supported level for that enchantment.
        Additionally a second number separated by - can be added to specify a level range, 'max' is also supported in ranged value.
        Prefixing with '!' would ban the level or level range.

      nobookenchant or !bookenchant
        Held item must have no book enchantment
        Overrides bookenchant condition if set

      amount <num>                     = stack amount
      name <text or regex:pattern>     = check the item name against exact text or if prefixed with 'regex:' it will check for a regex pattern.
        Note for regex:pattern           Escape for '|' is a double '||'. Any double pipes will be converted back to single pipes for regex parsing.

      noname or !name
        Held item must have no/default name
        Overrides name condition if set

      localizedname <text or regex:pattern>     = check the item's localizedname against exact text or if prefixed with 'regex:' it will check for a regex pattern.
        Note for regex:pattern           Escape for '|' is a double '||'. Any double pipes will be converted back to single pipes for regex parsing.
      nolocalizedname or !localizedname
        Ingredient must have no localizedname
        Overrides localizedname condition if set

      lore <text or regex:pattern>     = checks each lore line for a specific text or if prefixed with 'regex:' it will check for a regex pattern.
        Note for regex:pattern           Escape for '|' is a double '||'. Any double pipes will be converted back to single pipes for regex parsing.
      nolore or !lore
        Held item must have no lore
        Overrides lore condition if set

      color <colorname or R,G,B>       = only works for leather armor, checks color
                                         values can be individual values or ranged separated by - char or you can use a color name constant, see name index.html#dyecolor

      nocolor or !color
        Only works for leather armor
        Held item must have default/vanilla color
        Overrides color condition if set

      unbreakable = Ingredient must have the unbreakable flag

      nounbreakable or !unbreakable = Ingredient must not have the unbreakable flag

      custommodeldata = Ingredient must have custom model data

      nocustommodeldata or !custommodeldata = Ingredient must not have custom model data

      nometa or !meta
        Ingredient must have no metadata (enchants, bookenchants, name, lore, color, unbreakable, localizedname, custommodeldata)
        Overrides enchant, name, lore, color, unbreakable, localizedname, custommodeldata conditions if set
        Equivalent to noenchant | nobookenchant | noname | nolore | nocolor | nounbreakable | nolocalizedname | nocustommodeldata

      potion <condition>, [...]
        type <potiontype>      = Type of potion, see name index.html#potiontype
        level                  = Potion's level/tier, usually 1(default) or 2, you can enter 'max' to set it at highest supported level
        extended or !extended  = Potion's extended duration

      potioneffect <condition>, [...]
        type <effecttype>         = Type of potion effect, see name index.html#potioneffect
        duration <num or min-max> = Duration of the potion effect in seconds, default 1 (does not work on HEAL and HARM)
        amplify <num or min-max>  = Amplify the effects of the potion, default 0 (e.g. 2 = <PotionName> III, numbers after potion's max level will display potion.potency.number instead)
        ambient or !ambient       = Check effect's extra visual particles setting
        particles or !particles   = Check effect's particles setting
        icon or !icon             = Check effect's icon setting
      suspiciousstew <condition>, [...]
        type <effecttype>         = Type of potion effect, see name index.html#potioneffect
        duration <num or min-max> = Duration of the potion effect in seconds, default 1 (does not work on HEAL and HARM)
        amplify <num or min-max>  = Amplify the effects of the potion, default 0 (e.g. 2 = <PotionName> III, numbers after potion's max level will display potion.potency.number instead)
        ambient or !ambient       = Check effect's extra visual particles setting
        particles or !particles   = Check effect's particles setting
        icon or !icon             = Check effect's icon setting

      banner <condition>, [...]
        color <dyecolor>
        pattern <pattern> [dyecolor]

        Dye Colors: white, orange, magenta, light_blue, yellow, lime, pink, gray, light_gray, cyan, purple, blue, brown, green, red, black
        Patterns: name index.html#bannerpattern

      spawnegg <entitytype> = Type of entity contained in a spawn egg, see name index.html#entitytype


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @holditem iron_pickaxe // any data/damage value
      @holditem iron_axe:0 // only undamaged axe!
      @holditem chainmail_helmet | enchant protection_fire 1 // requires chain helmet with any level of damage and fire protection enchant level 1
      @holditem false // makes all previous statements useless

    Aliases: @hold
^ Contents

@individualresults

    Recipe


    Allows multi-result recipes to have individual result outcomes, instead of a chance based outcome between all results.
    With this flag set, the first valid recipe found will be the one crafted

    A percent chance on a result will cause the recipe to fail the rest of the percent out of 100.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @individualresults

    Aliases: @individual
^ Contents

@ingredientcondition <item> | <conditions>

    RecipeResult


    Adds conditions for individual ingredients like ranged data values, enchantments or using stacks.
    This flag can be called more than once to add more ingredients with conditions.

    The <item> argument must be an item that is in the recipe, 'material:data' format.
    If you're planning to add ranged data values the data value must be the wildcard '*' or not set at all in order to work.

    For <conditions> argument you must specify at least one condition.
    Conditions must be separated by | and can be specified in any order.
    Condition list:

      data <[!][&]num or min-max or all or vanilla or damaged or new>, [...]
        Condition for data/damage/durability, as argument you can specify data values separated by , character.
        One number is required, you can add another number separated by - character to make a number range.
        Additionally instead of the number you can specify 'item:data' to use the named data value.
        Special data values:
          all: Flips the data check to allow all data values instead of none initially.
          vanilla: Only allow data values within the vanilla ranges.
          new: Equivalent to 0, or an undamaged item.
          damaged: On weapons and armor, this is everything within vanilla limits that is considered a damaged item.
        Prefixing with '&' would make a bitwise operation on the data value.
        Prefixing with '!' would reverse the statement's meaning making it not work with the value specified.
        Optionally you can add more data conditions separated by ',' that the ingredient must match against one to proceed.
        Defaults to the equivalent of !all.

      enchant <name> [[!]num or min-max], [...]
        Condition for applied enchantments (not stored in books).
        This argument can be used more than once to add more enchantments as conditions.
        The name must be an enchantment name, see name index.html#enchantment
        The 2nd argument is the levels, it's optional
        A number can be used as level to set that level as requirement.
        You can also use 'max' to use the max supported level for that enchantment.
        Additionally a second number separated by - can be added to specify a level range, 'max' is also supported in ranged value.
        Prefixing with '!' would ban the level or level range.

      noenchant or !enchant
        Ingredient must have no enchantment
        Overrides enchant condition if set

      bookenchant <name> [[!]num or min-max], [...]
        Condition for book enchantments (not applied enchantments)
        This argument can be used more than once to add more enchantments as conditions.
        The name must be an enchantment name, see name index.html#enchantment
        The 2nd argument is the levels, it's optional
        A number can be used as level to set that level as requirement.
        You can also use 'max' to use the max supported level for that enchantment.
        Additionally a second number separated by - can be added to specify a level range, 'max' is also supported in ranged value.
        Prefixing with '!' would ban the level or level range.

      nobookenchant or !bookenchant
        Ingredient must have no book enchantment
        Overrides bookenchant condition if set

      amount <num>                     = stack amount, this will also subtract from the ingredient when crafted!
      name <text or regex:pattern>     = check the item name against exact text or if prefixed with 'regex:' it will check for a regex pattern.
        Note for regex:pattern           Escape for '|' is a double '||'. Any double pipes will be converted back to single pipes for regex parsing.
      noname or !name
        Ingredient must have no/default name
        Overrides name condition if set

      localizedname <text or regex:pattern>     = check the item's localizedname against exact text or if prefixed with 'regex:' it will check for a regex pattern.
        Note for regex:pattern           Escape for '|' is a double '||'. Any double pipes will be converted back to single pipes for regex parsing.
      nolocalizedname or !localizedname
        Ingredient must have no localizedname
        Overrides localizedname condition if set

      lore <text or regex:pattern>     = checks each lore line for a specific text or if prefixed with 'regex:' it will check for a regex pattern.
        Note for regex:pattern           Escape for '|' is a double '||'. Any double pipes will be converted back to single pipes for regex parsing.
      nolore or !lore
        Ingredient must have no lore
        Overrides lore condition if set

      color <colorname or R,G,B>       = only works for leather armor, checks color
                                         values can be individual values or ranged separated by - char or you can use a color name constant, see name index.html#dyecolor

      nocolor or !color
        Only works for leather armor
        Ingredient must have default/vanilla color
        Overrides color condition if set

      unbreakable = Ingredient must have the unbreakable flag

      nounbreakable or !unbreakable = Ingredient must not have the unbreakable flag

      custommodeldata = Ingredient must have custom model data

      nocustommodeldata or !custommodeldata = Ingredient must not have custom model data

      nometa or !meta
        Ingredient must have no metadata (enchants, bookenchants, name, lore, color, unbreakable, localizedname, custommodeldata)
        Overrides enchant, name, lore, color, unbreakable, localizedname, custommodeldata conditions if set
        Equivalent to noenchant | nobookenchant | noname | nolore | nocolor | nounbreakable | nolocalizedname | nocustommodeldata

      needed <num>
        Sets the number of ingredients that need to match this condition
        Defaults to all of the ingredientcondition type

      potion <condition>, [...]
        type <potiontype>      = Type of potion, see name index.html#potiontype
        level                  = Potion's level/tier, usually 1(default) or 2, you can enter 'max' to set it at highest supported level
        extended or !extended  = Potion's extended duration

      potioneffect <condition>, [...]
        type <effecttype>         = Type of potion effect, see name index.html#potioneffect
        duration <num or min-max> = Duration of the potion effect in seconds, default 1 (does not work on HEAL and HARM)
        amplify <num or min-max>  = Amplify the effects of the potion, default 0 (e.g. 2 = <PotionName> III, numbers after potion's max level will display potion.potency.number instead)
        ambient or !ambient       = Check effect's extra visual particles setting
        particles or !particles   = Check effect's particles setting
        icon or !icon             = Check effect's icon setting

      suspiciousstew <condition>, [...]
        type <effecttype>         = Type of potion effect, see name index.html#potioneffect
        duration <num or min-max> = Duration of the potion effect in seconds, default 1 (does not work on HEAL and HARM)
        amplify <num or min-max>  = Amplify the effects of the potion, default 0 (e.g. 2 = <PotionName> III, numbers after potion's max level will display potion.potency.number instead)
        ambient or !ambient       = Check effect's extra visual particles setting
        particles or !particles   = Check effect's particles setting
        icon or !icon             = Check effect's icon setting

      banner <condition>, [...]
        color <dyecolor>
        pattern <pattern> [dyecolor]

        Dye Colors: white, orange, magenta, light_blue, yellow, lime, pink, gray, light_gray, cyan, purple, blue, brown, green, red, black
        Patterns: name index.html#bannerpattern

      spawnegg <entitytype> = Type of entity contained in a spawn egg, see name index.html#entitytype

      failmsg <text>        = overwrite message sent to crafter when failing to provide required ingredient.

    This flag can be used on recipe results to determine a specific outcome for the recipe depending on the ingredients.
      However, you would need 'failmsg false' along with @displayresult flag, see advanced recipes.html for an example.

    NOTE: this flag can not be used in recipe header, needs to be defined on individual results or recipes.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @ingredientcondition wood | data 3 // pointless use of this flag, just use wood:3 as ingredient.
      @ingredientcondition wood | data 1-3, 39, 100 // this overwrites the data condition to the previous one.
      @ingredientcondition dirt | amount 64 // needs a full stack of dirt to work.
      @ingredientcondition iron_sword | data 0-25 // only accepts iron swords that have 0 to 25 damage.
      @ingredientcondition wool | data vanilla, !wool:red // no red wool
      @ingredientcondition wool | data all, !vanilla // only modded data values
      @ingredientcondition iron_sword | data new // Only allow undamaged iron swords
      @ingredientcondition golden_sword | data damaged // Only allow damaged gold swords
      @ingredientcondition splash_potion | potion !extended // checks if potion is splash and NOT extended
      @ingredientcondition diamond_helmet | enchant fire_resistance 1-3 | enchant thorns | data 0, 5, 50-100 // makes ingredient require 2 enchantments and some specific data values.
      @ingredientcondition stick | nometa // makes ingredient require a vanilla stick.
      @ingredientcondition stick | !meta  // Same as above.
      @ingredientcondition stick | name Crafted Stick | nolore | noenchant // makes ingredient require a stick with a name of 'Crafted Stick', but no lore or enchantments.

    Aliases: @ingrcondition, @ingrcond, @ifingredient, @ifingr
^ Contents

@inventory <inventory type> , ... | [arguments]

    RecipeResult


    Checks if crafting in the specific type of inventory

    The <inventory type> argument is required
      Values: name index.html#inventory

    Can declare multiple inventory types separated by commas


    Optional arguments:
      title <text>      - Add an inventory title restriction
        You can add more titles seperated by a , character to set the allowed titles.
        Also you can disallow titles by prefixing them with a ! character.
        Checks if any allowed titles are matched and all disallowed titles are not matched.


      failmsg <message> - Overwrite the fail message or you can use 'false' to hide it.
        In the message the following variables can be used:
          {inventory} = name of inventory type(s)
          {title}     = title of inventory


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @inventory crafting // Player crafting menu
      @inventory workbench // Must use a crafting table
      @inventory workbench | title Custom // Must use a crafting table named 'Custom'
^ Contents

@itemattribute <attribute> [modifier]<num>

@itemattribute <attribute> [modifier]<num> | slot <slot>

    IngredientResult


    Adds an attribute, such as max health to the result

    <attribute> The attribute you want to modify.
      Values: all, or see: name index.html#itemattribute
        Values starting with 'GENERIC_' such as GENERIC_MAX_HEALTH can be used without 'GENERIC_' for ease of use. max_health would be valid in this case.

    [modifier] can be x for multiplication otherwise it will use addition
    <num> is the amount you want the attribute modified by. If you're not using multiplication as a modifier, the value with be added/subtracted.
      Note that with multiplication, 1 = 100%. Values are expected in decimal/double format: '1.5'.

    The <slot> argument is the slot you want the attribute to affect. Default is HAND.
      Values: all, hand, off_hand, feet, legs, chest, head
        'all' will let the attribute affect all of the equipment slots
        offhand can be used instead of off_hand as well.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @itemattribute max_health 5 // Adds 2.5 hearts of health, defaults to HAND slot
      @itemattribute movement_speed -.1 | slot feet // Reduce speed by .1 when worn in the feet/boots slot
      @itemattribute armor x.2 | slot offhand // Adds +20% Armor

    Aliases: @attribute
^ Contents

@itemlore <text>

@itemlore <text> | display

@itemlore <text> | result

    RecipeIngredientResult


    Adds a line to result's lore (description)

    Supports colors (e.g. <red>, <blue>, &4, &F, etc).

    You can also use these variables:
      {player}         = crafter's name or '(nobody)' if not available
      {playerdisplay}  = crafter's display name or '(nobody)' if not available
      {result}         = the result item name or '(nothing)' if recipe failed.
      {recipename}     = recipe's custom or autogenerated name or '(unknown)' if not available
      {recipetype}     = recipe type or '(unknown)' if not available
      {inventorytype}  = inventory type or '(unknown)' if not available
      {world}          = world name of event location or '(unknown)' if not available
      {x}              = event location's X coord or '(?)' if not available
      {y}              = event location's Y coord or '(?)' if not available
      {z}              = event location's Z coord or '(?)' if not available
        Relative positions are supported: {x-1},{y+7},{z+12}
      {rand #1-#2}     = output a random integer between #1 and #2. Example: {rand 5-10} will output an integer from 5-10
      {rand #1-#2, #3} = output a random number between #1 and #2, with decimal places of #3. Example: {rand 1.5-2.5, 2} will output a number from 1.50 to 2.50
      {rand n}         = reuse a random output, where n is the nth {rand} in a recipe used excluding this format

    Allows quotes to prevent spaces being trimmed.

    Optional Arguments:
      display          = only show on the displayed item when preparing to craft (only relevant to craft/combine recipes)
      result           = only show on the result, but hide from the prepared result
        Default behavior with neither of these arguments is to display in both locations


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @itemlore <red>Awesome item
      @itemlore <magic>some scrambled text on line 2
      @itemlore <gray>Crafted at {world}:{x},{y},{z}
      @itemlore "  Extra space  " // Quotes at the beginning and end will be removed, but spaces will be kept.

    Aliases: @lore, @itemdesc
^ Contents

@itemname <text>

@itemname <text> | display

@itemname <text> | result

    RecipeIngredientResult


    Changes result's display name.

    Supports colors (e.g. <red>, <blue>, &4, &F, etc).

    You can also use these variables:
      {player}         = crafter's name or '(nobody)' if not available
      {playerdisplay}  = crafter's display name or '(nobody)' if not available
      {result}         = the result item name or '(nothing)' if recipe failed.
      {recipename}     = recipe's custom or autogenerated name or '(unknown)' if not available
      {recipetype}     = recipe type or '(unknown)' if not available
      {inventorytype}  = inventory type or '(unknown)' if not available
      {world}          = world name of event location or '(unknown)' if not available
      {x}              = event location's X coord or '(?)' if not available
      {y}              = event location's Y coord or '(?)' if not available
      {z}              = event location's Z coord or '(?)' if not available
        Relative positions are supported: {x-1},{y+7},{z+12}
      {rand #1-#2}     = output a random integer between #1 and #2. Example: {rand 5-10} will output an integer from 5-10
      {rand #1-#2, #3} = output a random number between #1 and #2, with decimal places of #3. Example: {rand 1.5-2.5, 2} will output a number from 1.50 to 2.50
      {rand n}         = reuse a random output, where n is the nth {rand} in a recipe used excluding this format

    Allows quotes to prevent spaces being trimmed.

    Optional Arguments:
      display          = only show on the displayed item when preparing to craft (only relevant to craft/combine recipes)
      result           = only show on the result, but hide from the prepared result
        Default behavior with neither of these arguments is to display in both locations


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @itemname <light_purple>Weird Item
      @itemname <yellow>{player}'s Sword
      @itemname "  Extra space  " // Quotes at the beginning and end will be removed, but spaces will be kept.

    Aliases: @name, @displayname
^ Contents

@itemnbt <nbtRaw>

@itemnbt <nbtRaw> | display

@itemnbt <nbtRaw> | result

    RecipeIngredientResult


    Sets raw nbt data on the result.
      WARNING: This exists only to support features that may not exist in the Bukkit/Spigot API yet. Support is NOT GUARANTEED, especially across future versions.
        If you find you need to use this flag a lot, please consider creating a ticket about adding support for the features you are using. I will do my best to support what I can in better ways.
      WARNING: There is NO VALIDATION on <nbtRaw> values. Test all outputs carefully before adding to a live server.

    Format should include outer brackets: '{}'

    You can also use these variables:
      {player}         = crafter's name or '(nobody)' if not available
      {playerdisplay}  = crafter's display name or '(nobody)' if not available
      {result}         = the result item name or '(nothing)' if recipe failed.
      {recipename}     = recipe's custom or autogenerated name or '(unknown)' if not available
      {recipetype}     = recipe type or '(unknown)' if not available
      {inventorytype}  = inventory type or '(unknown)' if not available
      {world}          = world name of event location or '(unknown)' if not available
      {x}              = event location's X coord or '(?)' if not available
      {y}              = event location's Y coord or '(?)' if not available
      {z}              = event location's Z coord or '(?)' if not available
        Relative positions are supported: {x-1},{y+7},{z+12}
      {rand #1-#2}     = output a random integer between #1 and #2. Example: {rand 5-10} will output an integer from 5-10
      {rand #1-#2, #3} = output a random number between #1 and #2, with decimal places of #3. Example: {rand 1.5-2.5, 2} will output a number from 1.50 to 2.50
      {rand n}         = reuse a random output, where n is the nth {rand} in a recipe used excluding this format

    Optional Arguments:
      display          = only show on the displayed item when preparing to craft (only relevant to craft/combine recipes)
      result           = only show on the result, but hide from the prepared result
        Default behavior with neither of these arguments is to display in both locations


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @itemnbt {display:{Name: '{"text":"CUSTOM NAME"}'}} // Basic example, but should use @itemname instead.
      @itemnbt {MMOITEMS_DURABILITY: {rand 50-100}d, MMOITEMS_MAX_DURABILITY: 67d, MMOITEMS_WILL_BREAK: 1b}

    Aliases: @nbt
^ Contents

@itemunbreakable [false]

    IngredientResult


    Makes the result unbreakable

    Optionally, adding false will make the result breakable again


    Examples:
      @itemunbreakable // Makes the result unbreakable
      @itemunbreakable false // Remove the unbreakable status, allowing for the item to be destroyed

    Aliases: @unbreakable
^ Contents

@keepitem <ingredient>

@keepitem <ingredient> | damage <num>

@keepitem <ingredient> | replace <item>

@keepitem <ingredient> | replace item:<name>

    RecipeResult


    Keeps the specified ingredient material from being used when crafting.
    This flag can be used more than once to specify more ingredients.

    The <ingredient> argument can be a material:data combination of the ingredient, data value being optional, just like defining an ingredient.

    For the optional 'damage <num>' argument you can specify the amount of damage to add or remove from a damageable item.
    Damaging the item beyond its max durability will break it.
    This argument only works for damageable items and the <num> can be a positive number to damage the item or negative to repair it.

    For the optional 'replace <item>' argument you can specify an item that will replace the ingredient.
      The <item> on 'replace' argument can support material:data:amount and enchantments, just like recipe results.
      You can use a predefined item from an item recipe:
        Format = item:<name>
        <name> = The name of an item recipe defined before this flag.
      This argument only works for unstackable ingredients. The item specified as replacement can be stackable.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @keepitem iron_axe  // makes the iron_axe ingredient persistent
      @keepitem potion | replace bottle // using any kind of potion would return an empty bottle
      @keepitem potion | replace item:test sword // using any kind of potion would return the item from the 'test sword' recipe, assuming it's defined.
      @keepitem diamond_pickaxe | damage 5  // keeps the diamond pickaxe but damages it by 5 points
      @keepitem shears | damage -99999 // keeps shears and fully repairs it

    Aliases: @returnitem, @replaceitem
^ Contents

@knowledgebookitem <namespace>:<key>, [...]

@knowledgebookitem <key>, [...]

    IngredientResult


    Add recipes to a knowledge book

    The <namespace> argument is the plugin that the recipe was added by or minecraft itself.
    The <key> is the specific recipe key
      If the <key> is used alone, the namespace is defaulted to minecraft.

    You can add multiple recipes by separating them with a comma.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @knowledgebookitem minecraft:bucket
      @knowledgebookitem campfire
      @knowledgebookitem minecraft:spruce_boat, birch_boat, minecraft:iron_pickaxe

    Aliases: @knowledgebook
^ Contents

@launchfirework effect <effects>

@launchfirework power <number 0-128>

    RecipeResult


    Launches a firework from workbench/player/furnace when recipe or result item is crafted.
    This flag can be defined multiple times add effects and set power to the same rocket.

    The 'effect' setting adds an effect to the rocket.
    Replace <effects> with the effects separated by | character.
    Effects can be:
      color <red> <green> <blue>, ...           = (Required at least 1 color) Sets the primary explosion color(s), you can define more colors separated by comma.
      fadecolor <red> <green> <blue>, ...       = (Optional) Color(s) of the explosion fading, you can define more colors separated by comma.
      type <explode type>                       = (Optional) Shape/size of explosion, see: name index.html#fireworkeffect
      trail                                     = (Optional) Adds a trail to the explosion
      flicker                                   = (Optional) Adds a flicker to explosion

    Effects can be listed in any order.
    Colors must be 3 numbers ranging from 0 to 255, basic RGB format.

    The 'power <number 0-128>' value sets how long rocket will fly, each number is 0.5 seconds of flight, values above 4 are NOT recommended because it heavily affects client performance, default 2.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @launchfirework effect color 0 255 0
      @launchfirework effect trail | color 255 0 0 | type burst
      @launchfirework effect color 255 0 200, 0 255 0, 255 128 0 | trail | type ball_large | fadecolor 255 0 0, 0 0 255, 0 255 0
      @launchfirework power 2

    Aliases: @setfirework
^ Contents

@leathercolor <red> <green> <blue>

    IngredientResult


    Changes result's leather armor color, colors must be 3 numbers ranged from 0 to 255, the red, green and blue channels.

    Specific items: leather armor.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @leathercolor 255 100 50

    Aliases: @leathercolour, @color, @colour
^ Contents

@lightlevel <min or min-max> [type] | [fail message]

    RecipeResult


    Checks for the light level.
    Using this flag more than once will overwrite the previous one.

    The first argument must be a number from 0 to 15 to set a minimum light level, or you can specify a number range separated - character.

    Optionally you can set the  [type] argument to specify light type:
      any    = (default) any kind of light.
      sun    = sun light only.
      blocks = light from blocks (torches, furnaces, etc) only.

    Be careful using blocks light level with furnace recipes as the furnace will provide light to itself.

    You can also overwrite the fail message or use 'false' to hide it.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @lightlevel 14 sun
      @lightlevel 0-4 blocks | <red>Kill the lights!

    Aliases: @blocklight, @sunlight, @light
^ Contents

@localizedname <text or false>

    IngredientResult


    Changes result's localized name.

    Supports colors (e.g. <red>, <blue>, &4, &F, etc).

    You can also use these variables:
      {player}         = crafter's name or '(nobody)' if not available
      {playerdisplay}  = crafter's display name or '(nobody)' if not available
      {result}         = the result item name or '(nothing)' if recipe failed.
      {recipename}     = recipe's custom or autogenerated name or '(unknown)' if not available
      {recipetype}     = recipe type or '(unknown)' if not available
      {inventorytype}  = inventory type or '(unknown)' if not available
      {world}          = world name of event location or '(unknown)' if not available
      {x}              = event location's X coord or '(?)' if not available
      {y}              = event location's Y coord or '(?)' if not available
      {z}              = event location's Z coord or '(?)' if not available
        Relative positions are supported: {x-1},{y+7},{z+12}
      {rand #1-#2}     = output a random integer between #1 and #2. Example: {rand 5-10} will output an integer from 5-10
      {rand #1-#2, #3} = output a random number between #1 and #2, with decimal places of #3. Example: {rand 1.5-2.5, 2} will output a number from 1.50 to 2.50
      {rand n}         = reuse a random output, where n is the nth {rand} in a recipe used excluding this format

    Allows quotes to prevent spaces being trimmed.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @localizedname <light_purple>Weird Item
      @localizedname <yellow>{player}'s Sword
      @localizedname "  Extra space  " // Quotes at the beginning and end will be removed, but spaces will be kept.
^ Contents

@mapitem [arguments]

    IngredientResult


    Create a custom map item

    Replace <arguments> with the following arguments separated by | character:
      scaling [false]            = Sets if the map is scaling.

      locationname <name>        = Sets the location name.
      color <red> <green> <blue> = Sets the map color. Colors must be 3 numbers ranged from 0 to 255, the red, green and blue channels.

      world <worldName>          = Sets the world this map is associated with.
      centerx <x>                = Sets the center x position of the map. Must be an integer.
      centerz <z>                = Sets the center z position of the map. Must be an integer.
      scale <scale>              = Sets the scale of the map.
        <scale> values: closest, close, normal, far, farthest
      locked [false]             = Sets the locked status of the map. Locked maps can not be explored further.
      trackingposition [false]   = Sets whether a position cursor should be shown when the map is near its center.
      unlimitedtracking [false]  = Whether the map will show a smaller position cursor (true), or no position cursor (false) when cursor is outside of map's range.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @mapitem scaling
      @mapitem scaling | color 255 0 0
      @mapitem locked | trackingposition | unlimitedtracking

    Aliases: @map
^ Contents

@message <text>

    RecipeResult


    Prints a message when recipe or item is successfully crafted.
    This flag can be used more than once to add more messages.

    Colors are supported (<red>, &5, etc).
    You can also use these variables:
      {player}         = crafter's name or '(nobody)' if not available
      {playerdisplay}  = crafter's display name or '(nobody)' if not available
      {result}         = the result item name or '(nothing)' if recipe failed.
      {recipename}     = recipe's custom or autogenerated name or '(unknown)' if not available
      {recipetype}     = recipe type or '(unknown)' if not available
      {inventorytype}  = inventory type or '(unknown)' if not available
      {world}          = world name of event location or '(unknown)' if not available
      {x}              = event location's X coord or '(?)' if not available
      {y}              = event location's Y coord or '(?)' if not available
      {z}              = event location's Z coord or '(?)' if not available
        Relative positions are supported: {x-1},{y+7},{z+12}
      {rand #1-#2}     = output a random integer between #1 and #2. Example: {rand 5-10} will output an integer from 5-10
      {rand #1-#2, #3} = output a random number between #1 and #2, with decimal places of #3. Example: {rand 1.5-2.5, 2} will output a number from 1.50 to 2.50
      {rand n}         = reuse a random output, where n is the nth {rand} in a recipe used excluding this format

    Allows quotes to prevent spaces being trimmed.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @message <green>Good job!
      @message <gray>Now you can die&c happy<gray> that you crafted that.
      @message "  Extra space  " // Quotes at the beginning and end will be removed, but spaces will be kept.

    Aliases: @craftmsg, @msg
^ Contents

@modexp [modifier]<amount> | [craft message]

    RecipeResult


    Modifies crafter's experience points.
    Using this flag more than once will overwrite the previous one.

    The '[modifier]' argument can be nothing at all or you can use
      + (which is the same as nothing, to add)
      - (to subtract)
      = (to set)

    The '<amount>' argument must be the amount of experience to modify.
    The '[craft message]' argument is optional and can be used to overwrite the default message or you can set it to false to hide it. Message will be printed in chat.
    For the craft message you can use the following arguments:
      {amount}       = amount defined in the flag, never has modifier prefix.
      {modifier}     = the modifier prefix.
      {actualamount} = (only works for - modifier) the actual amount lost.

    NOTE: This is for total experience points, for experience levels use @modlevel
    NOTE: This flag does not check if player has enough experience when subtracting! Use in combination with @needexp if you want to check.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @modexp 25 // gives 25 experience to crafter
      @modexp +25 // exactly the same as above
      @modexp -50 | <red>You lost {amount} exp!  // takes at most 50 experience from crafter, if he does not have that amount it will be set to 0.
      @modexp = 0 | <red>You lost all your experience!  // sets crafter experience to 0, that space is valid there too.

    Aliases: @expmod, @modxp, @xpmod, @exp, @xp, @giveexp, @givexp, @takeexp, @takexp
^ Contents

@modlevel [modifier]<number> | [craft message]

    RecipeResult


    Modifies crafter's level.
    Using this flag more than once will overwrite the previous one.

    The '[modifier]' argument can be nothing at all or you can use
      + (which is the same as nothing, to add)
      - (to subtract)
      = (to set)

    The '<number>' argument must be the amount of levels to modify.
    The '[craft message]' argument is optional and can be used to overwrite the default message or you can set it to false to hide it. Message will be printed in chat.
    For the craft message you can use the following arguments:
      {amount}       = amount defined in the flag, never has modifier prefix.
      {modifier}     = the modifier prefix.
      {actualamount} = (only works for - modifier) the actual amount lost.

    NOTE: This is for experience levels, for experience points use @modexp
    NOTE: This flag does not check if player has enough levels when subtracting! Use in combination with @needlevel if you want to check.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @modlevel 1 // gives 1 level to crafter
      @modlevel +1 // exactly the same as above
      @modlevel -2 | <red>You lost {amount} levels.  // takes at most 2 levels from crafter, if he does not have that amount it will be set to 0.
      @modlevel = 0 | <red>You've been set to level 0!  // sets crafter's level to 0, that space is valid there too.

    Aliases: @levelmod, @setlevel, @level
^ Contents

@modmoney [modifier]<float number> | [fail message]

    RecipeResult


    Modifies crafter's money.
    Using this flag more than once will overwrite the previous one.

    The '[modifier]' argument can be nothing at all or you can use
      + (which is the same as nothing, to add)
      - (to subtract)
      = (to set)

    The '<number>' argument must be the amount of money to modify.
    The '[fail message]' argument is optional and can be used to overwrite the default message or you can set it to false to hide it. Message will be printed in chat.
    For the fail message you can use the following arguments:
      {amount}       = amount defined in the flag, never has modifier prefix.
      {modifier}     = the modifier prefix.

    NOTE: Vault with a supported economy plugin is required for this flag to work.
    NOTE: This flag does not check if player has enough money when subtracting! Use in combination with @needmoney if you want to check.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @modmoney 0.5 // gives 0.5 currency or 50 minor currency money to crafter
      @modmoney +0.5 // exactly the same as above
      @modmoney -2.5 | <red>You lost {money}!  // takes at most 2.5 currency from crafter, if he does not have that amount it will be set to 0.
      @modmoney = 0 | <red>You lost all your money!  // sets crafter's money to 0, that space is valid there too.

    Aliases: @moneymod, @setmoney, @money
^ Contents

@monsterspawner <entity type> | [arguments]

    IngredientResult


    Sets the entity type that will be spawned from the spawner.

    The <entity type> argument must be an entity type name, see name index.html#entitytype

    Optionally you can add more arguments separated by | character in any order:
      delay             = (default 20) initial delay in ticks, -1 will default to a random value between min delay and max delay
      mindelay          = (default 200) Sets the min spawn delay (in ticks)
      maxdelay          = (default 800) Sets the max spawn delay (in ticks)
      maxnearbyentities = (default 6) Sets the max number of similar entities that are allowed to be within spawning range.
      playerrange       = (default 16) Sets the maximum distance (squared) a player can be in order for this spawner to be active. (0 is always active if players are online)
      spawnrange        = (default 4) Sets the radius around which the spawner will attempt to spawn mobs in.
      spawncount        = (default 4) Sets how many mobs attempt to spawn.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @monsterspawner creeper
      @monsterspawner horse

    Aliases: @spawner, @mobspawner
^ Contents

@needexp <min or min-max> | [message]

    RecipeResult


    Checks if crafter has at least 'min' experience and optionally at most 'max' experience.
    Using this flag more than once will overwrite the previous one.

    Optionally you can overwrite the fail message or you can use 'false' to hide it.
    In the message the following variables can be used:
      {exp}    = exp or exp range.
      {minexp} = defined min exp range.
      {maxexp} = defined max exp range.
      {playerexp} = player's current experience.

    NOTE: This is for total experience points, for experience levels use @needlevel


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @needexp 100 // player needs to have at least 100 experience to craft
      @needexp 250-250 // player needs to have exactly 250 experience to craft
      @needexp 0-500 // player can only craft if he has between 0 and 500 experience
      @needexp 1000 | <red>Need {exp} exp!

    Aliases: @needxp, @reqexp, @expreq, @reqxp, @xpreq
^ Contents

@needlevel <min or min-max> | [fail message]

    RecipeResult


    Checks if crafter has at least 'min' levels and optionally at most 'max' levels.
    Using this flag more than once will overwrite the previous one.

    Optionally you can overwrite the fail message or you can use 'false' to hide it.
    In the message the following variables can be used:
      {level}    = level or level range
      {minlevel} = defined min level range.
      {maxlevel} = defined max level range.

    NOTE: This is for experience levels, for experience points use @needexp or for world height use @height.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @needlevel 1 // Requires a minimum level of 1
      @needlevel 5-5 // Requires exactly level 5
      @needlevel 25-100 | <red>Need level 25 to 100!

    Aliases: @reqlevel, @levelreq
^ Contents

@needmoney <min or min-max> | [fail message]

    RecipeResult


    Checks if crafter has at least 'min' money and optionally at most 'max' money.
    Using this flag more than once will overwrite the previous one.

    Optionally you can overwrite the fail message or you can use 'false' to hide it.
    In the message the following variables can be used:
      {money}      = money or money range
      {minmoney}   = defined min money range.
      {maxmoney}   = defined max money range.
      {fmoney}      = money or money range; formatted with currency.
      {fminmoney}  = defined min money range; formatted with currency.
      {fmaxmoney}  = defined max money range; formatted with currency.

    NOTE: Vault with a supported economy plugin is required for this flag to work.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @needmoney 0.25
      @needmoney 0.1 - 1000 | <red>Need {money}!

    Aliases: @reqmoney, @moneyreq
^ Contents

@noresult

    Result


    Prevents the result item from being crafted.

    Useful when giving items through @command or providing non-item results, such as @modexp.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @noresult
^ Contents

@override [true or false]

    Recipe


    Overwrites an existing recipe from vanilla Minecraft or other plugins/mods.
    The recipe definition must have the exact ingredients of the recipe you want to overwrite.

    You may set whatever result(s) you want and add any other flags, this flag allows RecipeManager to take control over that recipe.
    If you don't know the exact ingredients you can use 'rmextract' command to extract all existing recipes in RecipeManager format.

    Value is optional, if value is not specified it will just be enabled.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @override

    Aliases: @edit, @overwrite, @supercede, @replace
^ Contents

@permission [!]<permission>, [...] | [fail message]

    RecipeResult


    Makes the recipe or item require the crafter to have a permission.
    Using this flag more than once will add more permissions, the player must have at least one to allow crafting.

    The '<permission>' argument must be a permission node, regardless if it exists or not.

    Adding ! character as prefix to individual permission nodes will do the opposite check, if crafter has permission it will not craft.

    You can also specify more permissions separated by , character.

    Optionally you can specify a failure message that will be used on the specific permission(s) defined.
    The messages can have the following variables:
      {permission}  = permission that was not found or was found and it's unallowed.
      {permissions} = a comma separated list of the allowed or unallowed permission nodes.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @permission ranks.vip
      @permission !jobs.builder | <red>Builders can't use this!
      @permission jobs.farmer, jobs.trader | <red>You must be a farmer or trader!
      @permission ! ranks.newbs, ! ranks.newbies | <yellow>Noobs can't use this. // valid with spaces too

    Aliases: @permissions, @perm
^ Contents

@potioneffect <effect type> | [arguments]

@potioneffect clear

    RecipeResult


    Adds potion effects to crafter.
    This flag can be used more than once to add more effects.

    Using 'clear' will remove all potion effects from player before adding any defined ones.

    The <effect type> argument must be an effect type, see name index.html#potioneffect

    Optionally you can add more arguments separated by | character in any order:
      duration <float>    = (default 1.0) potion effect duration in seconds, only works on non-instant effect types.
      amplifier <num>     = (default 0) potion effect amplifier.
      ambient [false]     = (default true) makes the effect produce more, translucent, particles.
      !ambient            = equivalent to 'ambient false'
      particles [false]   = (defaults true) display particles.
      !particles          = equivalent to 'particles false'
      icon [false]        = (defaults true) show the effect icon.
      !icon               = equivalent to 'icon false'


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @potioneffect clear // remove all player's potion effects beforehand
      @potioneffect heal
      @potioneffect blindness | duration 60 | amplifier 5
      @potioneffect poison | ambient | amplifier 666 | duration 6.66

    Aliases: @potionfx
^ Contents

@potionitem <basic effect>

@potionitem custom <custom effect>

    IngredientResult


    Builds a potion item, only works with POTION item.

    There are 2 types of potions... basic potions which have 1 effect and custom potions which can have multiple effects.

    Building a basic potion:

    Instead of <basic effect> argument you must enter a series of arguments separated by | character, in any order.
    Arguments for basic effect:
      type <potion type>   = (REQUIRED if you want to use level or extended) Type of potion, see name index.html#potiontype
      level <number or max>      = (optional) Potion's level/tier, usually 1(default) or 2, you can enter 'max' to set it at highest supported level
      extended                   = (optional) Potion has extended duration
      color <red> <green> <blue> = (optional) Sets the base color. Colors must be 3 numbers ranged from 0 to 255, the red, green and blue channels.
      splash                     = (optional) Throwable/breakable potion instead of drinkable
      lingering              = (optional) Lingering potion instead of drinkable


    Building a custom potion requires adding individual effects:

    A basic potion still affects the custom potion like the following:
    - If no basic potion is defined the bottle will look like 'water bottle' with no effects listed, effects still apply when drank
    - Basic potion's type affects bottle liquid color
    - Basic potion's splash still affects if the bottle is throwable instead of drinkable
    - Basic potion's extended and level do absolutely nothing.
    - The first custom effect added is the potion's name, rest of effects are in description (of course you can use @name to change the item name)

    Once you understand that, you may use @potion custom as many times to add as many effects you want.

    Similar syntax to basic effect, arguments separated by | character, can be in any order after the effect type.
    Arguments for custom effect:
      <effect type>       = (REQUIRED) Type of potion effect, see name index.html#potioneffect
      duration <float>    = (default 1.0) Duration of the potion effect in seconds (does not work on instant potions effects such as HEAL and HARM)
      amplifier <number>  = (default 0) Amplify the effects of the potion (e.g. 2 = <PotionName> III, numbers after potion's max level will display potion.potency.number instead)
      ambient [false]     = (default true) makes the effect produce more, translucent, particles.
      !ambient            = equivalent to 'ambient false'
      particles [false]   = (defaults true) display particles.
      !particles          = equivalent to 'particles false'
      icon [false]        = (defaults true) show the effect icon.
      !icon               = equivalent to 'icon false'


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @potionitem type FIRE_RESISTANCE | level max | extended // basic extended fire resistance potion
      // advanced potion example:
      @potionitem type POISON | splash | color 255 128 0 // set the bottle design and set it as splash with a custom color
      @potionitem custom WITHER | duration 10 // add wither effect
      @potionitem custom BLINDNESS | duration 2.5 | amplifier 5 // add blindness effect

    Aliases: @potion
^ Contents

@remove [true or false]

    Recipe


    Removes an existing recipe that was added by vanilla Minecraft or other plugins/mods.
    The recipe definition must have the exact ingredients of the recipe you want to overwrite.

    Results and smelt time will be ignored and you don't have to delete them if you want to keep them for later.

    If you don't know the exact ingredients you can use 'rmextract' command to extract all existing recipes in RecipeManager format.
    Value is optional, if value is not specified it will just be enabled.

    This can't be used along with @override flag.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @remove

    Aliases: @delete
^ Contents

@repaircost <text or false> | prepareLore [message]

    IngredientResult


    Changes result's repair cost when repaired in an anvil.

    prepareLore [message] sets a lore message that will display when preparing the recipe.
      Setting message to true will use the default message: flag.repaircost.preparelore
      For the prepare lore you can use the following arguments:
        {cost} = the repair cost
      Allows quotes to prevent spaces being trimmed.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @repaircost 1 // Sets the default repair cost to 1
      @repaircost 25 // Sets the default repair cost to 25
^ Contents

@restrict [fail message]

    Recipe


    Restricts the recipe for everybody.
    This is the player-friendly version of @remove because crafter gets a message when trying to craft the recipe.

    Optionally you can overwrite the default restrict message.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @restrict
      @restrict <red>Access denied!

    Aliases: @disable, @denied, @deny
^ Contents

@secret [true or false]

    RecipeResult


    Hides the recipe or result from common info sources.
    Recipes are hidden from commands, books, etc.
    Results are also hidden from commands, books and most importantly from multiresult item display.
    This also means recipes/results won't give out any fail craft reasons!


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @secret
^ Contents

@setblock <block material>:[data] | [arguments]

    RecipeResult


    Changes the workbench/furnace/block-at-player into other block type.
    Using this flag more than once will overwrite the previous flag.

    Replace '<block material>' with a block material (not item!), see name index.html#material
    Optionally you can define a data value which defines its skin, direction and other stuff, see Minecraft Fandom / Data Values
    You can also use aliases for materials and data values too.

    Additionally you can define a set of arguments separated by | character:
      drop            = breaks the existing block and drops its item.
      noinv [failmsg] = prevent inventory crafting, if this is not set, the flag will set the block at player location too; optionally you can overwrite the failure message for this condition.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @setblock gold_block
      @setblock planks:jungle | noinv // set to jungle wood planks and prevent inventory crafting
      @setblock air | drop | noinv <red>Only workbench! // simulate block break

    Aliases: @changeblock
^ Contents

@skullowner <name>

@skullowner <uuid>

@skullowner texture <base64>

@skullowner <name> | texture <base64>

@skullowner <uuid> | texture <base64>

    IngredientResult


    Sets the human skull's owner to apply the skin.
    If you set it to '{player}' then it will use crafter's name.

    For base64 textures, you can reference https://freshcoal.com/, https://minecraft-heads.com/, https://mineskin.org/ or any other Minecraft head repository
      You can only use the base64 encoded string of a valid mojang texture. Each of the above sites should be able to provide those

      WARNING: The texture parameter will conflict with @itemnbt and whichever is used last will be the one that gets used.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @skullowner Notch
      @skullowner {player}
      @skullowner texture eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzBiOGI1ODg5ZWUxYzYzODhkYzZjMmM1ZGJkNzBiNjk4NGFlZmU1NDMxOWEwOTVlNjRkYjc2MzgwOTdiODIxIn19fQ== // Jam texture

    Aliases: @skullitem, skull, head
^ Contents

@sound <sound> | [arguments]

    RecipeResult


    Plays a sound at crafting location.
    Using this flag more than once will overwrite the previous flag.

    The <sound> argument must be a sound name, see name index.html#sound

    Optionally you can specify some arguments separated by | character:
      volume <0.0 to 100.0> = (default 1.0) sound volume, if exceeds 1.0 it extends range, each 1.0 extends range by about 10 blocks.
      pitch <0.0 to 4.0>    = (default 0.0) sound pitch value.
      player                = (default not set) if set it will only play the sound to the crafter.
    You can specify these arguments in any order and they're completely optional.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @sound level_up
      @sound wolf_howl | volume 5 // can be heard loudly at 50 blocks away
      @sound portal_travel | player | volume 0.65 | pitch 3.33

    Aliases: @playsound
^ Contents

@spawnparticle <particle> | [arguments]

    RecipeResult


    Spawn a particle at crafting location
    This flag can be used more than once to spawn more particles.

    The <particle> argument must be a particle name, see name index.html#particle

    Optionally you can specify some arguments separated by | character:
      offset <x> <y> <z>          = (default: 0.5 1.0 0.5) Offset positioning of the particle relative to the block/player crafting. Allows doubles (0.0)
      randomoffset <x> <y> <z>    = (default: .25 .25 .25) Random offset of the particle relative to the block/player crafting. Allows doubles (0.0)
      count <amount>              = How many particles are spawned
      extra <value>               = Used to set extra data for certain particles. For example, speed. Allows doubles (0.0)
    You can specify these arguments in any order and they're completely optional.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @spawnparticle
      @spawnparticle heart | count 3
      @spawnparticle smoke_normal | count 5
      @spawnparticle lava | count 20 | randomoffset 0.5 1 .5 | offset 0 2

    Aliases: @particle
^ Contents

@summon <type> | [arguments]

    RecipeResult


    Summons a living entity.
    Using this flag more than once will add more entities.

    The <type> argument can be a living entity type, you can find all entity types here: name index.html#entitytype

    Optionally you can add some arguments separated by | character, those being:
      adult                      = forces entity to spawn as an adult, works with animals and villagers (works opposite of baby).
      agelock                    = prevent the entity from maturing or getting ready for mating, works with animals and villagers.
      angry                      = makes entity angry, only works for wolves and pigzombies; you can't use 'pet' with this.
      arrowcooldown <ticks>      = sets the ticks until the next arrow leaves the entity's body.
      arrowsinbody <amount>      = sets the number of arrows in the entity's body.
      axolotl <variant>          = sets the axolotl variant, available values: lucy, wild, gold, cyan, blue
      axolotlplayingdead         = sets the axolotl to be playing dead.
      baby                       = spawn entity as a baby, works with animals, villagers and zombies (works opposite of adult).
      beeanger <ticks>           = sets the anger level to the number of ticks the bee will remain angry for.
      beecannotenterhiveticks <ticks> = sets the ticks the bee cannot enter a hive for.
      beehasnectar               = sets the bee to have nectar.
      beehasstung                = sets if the bee has stung.
      cat <type>                 = cat type, available values: tabby, black, red, siamese, british_shorthair, calico, persian, ragdoll, white, jellie, all_black
      chance <0.01-100>%         = chance of the entity to spawn, this value is for individual entities.
      chest <item> [drop%]       = equip an item on the entity's chest with optional drop chance.
      color <dye>                = sets the color of animal, only works for sheep and pet wolf/cats.
                                     Values: name index.html#dyecolor
      feet <item> [drop%]        = equip an item on the entity's feet with optional drop chance.
      fox <type>                 = set the fox type, values: red, snow
      foxcrouching               = set the fox to be crouching
      foxfirsttrustedplayer <uuid or player> = set the fox's first trusted player. If set to 'player', the crafter will be used.
      foxsecondtrustedplayer <uuid or player> = set the fox's second trusted player. If set to 'player', the crafter will be used.
      foxsleeping                = set the fox to be sleeping
      freezeticks <ticks>        = sets the entity's current freeze ticks (amount of ticks the entity has been in powdered snow).
      glowsquiddarkticksremaining <ticks> = sets the number of dark ticks that a glow squid has remaining.
      goatscreaming              = set the goat to be a screaming goat.
      hand <item> [drop%]        = equip an item on the entity's main hand with optional drop chance; for enderman it only uses material and data from the item.
      head <item> [drop%]        = equip an item on the entity's head with optional drop chance.
      hit                        = crafter will fake-attack the entity to provoke it into attacking or scare it away.
      haschest                   = adds a chest to entity (Only works on horses, forces horse to be an adult and tamed).
      horsecolor <type>          = set the horse color, values: white, creamy, chestnut, brown, black, gray, dark_brown
      horsestyle <type>          = set the horse style, values: none, white, whitefield, white_dots, black_dots
      hp <health> [max]          = set entity's health and optionally max health.
      offhand <item> [drop%]     = equip an item on the entity's offhand with optional drop chance.
      invulnerable               = makes the entity invulnerable.
      invisible                  = makes the entity invisible.
      jumpstrength <0.0-2.0>     = sets the entity's jump strength (Only works for horses). 0 = no jump
      legs <item> [drop%]        = equip an item on the entity's legs with optional drop chance.
      mountnext                  = this entity will mount the next entity definition that triggers after it.
      name <text>                = sets the entity's name, supports colors (<red>, &3, etc).
      noai                       = disable the ai on entity.
      nobreed                    = prevent the entity being able to breed, works for animals and villagers.
      nocollision                = disables collision with other entities.
      noeffect                   = no spawning particle effects on entity.
      nohidename                 = don't hide name plate when not aiming at entity.
      noremove                   = prevents entity from being removed if nobody is near it.
      num <number>               = spawn more cloned entities.
      onfire <time>              = spawn entity on fire for <time> amount of seconds, value can be float.
      pandahiddengene <type>     = set the panda's hidden gene, values: normal, lazy, worried, playful, brown, weak, aggressive
      pandamaingene <type>       = set the panda's main gene, values: normal, lazy, worried, playful, brown, weak, aggressive
      parrot <type>              = set the parrot type, values: red, blue, green, cyan, gray
      persistent                 = Makes the entity persistent
      pet [nosit]                = makes entity owned by crafter, only works for tameable entities, optionally specify 'nosit' to not spawn entity in sit stance.
      pickup [true/false]        = change if entity can pick-up dropped items.
      playerirongolem            = marks iron golem as player-made.
      potion <type> [time] [amp] = adds potion effect on the spawned entity; this argument can be used more than once to add more effects.
                                     type values: name index.html#potioneffect
                                     [time] can be a decimal of duration in seconds
                                     [amp] can be an integer that defines amplifier;
      poweredcreeper             = makes creeper a powered one, only works for creepers.
      rabbit <type>              = set the rabbit type, values: brown, white, black, black_and_white, gold, salt_and_pepper, the_killer_bunny
      saddle [mount]             = adds saddle on entity (forces animal to be adult), only works for pig and horse, optionally you can specify 'mount' to make crafter mount entity.
      shearedsheep               = sets the sheep as sheared, only works for sheep.
      spread <range>             = spawns entities spread within block range instead of on top of workbench or furnace. (WARNING: can be CPU intensive)
      target                     = entity targets crafter, that means monsters attack and animals follow and the rest do nothing
      tropicalfishcolor <dye>    = sets the tropical fish's body color.
                                     Values: name index.html#dyecolor
      tropicalfishpattern <pattern> = sets the tropical fish's pattern.
                                     Values: kob, sunstreak, snooper, dasher, brinely, spotty, flopper, stripey, glitter, blockfish, betty, clayfish
      tropicalfishpatterncolor <dye> = sets the color of the tropical fish's pattern.
                                     Values: name index.html#dyecolor
      villager <type>            = set the villager profession
                                     Values: none, armorer, butcher, cartographer, cleric, farmer, fisherman, fletcher, leatherworker, librarian, mason, nitwit, shepherd, toolsmith, weaponsmith
      visualfire                 = sets if the entity has visual fire (it will always appear to be on fire).
      wanderingtraderdespawndelay <ticks> = sets if the despawn delay (in ticks) of a wandering trader. If ticks is less than or equal to zero, the trader will not be despawned.

    These arguments can be used in any order and they're all optional.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @summon cow
      @summon skeleton | hand bow // skeletons spawn without weapons, you need to give it one
      @summon zombie | baby | chest chainmail_chestplate 25% | legs chainmail_leggings 25% | hand iron_sword 50% // baby zombie warrior
      @summon sheep | color pink | name <light_purple>Pony
      @summon ocelot | cat redcat | pet | potion speed 30 5
      // chicken on a villager and villager on a cow:
      @summon chicken | mountnext
      @summon villager | mountnext
      @summon cow

    Aliases: @spawn, @creature, @mob, @animal
^ Contents

@suspiciousstewitem <effect type> | [arguments]

    IngredientResult


    Adds potion effects to a suspicious stew.
    This flag can be used more than once to add more effects.

    The <effect type> argument must be an effect type, see name index.html#potioneffect

    Optionally you can add more arguments separated by | character in any order:
      duration <float>    = (default 1.0) potion effect duration in seconds, only works on non-instant effect types.
      amplifier <num>     = (default 0) potion effect amplifier.
      ambient [false]     = (default true) makes the effect produce more, translucent, particles.
      !ambient            = equivalent to 'ambient false'
      particles [false]   = (defaults true) display particles.
      !particles          = equivalent to 'particles false'
      icon [false]        = (defaults true) show the effect icon.
      !icon               = equivalent to 'icon false'


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @suspiciousstewitem heal
      @suspiciousstewitem blindness | duration 60 | amplifier 5
      @suspiciousstewitem poison | ambient | amplifier 666 | duration 6.66

    Aliases: @suspicioussoupitem, @suspiciousstew, @suspicioussoup
^ Contents

@temperature [operator]<number> | [fail message]

    RecipeResult


    Checks if the crafter or furnace has at least 'min' temperature unless [operator] is set.
    Using this flag more than once will overwrite the previous one.

    The '[operator]' argument can be nothing at all or you can use >= (which is the same as nothing, to check for greater than or equal), <= (less than or equal), > (greater), or < (less than).
    The '<number>' argument must be the temperature you want to check against. Uses doubles, meaning 1 and 1.0 are valid numbers.
    The '[operator]<number>' combination can be used multiple times when separated by a comma. In that case, all checks must be successful

    Optionally you can overwrite the fail message or you can use 'false' to hide it.
    In the message the following variables can be used:
      {temperature} = temperature conditions
      {actual}      = the actual temperature player or furnace is at


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @temperature < 0 // Must be in an icy biome
      @temperature 1.2 // Must be in a hot biome, such as a desert or savanna
      @temperature >= 1.2 // Equivalent to the above example
      @temperature >= .15, <= .95 // Must be within a temperature where it can rain

    Aliases: @temp
^ Contents

@tropicalfishbucketitem <arguments> | [...]

    IngredientResult


    Customize a tropical fish bucket

    Arguments can be one or more of the following, separated by | character:
      bodycolor <dyecolor> = (default largest) merge action for all of the ingredients
      pattern <pattern>     = (default largest) merge action applied to the result
      patterncolor <dyecolor> = Ignore enchantment level restrictions

    <dyecolor> values: white, orange, magenta, light_blue, yellow, lime, pink, gray, light_gray, cyan, purple, blue, brown, green, red, black
    <pattern> values: kob, sunstreak, snooper, dasher, brinely, spotty, flopper, stripey, glitter, blockfish, betty, clayfish


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @tropicalfishbucketitem bodycolor blue | pattern dasher

    Aliases: @tropicalfishbucket, @fishbucket
^ Contents

@weather <type>, [type] | [fail message]

    RecipeResult


    Sets the weather type(s) required to allow crafting.
    Using this flag more than once will overwrite the previous one.

    The 'type' argument can be:
      clear    = clear skies, no precipitation.
      downfall = precipitation (rain/snow depends on biome).
      thunder  = precipitation + thundering.
    You can set more than one type separated by , character, but setting all of them is pointless.

    Optionally you can set the 'fail message' argument to overwrite the failure message or set it to 'false' to hide it.
    In the fail message you can use the following variables:
      {weather} = the weather type required.

    NOTE: If you need to check if it's raining or snowing then use the @temperature flag.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @weather downfall // works only if it's raining peacefully.
      @weather clear, thunder | <red>To be struck by lightning... or to be not.
^ Contents

@world [!][~]<world>, [...] | [fail message]

    RecipeResult


    Makes the recipe or item work only in certain worlds.
    Using this flag more than once will add more worlds.

    The '<world>' argument can be a world name.

    Adding a ! character as prefix to individual worlds will do the opposite check, will not craft in specified world.
    You should require or disallow worlds, using both would be logically pointless.

    Adding a ~ character as prefix to individual worlds will allow a partial match.
      Any world that contains the partial match will be allowed or disallowed.

    Optionally you can specify a failure message that will be used on the specific world(s) defined.
    The messages can have the following variables:
      {world}   = current world.
      {worlds}  = a comma separated list of the required or unallowed worlds.


    Setting to 'false' or 'remove' will disable the flag.

    Examples:
      @world world // only allows 'world'
      @world !world_nether // disallows 'world_nether'
      @world world1, world2, world3 | <red>Need to be in world 1, 2 or 3! // requires one of the 3 worlds
      @world ~hardcore // Will match any world including hardcore in it's name, (ex: world_hardcore, hardcore_parkour)
      @world !~hardcore // Disallows any worlds with hardcore in it's name

    Aliases: @needworld, @worlds