-
Notifications
You must be signed in to change notification settings - Fork 22
Advanced Scripts
When calling a JavaScript placeholder, arguments may be supplied for extra functionality. These arguments are included after the placeholder name, and are separated by commas. When included, the arguments are passed to the script through an array called args
.
For example, the arguments in the placeholder %javascript_example_test,3,args%
would be test
, 3
, and args
.
Here is an example that returns a random number between the given arguments.
var min = 1;
var max = 25;
function randomInteger() {
if (args.length == 2) {
min = args[0];
max = args[1];
}
var random = Math.random() * (max - min);
random += min;
return Math.floor(random);
}
randomInteger();
Note that it is a good idea to include defaults, or at the very least check that the arguments exist before using them. In the example above, the defaults are min = 1
and max = 25
. So, if the above script were called without any arguments, a random integer between 1 and 25 would still be returned.
Examples (assuming the identifier is called randomintbetween):
-
%javascript_randomintbetween_5,100%
would return a random integer between 5 and 100. -
%javascript_randomintbetween_200,5000%
would return a random integer between 200 and 5000.
Placeholders could also be used as arguments. Instead of using %placeholder% you'll have to use {placeholder}.
Example (assuming the identifier is called check):
-
%javascript_check_{vault_rank}%
would check if the player has the a specific rank and would return something based on their rank.
When a placeholder script is called, the player that is passed to the Javascript-Expansion is also passed to the placeholder script. This player can be accessed with BukkitPlayer
. After receiving, you can access all of the player methods included in the Spigot API.
Here is an example that will return the player's name and their health.
var player = BukkitPlayer;
function playerNameHealth() {
var name = player.getDisplayName();
var health = player.getHealth();
return name + " has " + health + " health!";
}
playerNameHealth();
Produces: when ran.
Just like the player, the server is also passed along to the placeholder script when called. The server may be accessed using BukkitServer
. After receiving, you can access all of the server methods included in the Spigot API.
Here is an example that will display the Server's MOTD through a placeholder.
var server = BukkitServer;
function getMotd() {
var motd = server.getMotd();
return motd;
}
getMotd();
Produces: when the server's MOTD is "A Minecraft Server".
Storing data from within the placeholder script is quite easy. When a placeholder script is called, a Data
object is passed to it. Whenever the script modifies the object, it is modified in Javascript-Expansion as well, and then saved to a data file when the expansion unloads.
Here is an example script that stores how many times a placeholder is viewed by the current player.
// Location keys are just like YAMLConfiguration keys
var dataLoc = "%player_name%.viewed";
function viewCount() {
var views = Data.exists(dataLoc) ? Data.get(dataLoc) : 0;
views++;
Data.set(dataLoc, views);
Placeholder.saveData();
return views;
}
viewCount();
Produces: when parsed for the first and second times for a given player.
Valid Methods:
-
Data.getData()
returns aMap<String, Object>
of the entire placeholder script's data. -
Data.clear()
removes all data. -
Data.exists(key)
returns true if a key exists; else false. -
Data.get(key)
returns the value stored underkey
. -
Data.remove(key)
removes a key from the data. -
Data.set(key, value)
stores avalue
underkey
. -
Data.isEmpty()
returns true if the data is empty; else false. -
Placeholder.saveData()
saves the current data state to the data file.