... | ... | @@ -104,97 +104,6 @@ These placeholders will return whatever attribute of the caster that is called. |
|
|
| <caster.children.size> | Returns the number of children this entity has |
|
|
|
| <caster.attack_cooldown> | Returns the attack cooldown of the player's equipped item. The value will be a float between 0 (maximum cooldown for the item) and 1 (no cooldown) |
|
|
|
|
|
|
## Variable Placeholders
|
|
|
These placeholders will return whatever variable has been called. For instance <caster.var.\[name\]> will return the value of the caster's \[name\] variable.
|
|
|
Some of these variables are only generated and available under some special circumstances, such as some specific trigger/attribute/metamechanic being used previously in the skilltree.
|
|
|
|
|
|
| Variable Placeholder | Generated by | Function |
|
|
|
|:-------------------------:|---------------------------------|------------------------------------------|
|
|
|
| <caster.var.{VariableName}> | | Returns the value of the variable {VariableName} on the variable registry of the caster of the mechanic |
|
|
|
| <target.var.{VariableName}> | | Returns the value of the variable {VariableName} on the variable registry of the target of the mechanic |
|
|
|
| <world.var.{VariableName}> | | Returns the value of the variable {VariableName} on the variable registry of the world the mechanic is used in |
|
|
|
| <global.var.{VariableName}> | | Returns the value of the variable {VariableName} on the variable registry of the whole server |
|
|
|
| <skill.var.{VariableName}> | | Returns the value of the variable {VariableName} on the current [skill tree](https://git.lumine.io/mythiccraft/MythicMobs/-/wikis/Skills/SkillTrees) |
|
|
|
| <skill.var.damage-amount> | [~onDamaged] trigger <br> [~onAttack] trigger <br> [~onBowHit] trigger <br> [onDamaged] mechanic <br> [onAttack] mechanic | Returns the amount of damage taken or done |
|
|
|
| <skill.var.damage-type> | [~onDamaged] trigger <br> [~onAttack] trigger <br> [~onBowHit] trigger <br> [onDamaged] mechanic <br> [onAttack] mechanic | Returns the type of damage taken or done, if any |
|
|
|
| <skill.var.damage-cause> | [~onDamaged] trigger <br> [~onAttack] trigger <br> [~onBowHit] trigger <br> [onDamaged] mechanic <br> [onAttack] mechanic | Returns the cause of damage taken/done |
|
|
|
| <skill.var.aura-name> | Every [aura] mechanic | Returns the name of the aura |
|
|
|
| <skill.var.aura-type> | Every [aura] mechanic | Returns the type of the aura |
|
|
|
| <skill.var.aura-charges> | Every [aura] mechanic | Returns the amount of charges the aura has left |
|
|
|
| <skill.var.aura-duration> | Every [aura] mechanic | Returns the remaining duration of the aura |
|
|
|
| <skill.var.aura-duration-millis> | Every [aura] mechanic | Returns the remaining duration of the aura, in milliseconds |
|
|
|
| <skill.var.aura-stacks> | Every [aura] mechanic | Returns the amount of stacks the aura has left |
|
|
|
| <skill.var.input> | [onChat] mechanic | Returns the chat input |
|
|
|
| <skill.targets> | | Returns the amount of inherited targets |
|
|
|
| <skill.var.interval> | Using the `repeat` and `repeatInterval` [universal attributes] | Returns the current iteration |
|
|
|
| <skill.var.itr> | Using the `repeat` and `repeatInterval` [universal attributes] | Returns the current iteration |
|
|
|
| <skill.var.volume> | [~onHear] trigger | Returns a float value between 1 and 15 representing the intensity of the sound. Directly proportional to the distance (the further away the source, the higher this value) |
|
|
|
| <skill.var.sound-type> | [~onHear] trigger | Returns the type of the sound |
|
|
|
| <skill.var.hit-block-type> | [raytrace] mechanic | Returns the block that was hit, or AIR if none |
|
|
|
| <skill.var.bow-tension> | [~onShoot] trigger | Returns the force with which the projectile has been shot |
|
|
|
|
|
|
```yaml
|
|
|
Skills:
|
|
|
- setvariable{var=caster.test1;val=1} @self
|
|
|
- setvariable{var=target.test2;val=2} @self
|
|
|
- message{m=<caster.var.test1> <caster.var.test2> <target.var.test1> <target.var.test2>} @self
|
|
|
```
|
|
|
> If you execute this metaskill yourself, this will send you a message saying `1 2 1 2` because the target of every mechanic is the caster, so the affected registry is always the caster's even if a "target" scope is used
|
|
|
|
|
|
## Meta Variable Placeholders
|
|
|
You can append some specific keywords at the end of a variable placeholder in order to tweak its return value, getting some special return based on the variable type
|
|
|
|
|
|
### All Variable Types
|
|
|
| **Placeholder** | **Function** |
|
|
|
|-----------------------------|-------------------------------------------------------------------------|
|
|
|
| <{VariableScope}.var.{VariableName}.expires> | Whether the variable can expire |
|
|
|
| <{VariableScope}.var.{VariableName}.expiration> | The expiration timestamp for the variable |
|
|
|
| <{VariableScope}.var.{VariableName}.saved> | Whether the variable is saved |
|
|
|
| <{VariableScope}.var.{VariableName}.type> | The type of the variable |
|
|
|
|
|
|
### Location Variable Type
|
|
|
| **Placeholder** | **Function** |
|
|
|
|-----------------------------|-------------------------------------------------------------------------|
|
|
|
| <{VariableScope}.var.{VariableName}.x> | The x component of the location |
|
|
|
| <{VariableScope}.var.{VariableName}.y> | The y component of the location |
|
|
|
| <{VariableScope}.var.{VariableName}.z> | The z component of the location |
|
|
|
| <{VariableScope}.var.{VariableName}.yaw> | The yaw component of the location |
|
|
|
| <{VariableScope}.var.{VariableName}.pitch> | The pitch component of the location |
|
|
|
| <{VariableScope}.var.{VariableName}.world> | The world of the location |
|
|
|
|
|
|
### Vector Variable Type
|
|
|
| **Placeholder** | **Function** |
|
|
|
|-----------------------------|-------------------------------------------------------------------------|
|
|
|
| <{VariableScope}.var.{VariableName}.x> | The x component of the location |
|
|
|
| <{VariableScope}.var.{VariableName}.y> | The y component of the location |
|
|
|
| <{VariableScope}.var.{VariableName}.z> | The z component of the location |
|
|
|
|
|
|
### Set Variable Type
|
|
|
| **Placeholder** | **Function** |
|
|
|
|-----------------------------|-------------------------------------------------------------------------|
|
|
|
| <{VariableScope}.var.{VariableName}.size> | The size of the set |
|
|
|
|
|
|
### List Variable Type
|
|
|
| **Placeholder** | **Function** |
|
|
|
|-----------------------------|-------------------------------------------------------------------------|
|
|
|
| <{VariableScope}.var.{VariableName}.{Index}> | Returns the element of the list at the given index (must be an integer) |
|
|
|
| <{VariableScope}.var.{VariableName}.size> | The size of the list |
|
|
|
| <{VariableScope}.var.{VariableName}.first> | The first element of the list |
|
|
|
| <{VariableScope}.var.{VariableName}.last> | The last element of the list |
|
|
|
| <{VariableScope}.var.{VariableName}.reversed> | Returns the list with a reversed order |
|
|
|
| <{VariableScope}.var.{VariableName}.sorted> | Returns the list after sorting it |
|
|
|
| <{VariableScope}.var.{VariableName}.shift> | Returns the first element of the list and removes it from the list itself |
|
|
|
| <{VariableScope}.var.{VariableName}.pop> | Returns the last element of the list and removes it from the list itself |
|
|
|
|
|
|
### Map Variable Type
|
|
|
| **Placeholder** | **Function** |
|
|
|
|-----------------------------|-------------------------------------------------------------------------|
|
|
|
| <{VariableScope}.var.{VariableName}.{Key}> | Returns the value associated with the given key |
|
|
|
| <{VariableScope}.var.{VariableName}.size> | The size of the map |
|
|
|
| <{VariableScope}.var.{VariableName}.keys> | Returns a list of all the keys in the map |
|
|
|
| <{VariableScope}.var.{VariableName}.values> | Returns a list of all the values in the map |
|
|
|
|
|
|
|
|
|
## Target Placeholders
|
|
|
These placeholders will return whatever target selector has been used. For instance <target.name> + @NearestPlayer will return the name of the player closest to the casting mob. The following are only some of the placeholders that can have a `target` scope, and in general any placeholder that is also present in the [Caster Placeholder](#caster-placeholders) section will also work.
|
|
|
|
... | ... | @@ -304,6 +213,248 @@ The following are only some of the placeholders that can have a `trigger` scope, |
|
|
- message{m=You have slain <trigger.var.slainmobs> Mobs!} @trigger ~onInteract
|
|
|
```
|
|
|
|
|
|
## Variable Placeholders
|
|
|
These placeholders will return whatever variable has been called. For instance <caster.var.\[name\]> will return the value of the caster's \[name\] variable.
|
|
|
Some of these variables are only generated and available under some special circumstances, such as some specific trigger/attribute/metamechanic being used previously in the skilltree.
|
|
|
|
|
|
| Variable Placeholder | Generated by | Function |
|
|
|
|:-------------------------:|---------------------------------|------------------------------------------|
|
|
|
| <caster.var.{VariableName}> | | Returns the value of the variable {VariableName} on the variable registry of the caster of the mechanic |
|
|
|
| <target.var.{VariableName}> | | Returns the value of the variable {VariableName} on the variable registry of the target of the mechanic |
|
|
|
| <world.var.{VariableName}> | | Returns the value of the variable {VariableName} on the variable registry of the world the mechanic is used in |
|
|
|
| <global.var.{VariableName}> | | Returns the value of the variable {VariableName} on the variable registry of the whole server |
|
|
|
| <skill.var.{VariableName}> | | Returns the value of the variable {VariableName} on the current [skill tree](https://git.lumine.io/mythiccraft/MythicMobs/-/wikis/Skills/SkillTrees) |
|
|
|
| <skill.var.damage-amount> | [~onDamaged] trigger <br> [~onAttack] trigger <br> [~onBowHit] trigger <br> [onDamaged] mechanic <br> [onAttack] mechanic | Returns the amount of damage taken or done |
|
|
|
| <skill.var.damage-type> | [~onDamaged] trigger <br> [~onAttack] trigger <br> [~onBowHit] trigger <br> [onDamaged] mechanic <br> [onAttack] mechanic | Returns the type of damage taken or done, if any |
|
|
|
| <skill.var.damage-cause> | [~onDamaged] trigger <br> [~onAttack] trigger <br> [~onBowHit] trigger <br> [onDamaged] mechanic <br> [onAttack] mechanic | Returns the cause of damage taken/done |
|
|
|
| <skill.var.aura-name> | Every [aura] mechanic | Returns the name of the aura |
|
|
|
| <skill.var.aura-type> | Every [aura] mechanic | Returns the type of the aura |
|
|
|
| <skill.var.aura-charges> | Every [aura] mechanic | Returns the amount of charges the aura has left |
|
|
|
| <skill.var.aura-duration> | Every [aura] mechanic | Returns the remaining duration of the aura |
|
|
|
| <skill.var.aura-duration-millis> | Every [aura] mechanic | Returns the remaining duration of the aura, in milliseconds |
|
|
|
| <skill.var.aura-stacks> | Every [aura] mechanic | Returns the amount of stacks the aura has left |
|
|
|
| <skill.var.input> | [onChat] mechanic | Returns the chat input |
|
|
|
| <skill.targets> | | Returns the amount of inherited targets |
|
|
|
| <skill.var.interval> | Using the `repeat` and `repeatInterval` [universal attributes] | Returns the current iteration |
|
|
|
| <skill.var.itr> | Using the `repeat` and `repeatInterval` [universal attributes] | Returns the current iteration |
|
|
|
| <skill.var.volume> | [~onHear] trigger | Returns a float value between 1 and 15 representing the intensity of the sound. Directly proportional to the distance (the further away the source, the higher this value) |
|
|
|
| <skill.var.sound-type> | [~onHear] trigger | Returns the type of the sound |
|
|
|
| <skill.var.hit-block-type> | [raytrace] mechanic | Returns the block that was hit, or AIR if none |
|
|
|
| <skill.var.bow-tension> | [~onShoot] trigger | Returns the force with which the projectile has been shot |
|
|
|
|
|
|
```yaml
|
|
|
Skills:
|
|
|
- setvariable{var=caster.test1;val=1} @self
|
|
|
- setvariable{var=target.test2;val=2} @self
|
|
|
- message{m=<caster.var.test1> <caster.var.test2> <target.var.test1> <target.var.test2>} @self
|
|
|
```
|
|
|
> If you execute this metaskill yourself, this will send you a message saying `1 2 1 2` because the target of every mechanic is the caster, so the affected registry is always the caster's even if a "target" scope is used
|
|
|
|
|
|
## Meta Variable Placeholders
|
|
|
|
|
|
You can append some keywords (that we will call "meta keywords"), each specific to a variable's type, at the end of a variable placeholder in order to modify its return value and type. Each keyword has an
|
|
|
- `Input Type`, which is the variable type the keyword applies to
|
|
|
- `Output Type`, which is the variable type that can be created from the keyword's returned value
|
|
|
|
|
|
> Placeholder support is allowed in every place inside of Variable Placeholders, so each keyword can also be another placeholder to be parsed
|
|
|
|
|
|
```yaml
|
|
|
<{VariableScope}.var.{VariableName}.{keywords}>
|
|
|
```
|
|
|
|
|
|
```yaml
|
|
|
<skill.var.exampleString.capitalize>
|
|
|
```
|
|
|
> Among all keywords for the String type, we are using the `capitalize` one, which has as an output a String type. This means that
|
|
|
> - It is applied to a String variable
|
|
|
> - It does some form of conversion to its value (in this case, capitalizing every character of the string)
|
|
|
> - It returns a String value
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
<skill.var.exampleString.size>
|
|
|
```
|
|
|
> Among all keywords for the String type, we are using the `size` one, which has as an output an Integer type. This means that
|
|
|
> - It is applied to a String variable
|
|
|
> - It does some form of conversion to its value (in this case, returning the length of the string)
|
|
|
> - It returns an Integer value
|
|
|
|
|
|
##
|
|
|
|
|
|
Given that each meta keyword has a specific input and output type, it is possible to *chain* them together, obtaining a compound effect where each keyword coverts the variable's value and pass the result to the following one
|
|
|
|
|
|
```yaml
|
|
|
<skill.var.exampleString.substring.0.9.size.add.1>
|
|
|
```
|
|
|
> Among all keywords for the String type, we are using the `substring` one, which has as an output a String type. This means that
|
|
|
> - It is applied to a String variable
|
|
|
> - It does some form of conversion to its value (in this case, extracting the first 10 characters from the string)
|
|
|
> - It returns a String value
|
|
|
>
|
|
|
> Among all keywords for the String type, we are using the `size` one, which has as an output an Integer type. This means that
|
|
|
> - It is applied to a String variable (which the `substring` keyword just returned)
|
|
|
> - It does some form of conversion to its value (In this case, returning the length of the string, which we know will be between 0 and 10)
|
|
|
> - It returns an Integer value
|
|
|
>
|
|
|
> Among all keywords for the Integer type, we are using the `add` one, which has as an output an Integer type. This means that
|
|
|
> - It is applied to an Integer variable (which the `size` keyword just returned)
|
|
|
> - It does some form of conversion to its value (In this case, adding a value of 1 to the integer's value)
|
|
|
> - It returns an Integer value
|
|
|
|
|
|
### Universal Meta Keywords
|
|
|
| Placeholder | Return Type | Return Value |
|
|
|
|--------------|-------------|----------|
|
|
|
| .expires | BOOLEAN | Whether the variable can expire |
|
|
|
| .expiration | TIME | The expiration timestamp for the variable |
|
|
|
| .saved | BOOLEAN |Whether the variable is saved |
|
|
|
| .type | STRING | The type of the variable |
|
|
|
| .get | STRING | Forcefully returns the value of the variable. Used to make the "to{VariableType}" metadata return a correctly formatted value |
|
|
|
| .toint | INTEGER | Converts the value to an Integer without doing any specific operations, allowing chaining for Integer operations. If not further metadata is used after this, the value will not be formatted as an Integer |
|
|
|
| .tofloat | FLOAT | Converts the value to a Float without doing any specific operations, allowing chaining for Float operations. If not further metadata is used after this, the value will not be formatted as a Float |
|
|
|
| .todouble | DOUBLE | Converts the value to a Double without doing any specific operations, allowing chaining for Double operations. If not further metadata is used after this, the value will not be formatted as a Double |
|
|
|
| .toboolean | BOOLEAN | Converts the value to a Boolean without doing any specific operations, allowing chaining for Boolean operations. If not further metadata is used after this, the value will not be formatted as a Boolean |
|
|
|
| .tostring | STRING | Converts the value to a String without doing any specific operations, allowing chaining for String operations. If not further metadata is used after this, the value will not be formatted as a String |
|
|
|
| .tolocation | LOCATION | Converts the value to a Location without doing any specific operations, allowing chaining for Location operations. If not further metadata is used after this, the value will not be formatted as a Location |
|
|
|
| .tovector | VECTOR | Converts the value to a Vector without doing any specific operations, allowing chaining for Vector operations. If not further metadata is used after this, the value will not be formatted as a Vector |
|
|
|
| .tolist | LIST | Converts the value to a List without doing any specific operations, allowing chaining for List operations. If not further metadata is used after this, the value will not be formatted as a List |
|
|
|
| .toset | SET | Converts the value to a Set without doing any specific operations, allowing chaining for Set operations. If not further metadata is used after this, the value will not be formatted as a Set |
|
|
|
| .tomap | MAP | Converts the value to a Map without doing any specific operations, allowing chaining for Map operations. If not further metadata is used after this, the value will not be formatted as a Map |
|
|
|
| .totime | TIME | Converts the value to a Time without doing any specific operations, allowing chaining for Time operations. If not further metadata is used after this, the value will not be formatted as a Time |
|
|
|
|
|
|
### Integer Meta Keywords
|
|
|
| Placeholder | Return Type | Return Value |
|
|
|
|--------------|-------------|----------|
|
|
|
| .add.{Integer} | INTEGER | The addition between the value and the specified Integer |
|
|
|
| .sub.{Integer} | INTEGER | The subtraction between the value and the specified Integer |
|
|
|
| .mul.{Integer} | INTEGER | The multiplication between the value and the specified Integer |
|
|
|
| .div.{Integer} | INTEGER | The division between the value and the specified Integer |
|
|
|
| .abs | INTEGER | The absolute value of the value |
|
|
|
|
|
|
### Float Meta Keywords
|
|
|
| Placeholder | Return Type | Return Value |
|
|
|
|--------------|-------------|----------|
|
|
|
| .add.{Float} | FLOAT | The addition between the value and the specified Float |
|
|
|
| .sub.{Float} | FLOAT | The subtraction between the value and the specified Float |
|
|
|
| .mul.{Float} | FLOAT | The multiplication between the value and the specified Float |
|
|
|
| .div.{Float} | FLOAT | The division between the value and the specified Float |
|
|
|
| .abs | FLOAT | The absolute value of the value |
|
|
|
|
|
|
### Double Meta Keywords
|
|
|
| Placeholder | Return Type | Return Value |
|
|
|
|--------------|-------------|----------|
|
|
|
| .add.{Double} | DOUBLE | The addition between the value and the specified Double |
|
|
|
| .sub.{Double} | DOUBLE | The subtraction between the value and the specified Double |
|
|
|
| .mul.{Double} | DOUBLE | The multiplication between the value and the specified Double |
|
|
|
| .div.{Double} | DOUBLE | The division between the value and the specified Double |
|
|
|
| .abs | DOUBLE | The absolute value of the value |
|
|
|
|
|
|
### Boolean Meta Keywords
|
|
|
| Placeholder | Return Type | Return Value |
|
|
|
|--------------|-------------|----------|
|
|
|
| .inverse | BOOLEAN | The inverse of the value |
|
|
|
| .number | INTEGER | The value as either a 0 (false) or 1 (true) |
|
|
|
| .yesno | STRING | The value as either a no (false) or yes (true) |
|
|
|
| .union.{Boolean} | BOOLEAN | Logical OR with specified Boolean |
|
|
|
| .intersection.{Boolean} | BOOLEAN | Logical AND with specified Boolean |
|
|
|
| .difference.{Boolean} | BOOLEAN | True if value is true and argument is false |
|
|
|
|
|
|
### String Meta Keywords
|
|
|
| Placeholder | Return Type | Return Value |
|
|
|
|--------------|-------------|--------------|
|
|
|
| .size | INTEGER | The length of the string |
|
|
|
| .uppercase | STRING | The string in uppercase |
|
|
|
| .lowercase | STRING | The string in lowercase |
|
|
|
| .capitalize | STRING | The string with the first character in uppercase |
|
|
|
| .trim | STRING | The string with leading and trailing spaces removed |
|
|
|
| .replace.{old}.{new} | STRING | The string with occurrences of `old` replaced by `new` |
|
|
|
| .remove.{text} | STRING | The string with occurrences of `text` removed |
|
|
|
| .contains.{text} | BOOLEAN | Whether the string contains `text` |
|
|
|
| .substring.{start}.{end} | STRING | A substring from index `start` to `end` |
|
|
|
| .split.{regex}.{joiner} | STRING | Splits the string by `regex`, then joins it with `joiner` |
|
|
|
| .indexof.{text} | INTEGER | The index of the first occurrence of `text` |
|
|
|
| .lastindexof.{text} | INTEGER | The index of the last occurrence of `text` |
|
|
|
| .startswith.{text} | BOOLEAN | Whether the string starts with `text` |
|
|
|
| .endswith.{text} | BOOLEAN | Whether the string ends with `text` |
|
|
|
| .append.{text} | STRING | Appends `text` to the end of the string |
|
|
|
| .prepend.{text} | STRING | Prepends `text` to the beginning of the string |
|
|
|
| .insert.{index}.{text} | STRING | Inserts `text` at the specified `index` |
|
|
|
| .regex.{pattern} | BOOLEAN | Whether the string matches the regex `pattern` |
|
|
|
| .{index} | STRING | Returns the character at the specified `index` |
|
|
|
|
|
|
### Set Meta Keywords
|
|
|
| Placeholder | Return Type | Return Value |
|
|
|
|--------------|-------------|--------------|
|
|
|
| .size | INTEGER | The number of elements in the set |
|
|
|
| .join.{delimiter} | STRING | Joins all elements using the `delimiter` |
|
|
|
| .contains.{element} | BOOLEAN | Whether the set contains the given `element` |
|
|
|
|
|
|
### Location Meta Keywords
|
|
|
| Placeholder | Return Type | Return Value |
|
|
|
|--------------|-------------|--------------|
|
|
|
| .x | DOUBLE | The X coordinate |
|
|
|
| .y | DOUBLE | The Y coordinate |
|
|
|
| .z | DOUBLE | The Z coordinate |
|
|
|
| .world | STRING | The world name |
|
|
|
| .yaw | DOUBLE | The yaw |
|
|
|
| .pitch | DOUBLE | The pitch |
|
|
|
| .coords | LIST | A list with the X, Y, and Z coordinates |
|
|
|
|
|
|
### Vector Meta Keywords
|
|
|
| Placeholder | Return Type | Return Value |
|
|
|
|--------------|-------------|--------------|
|
|
|
| .x | DOUBLE | The X component |
|
|
|
| .y | DOUBLE | The Y component |
|
|
|
| .z | DOUBLE | The Z component |
|
|
|
| .normalized | VECTOR | The normalized vector |
|
|
|
| .length | DOUBLE | The length (magnitude) of the vector |
|
|
|
| .mul.{vector} | VECTOR | Multiplies the vector by another vector |
|
|
|
| .div.{vector} | VECTOR | Divides the vector by another vector |
|
|
|
| .add.{vector} | VECTOR | Adds another vector |
|
|
|
| .sub.{vector} | VECTOR | Subtracts another vector |
|
|
|
| .rotate.{axis}.{angle} | VECTOR | Rotates the vector around `axis` by `angle` radians |
|
|
|
|
|
|
### List Meta Keywords
|
|
|
| Placeholder | Return Type | Return Value |
|
|
|
|--------------|-------------|--------------|
|
|
|
| .size | INTEGER | Number of elements in the list |
|
|
|
| .first | STRING | First element in the list |
|
|
|
| .last | STRING | Last element in the list |
|
|
|
| .reverse | LIST | The list reversed |
|
|
|
| .sort | LIST | The list sorted alphabetically |
|
|
|
| .pop | STRING | Removes and returns the last element. Does side effect on the list |
|
|
|
| .shift | STRING | Removes and returns the first element. Does side effect on the list |
|
|
|
| .get.{index} | STRING | Element at specified `index` |
|
|
|
| .join.{delimiter} | STRING | Joins elements using `delimiter` |
|
|
|
| .contains.{element} | BOOLEAN | Whether the list contains `element` |
|
|
|
| .maxnumber | DOUBLE | Maximum numerical value in list |
|
|
|
| .minnumber | DOUBLE | Minimum numerical value in list |
|
|
|
| .indexof.{value} | INTEGER | Index of first occurrence of `value` |
|
|
|
| .lastindexof.{value} | INTEGER | Index of last occurrence of `value` |
|
|
|
| .slice.{from}.{to} | LIST | Slice of list from `from` to `to` |
|
|
|
| .slicefrom.{index} | LIST | Slice of list from `index` to end |
|
|
|
| .sliceto.{index} | LIST | Slice of list from start to `index` |
|
|
|
| .append.{value} | LIST | Adds `value` to the end of the list |
|
|
|
| .prepend.{value} | LIST | Adds `value` to the start of the list |
|
|
|
| .insert.{index}.{value} | LIST | Inserts `value` at the given `index` |
|
|
|
| .remove.{index} | LIST | Removes value at given `index` |
|
|
|
| .{index} | STRING | Element at specified `index` |
|
|
|
|
|
|
### Map Meta Keywords
|
|
|
| Placeholder | Return Type | Return Value |
|
|
|
|--------------|-------------|--------------|
|
|
|
| .size | INTEGER | Number of key-value pairs |
|
|
|
| .keys | LIST | List of all keys |
|
|
|
| .values | LIST | List of all values |
|
|
|
| .get.{key} | STRING | Value associated with the specified `key` |
|
|
|
| .{key} | STRING | Value associated with the specified `key` |
|
|
|
|
|
|
### Time Meta Keywords
|
|
|
| Placeholder | Return Type | Return Value |
|
|
|
|--------------|-------------|--------------|
|
|
|
| .delta.{timestamp} | INTEGER | Difference between the value's time and the and given `timestamp` |
|
|
|
| .formatted.{pattern} | STRING | Formatted date/time using the specified pattern. The pattern can be anything the Java function [ZoneOffset.of](https://docs.oracle.com/javase/8/docs/api/java/time/ZoneOffset.html#of-java.lang.String-) accepts |
|
|
|
| .duration | STRING | Interprets the Time as a raw "amount of seconds" and displays the total amount of Seconds, Minutes, Hours, Days, Months and Years. Can be useful for countdowns and the likes, especially if paired with the `.delta` meta keywords|
|
|
|
|
|
|
# Placeholder Attributes
|
|
|
Some placeholders can use a set of attributes to further define the output they will give
|
|
|
|
... | ... | |