3.3 skript-reflect: Running Java code

  • Welcome to skUnity!

    Welcome to skUnity! This is a forum where members of the Skript community can communicate and interact. Skript Resource Creators can post their Resources for all to see and use.

    If you haven't done so already, feel free to join our official Discord server to expand your level of interaction with the comminuty!

    Now, what are you waiting for? Join the community now!

TPGamesNL

Staff member
Moderator
Supporter
Addon Developer
Dev Programme
Jan 20, 2018
1,501
108
63
21
Calling methods
Syntax:
Code:
%object%.<method name>(%objects%)
Example:
Code:
event-block.breakNaturally()
(last spawned creeper).setPowered(true)
player.giveExpLevels({_levels})

Methods may be used as effects, expressions, and conditions. If used as a condition, the condition will pass as long as the return value of the method is not false, null, or 0.

Calling non-public methods
If the method you're trying to invoke is not public, you must prefix the method name with the declaring class in brackets. Since an object may have a non-public method with the same name in multiple superclasses, you must explicitly specify where to find the method.

Example:
Code:
{_arraylist}.[java.util.ArrayList]fastRemove(1)
# or, if you have the declaring class imported:
{_arraylist}.[ArrayList]fastRemove(1)

Calling overloaded methods
Generally, skript-reflect can infer the correct overloaded method to call from the arguments passed at runtime. If you need to use a certain implementation of a method, you may append a comma separated list to the end of the method name surrounded in brackets.

Example:
Code:
System.out.println[java.lang.Object]({_something})
# or, if you have the parameter classes imported:
System.out.println[Object]({_something})

Math.max[int, int](0, {_value})

Calling fields
Syntax:
Code:
%object%.<descriptor>

Calling non-public fields
If the field you're trying to use is not public, you must prefix the field name with the declaring class in brackets. Since an object may have a non-public field with the same name in multiple superclasses, you must explicitly specify where to find the field.

Example:

Code:
{_hashmap}.[java.util.HashMap]modCount
# or, if you have the declaring class imported:
{_hashmap}.[HashMap]modCount

Calling constructors
Syntax:
Code:
[a] new %javatype%(%objects%)
Example:
Code:
new Location(player's world, 0, 0, 0)
 
Last edited: