Variables - elBukkit/MagicPlugin GitHub Wiki
Magic supports variables that can be defined and modified by spells.
Creating and Setting Variables
The ModifyVariable action is used to create a variable or update its value.
This action has the following parameters:
- variable : The name of the variable to modify
- default : The value to set the variable to initially. This only happens once, on the first cast of a spell using a variable
- value : The value to update the variable to. This can include references to variables (including this one), attributes or placeholders
- clear : Set to
true
to reset this variable so it will get its default value on next use.
Example
This will increment a variable on each cast, starting at 10:
actions:
- class: ModifyVariable
variable: count
default: 10
value: "count + 1"
Using Variables
Variables can be used in spell parameters, CheckRequirements, and Message and Command actions.
In parameters you simply refer to the variable by its name, such as count / 4
.
In Message and Command actions you can refer to a variable two different ways:
- $variable : This will output a floating-point representation of the variable, such as
40.3
- @variable : This will round the variable down and output an integer representation, such as
40
Example
Here is an example of punishing a player after having cast a spell too many times:
- class: CheckRequirements
requirements:
- variables:
- variable: count
min: 50
actions:
- class: Message
message: "You have cast this @count times, it's too much!"
- class: Damage
damage: "count / 4"
Scope
Variables can have different "scopes". A scope defines how long a variable lasts and what can see and modify that variable. This is set via the scope
parameter of the ModifyVariable action.
Available scopes include:
- cast : (The default) This variable will only last for one spell cast and can not be seen by other casts.
- spell : This variable can only be seen by this specific spell, but survives across multiple casts
- mage : This variable can be seen by any spell casts from this player. These work very similarly to attributes.
Full Examples
See the variables folder for several working examples.