<hudson _class='hudson.model.Hudson'><assignedLabel><action></action><busyExecutors>0</busyExecutors><idleExecutors>2</idleExecutors><loadStatistics _class='hudson.model.Label$1'></loadStatistics><name>built-in</name><node _class='hudson.model.Hudson'><nodeName></nodeName></node><offline>false</offline><totalExecutors>2</totalExecutors></assignedLabel><mode>NORMAL</mode><nodeDescription>the Jenkins controller's built-in node</nodeDescription><nodeName></nodeName><numExecutors>2</numExecutors><description>If any extensions or buildtools are missing poke `@nilleke`, `@kookster` or `@pseudoknight` on Discord.  
**We are not planning on shutting down the Jenkins any time soon!**

Projects can depend on the full Bukkit/Spigot jar via maven dependency.  
Projects can use the LTS version of JDK (Currently: Adoptium's Eclipse Temurin 8, 11, 17, 21 and 25), other versions could be requested if needed.  
This Jenkins has the [Embeddable Build Status](https://plugins.jenkins.io/embeddable-build-status/) plugin.</description><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>CHCitizens
========

CHCitizens is an extension for CommandHelper that allows to create, manage and interact with the NPCs of Citizens plugin.

To install the extension, put the [jar file](https://letsbuild.net/jenkins/job/CHCitizens/) in the extensions folder of the CommandHelper folder.

- CHCitizens 1.2.x is compatible with Citizens 2.0.31 - 2.0.38, CommandHelper 3.3.5 and Spigot 1.16.5+
- CHCitizens 1.1.9 is compatible with Citizens 2.0.24 - 2.0.30, CommandHelper 3.3.4 - 3.3.5 and Spigot 1.13.2 - 1.19.3

The documentation for the extension is [here](documentation/Documentation.md).</description><displayName>CHCitizens</displayName><fullDisplayName>CHCitizens</fullDisplayName><fullName>CHCitizens</fullName><name>CHCitizens</name><url>https://letsbuild.net/jenkins/job/CHCitizens/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHCitizens/4/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHCitizens/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHCitizens/2/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHCitizens/2/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHCitizens/4/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHCitizens/4/</url></lastCompletedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHCitizens/4/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHCitizens/4/</url></lastSuccessfulBuild><nextBuildNumber>5</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>com.hekta:CHCitizens</name><url>https://letsbuild.net/jenkins/job/CHCitizens/com.hekta$CHCitizens/</url><color>blue</color><displayName>CHCitizens</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>This is an extension for the CommandHelper plugin that uses the JDA library to talk to your Discord server.

## Download
[CHDiscord 2.15.1](https://letsbuild.net/jenkins/job/CHDiscord/)

The latest version requires CommandHelper 3.3.4 build #3978 or later.

The CHDiscord branch named [3.3.2](https://github.com/PseudoKnight/CHDiscord/tree/3.3.2) is back-ported for CommandHelper 3.3.2.

## Instructions

You'll first need to create a Discord application [here](https://discordapp.com/developers/applications/me).
Then add a Bot to it. Copy the TOKEN for the Bot, as you'll use this later in your connection script.
Be sure to enable `SERVER MEMBERS INTENT` and `MESSAGE CONTENT INTENT` of the Privileged Gateway Intents.

Next you'll need to add the bot to your Discord guild server. Go to the URL Generator under OAuth2.
Select the scope 'bot', and optionally check any permissions you want the bot to start with. (see functions below)
Go to the generated URL in your browser to authorize the bot for your guild server.

Finally, to connect this extension to Discord you'll need your Discord guild server id, which you can get by right-clicking
your server name in Discord and clicking "Copy ID". (only visible when Developer Mode is enabled in Advanced User Settings)
Use this together with the TOKEN above to run `discord_connect()` in your connection script.

## Bot Functions

### discord_connect(token, serverId, [callback] | profile, [callback])
Connects to Discord server via token and default guild server id.
The optional callback closure will be executed when a connection is made.
The profile may be a string, which should refer to a profile defined in profiles.xml,
with the keys token and serverId, or an array, with the same keys.

The profile should be defined such as

    &lt;profile id="discordCredentials"&gt;
        &lt;type&gt;discord&lt;/type&gt;
        &lt;token&gt;abcdefg&lt;/token&gt;
        &lt;serverId&gt;12345&lt;/serverId&gt;
    &lt;/profile&gt;

You have to run discord_connect() before you can use the other functionality of this extension, otherwise a
NotFoundException will be thrown. You cannot use other functions until the callback closure is executed.

### discord_disconnect()
Disconnects from the Discord server.

### discord_set_activity(type, string, [url])
Sets the activity tag for the bot.  
Activity type can be one of PLAYER, STREAMING, LISTENING, WATCHING, CUSTOM_STATUS, COMPETING.  
Activity string can be anything but an empty string.  
If streaming, a valid Twitch URL must also be provided.  
If not, or it's invalid, type will revert to PLAYING.

### discord_private_message(user, message)
Sends a private message to the specified Discord user.  
See discord_broadcast() documentation for message format.  
Will fail if the user is not a cached member on one of the connected servers.  
Messages have a 2000-character limit.

### discord_set_allowed_mentions(array, [replied_user])
Sets mentions that are allowed by default in sent messages.  
Array can include 'USER', 'ROLE', and 'EVERYONE' for parsed mentions.  
If null, it resets the default to all types.  
The replied_user argument is a boolean for whether users in referenced messages are mentioned. (default: true)

### discord_get_servers()
Gets an array of ids for all the guild servers that the bot is added to.

### discord_request(method, route, [dataObject], [onSuccess], [onFailure])
Sends a custom HTTP request to Discord.  
This is for advanced users that need to use Discord API that is not yet added to this extension.  
You must refer to the Discord documentation for routes, methods, parameters, and permissions.  
The method argument can be one of GET, PATCH, DELETE, PUT or POST.  
The route must not start with a forward slash.  
The dataObject argument is the JSON parameters, and can be an array, string or null.  
If the request was successful, the onSuccess closure will be executed and passed an array of response data.  
If the request failed, the onFailure closure will instead be executed and passed a failure message.  
If not provided, the default handler will instead log any failures.

Example GET:
```
discord_request('GET', 'guilds/'.@guildId.'/members?limit=20', null, closure(@result) {
	foreach(@member in @result) {
		msg(@member['username']);
	}
}, closure(@failure) {
	msg('Request failed: '.@failure);
});
```

Example POST:
```
discord_request('POST', 'channels/'.@channelId.'/messages', array(content: @message));
```

## Guild Server Functions
* The `server` argument is the guild server's unique int id. It is always optional and will fall back to event bind context or the default server.

### discord_get_members([server])
Gets an array of all cached members in this guild server.  
Array contains a list of user int ids.  
Members may not be cached immediately upon bot connection.

### discord_get_members_with_role([server], role)
Like discord_get_members(), but returns only members with a given role.

### discord_retrieve_invites([server], closure)
Retrieves an array of invite arrays for this guild server.  
Passes the array to the callback closure.  
Each invite array contains data about the invite, which has the keys 'code', 'channelid', inviter 'userid', 'uses' and 'max_uses'.  
Requires the `Manage Server` permission.

## Channel Functions
* The `channel` argument can be a channel's unique int id. A channel's exact name can also be used, but if it's not unique,
the first matching channel will be used. If a channel is omitted, it will attempt to use the channel from the event bind context.
If not in an event bind, it will use the default channel.

### discord_broadcast([server], [channel], message, [callback])
Broadcasts text and embeds to the specified channel.  
If channel is omitted, the channel from an event or first publicly viewable channel will be used.  
Message can be a string or a message array object.  
Callback closure is eventually executed with the message id for this message. (cannot be null)  
Message array must contain at least one of the following keys: 'content', 'embed', or 'embeds'.  
It can also contain 'reference_id' (int) for replies,
and 'allowed_mentions' (array with optional 'parse', 'users', 'roles', and 'replied_user' keys)
to override default behavior set by discord_set_allowed_mentions().  
Embed array can include any of the following keys: 'title', 'url', 'description', 'timestamp' (int),
'image' (URL), 'thumbnail' (URL), 'color' (rgb array), 'footer' (array with 'text' and optionally 'icon_url' keys),
'author' (array with 'name' and optionally 'url' and/or 'icon_url' keys), and 'fields'
(an array of field arrays, each with 'name', 'value', and optionally an 'inline' boolean).  
Messages have a 2000-character limit.  
Requires the `View Channels` and `Send Messages` permissions. (or `Send Messages in Threads` for thread channels)  
Also requires `Read Message History` permission for channel replies using 'reference_id'.

Example message/embed object array format: (embeds are as displayed, top to bottom, left to right)
```
array(
  content: "This displays above the embed as normal text.",
  embeds: array(
    array(
      color: array(
        r: 255,
        g: 255,
        b: 255,
      ),
      author: array(
        icon_url: "https://website.com/author_avatar.png",
        name: "PseudoKnight",
        url: "https://website.com/author_link/",
      ),
      thumbnail: "https://website.com/top_right_thumbnail.png",
      title: "Large Bold Text",
      url: "https://website.com/title_link/",
      description: "Normal sized text just under title.",
      fields: array(
        array(
          name: "Field A",
          value: "Value A Below Name",
          inline: true,
        )
      ),
      image: "https://website.com/image.png",
      footer: array(
          icon_url: "https://website.com/footer_icon.png",
          text: "Small text at the bottom.",
      ),
      timestamp: 1698213238389,
    ),
  ),
  allowed_mentions: array(
    parse: array(),
    users: array("PseudoKnight"),
    roles: array("moderator"),
    replied_user: true,
  ),
  reference_id: 1167309410398388254,
)
```

### discord_delete_message([server], channel, id)
Deletes a message with the given id on a channel.  
Requires the `View Channels` permission. (and `Manage Messages` if message is from other user)

### discord_set_channel_topic([server], channel, string)
Sets a topic for a text or news channel.  
Standard channels have a 1024-character limit for topics.  
Only Text and News channels support topics, otherwise an IllegalArgumentException is thrown.  
Requires the `Manage Channels` permission.

### discord_channel_members([server], channel)
Returns an array of ids for members in a channel.  
For voice channels, this returns all members that are currently connected to the channel.  
Otherwise, for text channels this returns all members with the `View Channels` permission.

## Member Functions
* The `member` argument is a user's unique int id (or username). Throws NotFoundException if a member by that id doesn't exist.

### discord_member_info([server], member)
Gets an array of data for Discord user.  
Array contains 'userid', 'username', 'displayname', and 'bot' (boolean).  
For this guild server it also contains:  
'nickname' (empty if not set), 'color' array (null if none), 'joined_at' timestamp, and 'avatar' effective url.

### discord_member_get_roles([server], member)
Gets an associative array of all guild server roles for a member.  
The key is the role name, and the value is the role int id.

### discord_member_set_roles([server], member, role(s), [reason])
Sets the roles for a guild server member.  
The role argument can be an array or a single role.  
A role is either a unique int id or name.  
Optional reason string is supported.  
Throws NotFoundException if a role by that id doesn't exist.  
Requires the `Manage Roles` permission and a role higher than any set roles.

### discord_member_get_nickname([server], member)
Get the server nickname for a guild server member. (empty if not set)  

### discord_member_set_nickname([server], member, string)
Set the server nickname for a guild server member.  
Requires the `Manage Nicknames` permission and a role higher than the target member.

## Voice Functions

### discord_member_get_voice_channel([server], member)
Get the ID of member's current voice channel.  
If the member is not connected to a voice channel, null is returned.

### discord_member_move_voice_channel([server], member, channel)
Moves a member to another voice channel.  
The member must already be connected to a voice channel in the guild server.  
Channel can be null to disconnect user.  
Throws IllegalArgumentException if member is not connected to a voice channel.  
Throws InsufficientPermissionException if the member and bot do not have access to the destination channel.  
Requires the `Move Members` permission.

### discord_member_is_muted([server], member)
Check if a user is muted, either self muted or server muted.

### discord_member_set_muted([server], member, boolean)
Set a user's guild server's muted state.  
Throws IllegalArgumentException if member is not connected to a voice channel.  
Requires the `Mute Members` permission.

## Events

### discord_message_received
This event is called when a user sends a message in a guild server.  
**Prefilters:** username, channel (name)  
**Data:** userid, username, nickname, bot (boolean), serverid, channel (name), channelid, channeltype, message, id (of message), webhook, attachments {{url, filename, description}}, reference {{id, userid, username, message}}

### discord_message_updated
This event is called when a user edits a message in a Discord server.
**Prefilters:** channel (name)  
**Data:** userid, username, nickname, bot (boolean), serverid, channel (name), channelid, channeltype, message, id (of message), webhook, attachments {{url, filename, description}}, reference {{id, userid, username, message}}

### discord_private_message_received
This event is called when a user sends a private message to the bot.  
**Data:** userid, username, displayname, message, id (of message), attachments {{url, filename, description}}, reference {{id, userid, username, message}}

### discord_reaction_added
This event is called when a user adds a reaction to a message.  
**Prefilters:** channel (name)  
**Data:** userid, username, nickname, bot (boolean), serverid, channel (name), channelid, messageid, messageuserid, emoji (unicode character or custom emoji code)

### discord_reaction_removed
This event is called when a user removes a reaction on a message.  
**Prefilters:** channel (name)  
**Data:** userid, username, nickname, bot (boolean), serverid, channel (name), channelid, messageid, emoji (unicode character or custom emoji code)

### discord_voice_joined
This event is called when a user joined a voice channel.  
**Data:** userid, username, nickname, serverid, channel (name), channelid

### discord_voice_left
This event is called when a user left a voice channel.  
**Data:** userid, username, nickname, serverid, channel (name), channelid

### discord_voice_moved
This event is called when a user moves between voice channels.
**Data:** userid, username, nickname, serverid, joined, joinedid, left, leftid.

### discord_member_joined
This event is called when a user joined the guild server.  
**Data:** userid, username, nickname. serverid

### discord_member_left
This event is called when a user left the guild server, including kick/ban.  
**Data:** userid, username, nickname. serverid
</description><displayName>CHDiscord</displayName><fullDisplayName>CHDiscord</fullDisplayName><fullName>CHDiscord</fullName><name>CHDiscord</name><url>https://letsbuild.net/jenkins/job/CHDiscord/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>16</number><url>https://letsbuild.net/jenkins/job/CHDiscord/16/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>15</number><url>https://letsbuild.net/jenkins/job/CHDiscord/15/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>14</number><url>https://letsbuild.net/jenkins/job/CHDiscord/14/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>13</number><url>https://letsbuild.net/jenkins/job/CHDiscord/13/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>12</number><url>https://letsbuild.net/jenkins/job/CHDiscord/12/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>11</number><url>https://letsbuild.net/jenkins/job/CHDiscord/11/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>10</number><url>https://letsbuild.net/jenkins/job/CHDiscord/10/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>9</number><url>https://letsbuild.net/jenkins/job/CHDiscord/9/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>8</number><url>https://letsbuild.net/jenkins/job/CHDiscord/8/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>7</number><url>https://letsbuild.net/jenkins/job/CHDiscord/7/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>6</number><url>https://letsbuild.net/jenkins/job/CHDiscord/6/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CHDiscord/5/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHDiscord/4/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHDiscord/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHDiscord/2/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHDiscord/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHDiscord/1/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>16</number><url>https://letsbuild.net/jenkins/job/CHDiscord/16/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>16</number><url>https://letsbuild.net/jenkins/job/CHDiscord/16/</url></lastCompletedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>16</number><url>https://letsbuild.net/jenkins/job/CHDiscord/16/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>16</number><url>https://letsbuild.net/jenkins/job/CHDiscord/16/</url></lastSuccessfulBuild><nextBuildNumber>17</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>me.pseudoknight:CHDiscord</name><url>https://letsbuild.net/jenkins/job/CHDiscord/me.pseudoknight$CHDiscord/</url><color>blue</color><displayName>CHDiscord</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>This is a CommandHelper extension that adds a MethodScript function to disguise entities using the LibsDisguises plugin.

## Dependencies
* LibsDisguises 9.6.0+
* CommandHelper 3.3.4+
* Spigot 1.13.2+

## Functions

**void disguise_entity(entityUUID, disguiseType, [data])**
Disguises an entity as the specified disguise. If disguiseType is "PLAYER", data can be the player name.
</description><displayName>CHDisguises</displayName><fullDisplayName>CHDisguises</fullDisplayName><fullName>CHDisguises</fullName><name>CHDisguises</name><url>https://letsbuild.net/jenkins/job/CHDisguises/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHDisguises/2/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHDisguises/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHDisguises/1/</url></firstBuild><healthReport><description>Build stability: 1 out of the last 2 builds failed.</description><iconClassName>icon-health-40to59</iconClassName><iconUrl>health-40to59.png</iconUrl><score>50</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHDisguises/2/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHDisguises/2/</url></lastCompletedBuild><lastFailedBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHDisguises/1/</url></lastFailedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHDisguises/2/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHDisguises/2/</url></lastSuccessfulBuild><lastUnsuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHDisguises/1/</url></lastUnsuccessfulBuild><nextBuildNumber>3</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>me.pseudoknight:CHDisguises</name><url>https://letsbuild.net/jenkins/job/CHDisguises/me.pseudoknight$CHDisguises/</url><color>blue</color><displayName>CHDisguises</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>CHDynmap
========

- CHDynmap is an extension for CommandHelper that allows to use and interact with Dynmap plugin (add icons, create markers, web chat event ...).

- To install the extension, put the [jar file](https://letsbuild.net/jenkins/job/CHDynmap/) in the extensions folder of the CommandHelper folder.
 
- The last version should be compatible with at least Dynmap 3.0, CommandHelper 3.3.4, and Bukkit/Spigot/Paper 1.13.2.

- The documentation for the extension is [here](https://github.com/PseudoKnight/CHDynmap/blob/master/documentation/Documentation.md).
</description><displayName>CHDynmap</displayName><fullDisplayName>CHDynmap</fullDisplayName><fullName>CHDynmap</fullName><name>CHDynmap</name><url>https://letsbuild.net/jenkins/job/CHDynmap/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHDynmap/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHDynmap/2/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHDynmap/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHDynmap/1/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHDynmap/3/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHDynmap/3/</url></lastCompletedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHDynmap/3/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHDynmap/3/</url></lastSuccessfulBuild><nextBuildNumber>4</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>com.hekta:CHDynmap</name><url>https://letsbuild.net/jenkins/job/CHDynmap/com.hekta$CHDynmap/</url><color>blue</color><displayName>CHDynmap</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>A CommandHelper extension that adds file access functions.  
Not to be confused with the [CHFiles](https://letsbuild.net/jenkins/job/CHFiles/) extension alternative.

## Functions

* array **chf_directory_list(directory)** - Returns an array containing all files and directories in the given directory.

* boolean **chf_file_exists(path)** - Returns whether the file or directory at the given path exists.

* boolean **chf_is_directory(path)** Returns whether the file at the given path is a directory.

* void **chf_copy(fromPath, toPath, [allowOverwrite], [createRequiredDirs])** - Copies the file or directory (including contents) from the fromPath to the toPath.

* void **chf_delete(path, [allowRemoveDirContent])** - Deletes the file or directory at the given path.

* void **chf_create_file(path, [createRequiredDirs])** - Creates a file at the given path.

* void **chf_create_directory(path, [createRequiredDirs])** - Creates a directory at the given path.

* void **chf_write(path, content, [option])** - Writes the given content to the file at the given path.

* void **chf_write_gzip_binary(path, content, [overwrite])** - Gzips and writes the given byte array to the file at the given path.

* void **chf_write_binary(path, content, [overwrite])** - Writes the given byte array to the file at the given path.</description><displayName>CHFile</displayName><fullDisplayName>CHFile</fullDisplayName><fullName>CHFile</fullName><name>CHFile</name><url>https://letsbuild.net/jenkins/job/CHFile/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHFile/2/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHFile/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHFile/1/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHFile/2/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHFile/2/</url></lastCompletedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHFile/2/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHFile/2/</url></lastSuccessfulBuild><nextBuildNumber>3</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>io.github.pieter12345:CHFile</name><url>https://letsbuild.net/jenkins/job/CHFile/io.github.pieter12345$CHFile/</url><color>blue</color><displayName>CHFile</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>CHFiles is a CommandHelper extension that allows you to work with files and directories.

## Compatibility and Downloads

[CHFiles 2.3.2](https://letsbuild.net/jenkins/job/CHFiles/4/) for CommandHelper 3.3.5  
[CHFiles 2.2.7](https://github.com/PseudoKnight/CHFiles/releases/tag/v2.2.7) for CommandHelper 3.3.4

## Functions:

* void **copy_file(FromFile, ToFile)** - Copies a file or directory to another directory.

* void **create_file(PathToFile)** - Creates a new file.

* void **delete_file(PathToFile)** - Deletes a file or directory.

* array **list_files(PathToDirectory)** - Lists all files and directories in given directory.

* void **rename_file(File, Name)** - Renames a file.

* void **ungz_file(GZFile, ToFile)** - Unzip a file and write it to another file.

* void **write_file(PathToFile, content, [mode])** - Writes data to a file.  
  Accepts a byte array or a string as the content.  
  The mode parameter can be OVERWRITE or APPEND.

* void **async_write_file(PathToFile, content, [mode], [callback])** - Writes data to a file asynchronously.  
  Accepts a byte array or a string as the content.  
  The mode parameter can be OVERWRITE or APPEND. The optional callback must be a closure. It will be executed upon write completion.

* void **async_read_file(PathToFile, callback)** - Asynchronously reads in a file.
  Check [here](https://methodscript.com/docs/3.3.3/API/functions/async_read).

* boolean **file_exists(Path)** - Check if a file exists.

* void **create_dir(PathToDir)** - Create a new directory.

* boolean **is_dir(PathToFile)** - Checks if a path is a directory.

* boolean **is_file(PathToFile)** - Checks if a path is a file.

* string **get_absolute_path([Path])** - Gets the absolute path of a file, or this script file if none is specified.

* int **file_last_modified(PathToFile)** - Returns the time a file was last modified as a unix time stamp.  
  Will return 0 if the file does not exist or an I/O error occurs.
</description><displayName>CHFiles</displayName><fullDisplayName>CHFiles</fullDisplayName><fullName>CHFiles</fullName><name>CHFiles</name><url>https://letsbuild.net/jenkins/job/CHFiles/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHFiles/4/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHFiles/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHFiles/2/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHFiles/2/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHFiles/4/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHFiles/4/</url></lastCompletedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHFiles/4/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHFiles/4/</url></lastSuccessfulBuild><nextBuildNumber>5</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>CHFiles:CHFiles</name><url>https://letsbuild.net/jenkins/job/CHFiles/CHFiles$CHFiles/</url><color>blue</color><displayName>CHFiles</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>Run C/C++ code directly from MethodScript!</description><displayName>CHGCC</displayName><fullDisplayName>CHGCC</fullDisplayName><fullName>CHGCC</fullName><name>CHGCC</name><url>https://letsbuild.net/jenkins/job/CHGCC/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHGCC/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHGCC/2/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHGCC/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHGCC/1/</url></firstBuild><healthReport><description>Build stability: 1 out of the last 3 builds failed.</description><iconClassName>icon-health-60to79</iconClassName><iconUrl>health-60to79.png</iconUrl><score>66</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHGCC/3/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHGCC/3/</url></lastCompletedBuild><lastFailedBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHGCC/1/</url></lastFailedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHGCC/3/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHGCC/3/</url></lastSuccessfulBuild><lastUnsuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHGCC/1/</url></lastUnsuccessfulBuild><nextBuildNumber>4</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>com.chgcc:chgcc</name><url>https://letsbuild.net/jenkins/job/CHGCC/com.chgcc$chgcc/</url><color>blue</color><displayName>CHGCC</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>Provides Geyser API functions for CommandHelper

## Functions
boolean **geyser_connected([player])** Returns whether a player is connected using a Bedrock client.

string **geyser_input_mode([player])** Returns the player's input mode.  
Will be null if player is not connected using a Bedrock client.  
Otherwise will return KEYBOARD_MOUSE, TOUCH, CONTROLLER, VR, or UNKNOWN.

string **geyser_xuid([player])** Returns the player's XUID, or null.

string **geyser_name([player])** Returns the player's gamertag, or null.

string **geyser_username_prefix()** Returns the username prefix defined in floodgate config, or null.</description><displayName>CHGeyser</displayName><fullDisplayName>CHGeyser</fullDisplayName><fullName>CHGeyser</fullName><name>CHGeyser</name><url>https://letsbuild.net/jenkins/job/CHGeyser/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHGeyser/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHGeyser/2/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHGeyser/2/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHGeyser/3/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHGeyser/3/</url></lastCompletedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHGeyser/3/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHGeyser/3/</url></lastSuccessfulBuild><nextBuildNumber>4</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>me.pseudoknight:chgeyser</name><url>https://letsbuild.net/jenkins/job/CHGeyser/me.pseudoknight$chgeyser/</url><color>blue</color><displayName>CHGeyser</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>A CommandHelper extension to access the GriefPrevention API on a Minecraft server.

## Downloads

CHGriefPrevention 2.1.1 is compatible with GP 16.18.x and CommandHelper 3.3.5  
[CHGriefPrevention 2.0.0](https://github.com/PseudoKnight/CHGriefPrevention/releases/tag/2.0.0) is compatible with GP 16.18.x and CommandHelper 3.3.5  
[CHGriefPrevention 1.2.2](https://github.com/PseudoKnight/CHGriefPrevention/releases/tag/1.2.2) is compatible with GP 16.17.x and CommandHelper 3.3.4

## Functions
### boolean has\_gp\_buildperm([player,] location):
See if a player can build at a given location.
### int get\_claim\_id(location):
Gets the id of a claim at given location.
### array get\_claim\_info(location | id):
Returns various data about a claim.

The following keys are present in the array:  
`corners`: (array) An array of two location arrays for each corner of the claim.  
`owner`: (string) The claim owner's name.  
`isadmin`: (boolean) Whether or not this is an administrative claim.  
`permissions`: (array) An associative array of arrays of permissions for 'builders', 'containers', 'accessors', and 'managers'.  
`id`: (int) The id of the claim (doesn't exist for subclaims).  
`parentId`: (int) The id of the parent claim (exists for subclaims only).  
`subclaims`: (array) An array of subclaim arrays, which contain the key 'owner'.</description><displayName>CHGriefPrevention</displayName><fullDisplayName>CHGriefPrevention</fullDisplayName><fullName>CHGriefPrevention</fullName><name>CHGriefPrevention</name><url>https://letsbuild.net/jenkins/job/CHGriefPrevention/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CHGriefPrevention/5/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHGriefPrevention/4/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHGriefPrevention/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHGriefPrevention/2/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHGriefPrevention/2/</url></firstBuild><healthReport><description>Tests: 0 tests failing out of a total of 1 test.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CHGriefPrevention/5/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CHGriefPrevention/5/</url></lastCompletedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CHGriefPrevention/5/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CHGriefPrevention/5/</url></lastSuccessfulBuild><nextBuildNumber>6</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>com.brothercraft:CHGP</name><url>https://letsbuild.net/jenkins/job/CHGriefPrevention/com.brothercraft$CHGP/</url><color>blue</color><displayName>CHGP</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>Introduction
============

CHGroovy is an extension to CommandHelper, that adds a single function, groovy() to your scripts. This allows you to dynamically run groovy scripts, from anywhere that CommandHelper can get them from, be it a file on the disk, or player input. This extension is mostly meant for debugging purposes, however, it can be used as a full blown script execution center.

The function takes up to 3 parameters. The first parameter is the script itself. This parameter can be the only one sent, and it will run just fine, for instance:

    groovy('print "Hello World!"')

will print "Hello World!" to the console. Keep in mind that since this is groovy, you can access all parts of the JVM at runtime, which is why this tool is excellent for debugging purposes.

The second parameter is a list of variable bindings to be passed in to groovy's environment. For instance, if you run:

    groovy('print x', array(x: 4))

Then it will print "4" to the console. The last parameter is an array of variable bindings to return. These will be returned as an associative array. For instance:

    @ret = groovy('print x; z = 5', array(x: 4), array('z'))
    msg('Value of z is: '.@ret['z'])

Would print "4" to the console, and msg "5" out to the user. Values are attempted to be converted, if they are primitives, but there are no guarantees that complex values will be interpreted correctly. If this is the case, they will simply be toString'd, and returned as a string.

In Game Interpreter
===================

You can use an in game interpreter, just like CommandHelper's built in /interpreter by using this code:

    /g [$] = &gt;&gt;&gt;
            if($ == ''){
                    export('groovy.status.'.player(), array(
                            multiline: false,
                            buffer: '',
                    ))
                    @pcID = bind(player_chat, null, array(player: player()), @e,
                            @line = @e['message']
                            @status = import('groovy.status.'.player())
                            if(@line == '-'){
                                    unbind()
                                    unbind(import('groovy.player_leave.'.player()))
                                    msg(color('YELLOW').'Now exiting interpreter mode')
                            } else if(@status['multiline'] &amp;&amp; @line == '&gt;'.'&gt;&gt;'){
                                    # Entering multiline mode
                                    @status['multiline'] = true
                                    msg(color(YELLOW).'You are now in multiline mode. Type &lt;&lt;&lt; on a line by itself to execute.')
                                    msg(color(GRAY).'&gt;'.'&gt;&gt;')
                            } else if(@status['multiline'] &amp;&amp; @line == '&lt;'.'&lt;&lt;'){
                                    @buffer = @status['buffer']
                                    @status['buffer'] = ''
                                    msg(color(GRAY).'&lt;'.'&lt;&lt;')
                                    try(
                                            groovy(@buffer)
                                    , @e, #catch
                                            msg(color(RED).@e[1])
                                    )
                            } else {
                                    if(@status['multiline']){
                                            # Multiline mode, buffer this
                                            msg(color(GRAY).@line)
                                            @status['buffer'] .= @line.'\n'
                                    } else {
                                            # Single line mode, ready to execute this line
                                            msg(color(GRAY).@line)
                                            try(
                                                    groovy(@line)
                                            , @e, #catch
                                                    msg(color(RED).@e[1])
                                            )
                                    }
                            }
                            export('groovy.status.'.player(), @status)
                            # Cancel the chat, since we're consuming it
                            cancel()
                    )
                    export('groovy.player_chat.'.player(), @pcID)
                    @plID = bind(player_quit, null, array(player: player()), @e,
                            unbind(import('groovy.player_chat.'.player()))
                            unbind()
                    )
                    export('groovy.player_leave.'.player(), @plID)
                    msg(color(YELLOW).'You are now in'.color(LIGHT_PURPLE).'Groovy'.color(YELLOW).' interpreter mode.'
                            .' Type a dash (-) on a line by itself to exit, and &gt;&gt;&gt; to enter multiline     mode')
            } else {
                    try(
                        groovy($)
                    , @e, #catch
                        msg(color(RED).@e[1])
                    )
            }
    &lt;&lt;&lt;

If you run /g by itself, you get put into interpreter mode, if you run /g SCRIPT, then it will immediately run the script for you.

For this extension to be useful, you need to know Groovy. The Groovy user guide can be found [here](https://groovy-lang.org/documentation.html).
You can skip any sections that refer to installing and running Groovy. As long as you can run groovy('print "Hello World!"') from a script,
it is correctly set up. As this is an unrestricted shell, it is extremely important that you restrict access to this function. Otherwise,
an attacker could take complete control of your system, since they could potentially run raw, fully functional, unrestricted code on your
machine.
</description><displayName>CHGroovy</displayName><fullDisplayName>CHGroovy</fullDisplayName><fullName>CHGroovy</fullName><name>CHGroovy</name><url>https://letsbuild.net/jenkins/job/CHGroovy/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>6</number><url>https://letsbuild.net/jenkins/job/CHGroovy/6/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CHGroovy/5/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHGroovy/4/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHGroovy/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHGroovy/2/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHGroovy/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHGroovy/1/</url></firstBuild><healthReport><description>Build stability: 2 out of the last 5 builds failed.</description><iconClassName>icon-health-40to59</iconClassName><iconUrl>health-40to59.png</iconUrl><score>60</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>6</number><url>https://letsbuild.net/jenkins/job/CHGroovy/6/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>6</number><url>https://letsbuild.net/jenkins/job/CHGroovy/6/</url></lastCompletedBuild><lastFailedBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHGroovy/3/</url></lastFailedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>6</number><url>https://letsbuild.net/jenkins/job/CHGroovy/6/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>6</number><url>https://letsbuild.net/jenkins/job/CHGroovy/6/</url></lastSuccessfulBuild><lastUnsuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHGroovy/3/</url></lastUnsuccessfulBuild><nextBuildNumber>7</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>com.chgroovy:chgroovy</name><url>https://letsbuild.net/jenkins/job/CHGroovy/com.chgroovy$chgroovy/</url><color>blue</color><displayName>CHGroovy</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>##Event:

`http_request`

@event data:

    headers: (assoc. array)
        name: (array)
            value, 
            value, 
            ...

    cookies: (assoc. array)
        name: (assoc. array)
            expires: int
            value: string
            domain: string
            path: string
            httponly: boolean

    postdata: (assoc. array)
        name: value

    host: string including port if given

    method: GET or POST

    path: string including filename.

    parameters: (assoc. array)
        key: (array)
            value, 
            value, 
            ...

`modify_event` arguments:

    body: (string) APPEND data to the body. Can be called multiple times.

    code: (int) return code (200, etc)

    contenttype: (string) type of content (text/plain, etc)

##Functions:

`httpd_listen(int)` - listen on a given port.

`httpd_unlisten(int)` - stop listening on a given port.

`httpd_set_header(key, value)` - add a header to the response.

`httpd_set_cookie(key, value)` - add a simple cookie to the response.

`httpd_set_cookie(array)` - add a defined cookie to the response. 
`array` expects at least `name` and `value`, and can contain `expires` (int), 
`domain` (string), `path` (string), and `httponly` (boolean).

##Example
    # Credits for original, kookster

    httpd_listen(80)

    bind('http_request', null, null, @event,
        modify_event('code', 200)
        httpd_set_header('Content-Type', 'text/html; charset=UTF-8')

        @playerlist = ''

        foreach(all_players(), @player){
            @playerlist = @playerlist . color('white') . @player . ', '
        }

        @playerlist = reg_replace(', $', '', @playerlist)

        @header = color('GOLD') . ' ----------------- Players Online: ' . color('yellow') . array_size(all_players()) . color('GOLD') . ' -----------------'

        @body = 
            '&lt;html&gt;
                &lt;head&gt;&lt;/head&gt;
                &lt;body style="background-color:black;"&gt;
                    ' . @header . '
                    &lt;br&gt;
                    ' . @playerlist . '
                &lt;/body&gt;
            &lt;/html&gt;'

        @colors = array(
            'Black':        color('BLACK'),
            'DarkBlue':     color('DARK_BLUE'),
            'DarkGreen':    color('DARK_GREEN'),
            'DarkCyan ':    color('DARK_AQUA'),
            'DarkRed':      color('DARK_RED'),
            'DarkMagenta':  color('DARK_PURPLE'),
            'Gold':         color('GOLD'),
            'Gray':         color('GRAY'),
            'DimGray':      color('DARK_GRAY'),
            'Blue':         color('BLUE'),
            'Green':        color('GREEN'),
            'Cyan':         color('AQUA'),
            'Red':          color('RED'),
            'Fuchsia':      color('LIGHT_PURPLE'),
            'Yellow':       color('YELLOW'),
            'White':        color('WHITE')
        )

        foreach(array_keys(@colors), @color){
            @colorReplace	= '&lt;span style="color:' . @color . '"&gt;'
            @body		= reg_replace(@colors[@color], @colorReplace, @body)
        }

        modify_event('body', @body)
    )</description><displayName>CHHTTPd</displayName><fullDisplayName>CHHTTPd</fullDisplayName><fullName>CHHTTPd</fullName><name>CHHTTPd</name><url>https://letsbuild.net/jenkins/job/CHHTTPd/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHHTTPd/2/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHHTTPd/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHHTTPd/1/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHHTTPd/2/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHHTTPd/2/</url></lastCompletedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHHTTPd/2/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHHTTPd/2/</url></lastSuccessfulBuild><nextBuildNumber>3</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>me.entityreborn:CHHTTPd</name><url>https://letsbuild.net/jenkins/job/CHHTTPd/me.entityreborn$CHHTTPd/</url><color>blue</color><displayName>CHHTTPd</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>IRC implementation for CommandHelper</description><displayName>CHIRC</displayName><fullDisplayName>CHIRC</fullDisplayName><fullName>CHIRC</fullName><name>CHIRC</name><url>https://letsbuild.net/jenkins/job/CHIRC/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>9</number><url>https://letsbuild.net/jenkins/job/CHIRC/9/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>8</number><url>https://letsbuild.net/jenkins/job/CHIRC/8/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>7</number><url>https://letsbuild.net/jenkins/job/CHIRC/7/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>6</number><url>https://letsbuild.net/jenkins/job/CHIRC/6/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CHIRC/5/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHIRC/4/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHIRC/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHIRC/2/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHIRC/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHIRC/1/</url></firstBuild><healthReport><description>Build stability: 1 out of the last 5 builds failed.</description><iconClassName>icon-health-60to79</iconClassName><iconUrl>health-60to79.png</iconUrl><score>80</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>9</number><url>https://letsbuild.net/jenkins/job/CHIRC/9/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>9</number><url>https://letsbuild.net/jenkins/job/CHIRC/9/</url></lastCompletedBuild><lastFailedBuild _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CHIRC/5/</url></lastFailedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>9</number><url>https://letsbuild.net/jenkins/job/CHIRC/9/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>9</number><url>https://letsbuild.net/jenkins/job/CHIRC/9/</url></lastSuccessfulBuild><lastUnsuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CHIRC/5/</url></lastUnsuccessfulBuild><nextBuildNumber>10</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>com.entityreborn:chirc</name><url>https://letsbuild.net/jenkins/job/CHIRC/com.entityreborn$chirc/</url><color>blue</color><displayName>CHIRC</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>Run Javascript code directly from MethodScript</description><displayName>CHJavascript</displayName><fullDisplayName>CHJavascript</fullDisplayName><fullName>CHJavascript</fullName><name>CHJavascript</name><url>https://letsbuild.net/jenkins/job/CHJavascript/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHJavascript/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHJavascript/2/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHJavascript/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHJavascript/1/</url></firstBuild><healthReport><description>Build stability: 1 out of the last 3 builds failed.</description><iconClassName>icon-health-60to79</iconClassName><iconUrl>health-60to79.png</iconUrl><score>66</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHJavascript/3/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHJavascript/3/</url></lastCompletedBuild><lastFailedBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHJavascript/1/</url></lastFailedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHJavascript/3/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHJavascript/3/</url></lastSuccessfulBuild><lastUnsuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHJavascript/1/</url></lastUnsuccessfulBuild><nextBuildNumber>4</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>com.chjavascript:chjavascript</name><url>https://letsbuild.net/jenkins/job/CHJavascript/com.chjavascript$chjavascript/</url><color>blue</color><displayName>CHJavascript</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>CHLogblock
==========

An extension for CommandHelper providing interactions with LogBlock

# Functions

## LBQueries
### lb_get_changes
**Returns**: array

**Args**: array

**Description**: Takes an associative array of parameters to query the database with
and returns an array of the matching changes. Block changes are in the form of
strings pre-formatted by LogBlock. The 'info' parameter allows you to specify columns"
to include data from. Columns available are CHESTACCESS, COORDS, COUNT,
DATA, DATE, ID, KILLER, MESSAGE, PLAYER, TYPE, VICTIM, and WEAPON.
The 'changetype' parameter can be ALL, BOTH, CHESTACCESS, CREATED,
DESTROYED, CHAT, KILLS, ENTITIES, ENTITIES_CREATED, or ENTITIES_KILLED.
The 'location' (with optional 'radius') can be included, or alternatively a 'sel' value
that can be either a pair of location corners or null to use the current WorldEdit selection.
The other available parameters are 'players', 'world', 'since', 'before', and 'limit'."

## LBLogging
### lb_log_break
**Returns**: void

**Args**: player, locationArray, [blockDataString]

**Description**: Manually logs a block being broken at a location.
You can choose to specify the BlockData of the block being broken.

### lb_log_place
**Returns**: void

**Args**: player, locationArray, [blockDataString]

**Description**: Manually logs a block being placed at a location.
You can choose to specify the BlockData of the block being placed.

### lb_log_break_sign
**Returns**: void

**Args**: playerName, locationArray, [frontLines], [backLines]

**Description**: Manually logs a sign being broken at a location.
The third and fourth params are arrays of lines for the front and back sides of the sign,
defaulting to current lines on the sign.
Note 1: An error will be thrown if the specified location is not a sign.
Note 2: Specifying lines will update the physical sign as well.

### lb_log_place_sign
**Returns**: void

**Args**: playerName, locationArray, [frontLines], [backLines]

**Description**: Manually logs a sign being placed at a location.
The third and fourth params are arrays of lines for the front and back sides of the sign,
defaulting to current lines on the sign.
Note 1: An error will be thrown if the specified location is not a sign.
Note 2: Specifying lines will update the physical sign as well.
</description><displayName>CHLogblock</displayName><fullDisplayName>CHLogblock</fullDisplayName><fullName>CHLogblock</fullName><name>CHLogblock</name><url>https://letsbuild.net/jenkins/job/CHLogblock/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>8</number><url>https://letsbuild.net/jenkins/job/CHLogblock/8/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>7</number><url>https://letsbuild.net/jenkins/job/CHLogblock/7/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>6</number><url>https://letsbuild.net/jenkins/job/CHLogblock/6/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CHLogblock/5/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHLogblock/4/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHLogblock/3/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHLogblock/3/</url></firstBuild><healthReport><description>Build stability: 1 out of the last 5 builds failed.</description><iconClassName>icon-health-60to79</iconClassName><iconUrl>health-60to79.png</iconUrl><score>80</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>8</number><url>https://letsbuild.net/jenkins/job/CHLogblock/8/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>8</number><url>https://letsbuild.net/jenkins/job/CHLogblock/8/</url></lastCompletedBuild><lastFailedBuild _class='hudson.maven.MavenModuleSetBuild'><number>6</number><url>https://letsbuild.net/jenkins/job/CHLogblock/6/</url></lastFailedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>8</number><url>https://letsbuild.net/jenkins/job/CHLogblock/8/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>8</number><url>https://letsbuild.net/jenkins/job/CHLogblock/8/</url></lastSuccessfulBuild><lastUnsuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>6</number><url>https://letsbuild.net/jenkins/job/CHLogblock/6/</url></lastUnsuccessfulBuild><nextBuildNumber>9</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>io.github.jbaero:chlogblock</name><url>https://letsbuild.net/jenkins/job/CHLogblock/io.github.jbaero$chlogblock/</url><color>blue</color><displayName>CHLogBlock</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description># CHNaughty

These functions are using (or previously used) NMS/OBC, bypassing the formal API. As such, a few of them may break every MC version change, so you'll need to update the extension when that happens. Functions likely to break on version changes are marked as [unstable] below.

## Releases
Latest releases require CommandHelper 3.3.5.

[CHNaughty 5.4.2](https://github.com/PseudoKnight/CHNaughty/releases/tag/v5.4.2) for Paper 1.20.5 - 26.1.2 and Spigot 1.20.5 - 1.21.11  
[CHNaughty 4.14.0](https://github.com/PseudoKnight/CHNaughty/releases/tag/v4.14.0) for Paper and Spigot 1.20.3 - 1.20.4  
[CHNaughty 4.13.0](https://github.com/PseudoKnight/CHNaughty/releases/tag/v4.13.0) for Paper and Spigot 1.20.2  
[Older Releases](https://github.com/PseudoKnight/CHNaughty/releases)

## Functions
### open_sign([player], signLocation, [side], [lines])
Opens a sign editor for the given sign location.  
The side is optional, and must be FRONT or BACK. (default FRONT)  
Lines must be an array with up to 4 values or null. If not provided, it'll use the existing lines.  
Throws CastException if not a sign block.

### open_book([player], pages | [player], hand)
Sends a virtual book to a player.  
Accepts an array of pages or the player hand (MAIN_HAND, OFF_HAND) in which an existing book resides.  
All pages must be either raw JSON or strings. If the JSON is not formatted correctly, it will fall back to string output.  
Throws IllegalArgumentException if no written book resides in the given hand.

### psleep([player], bedLocation, [force])
Sets the player sleeping at the specified bed location.  
Optionally force sleeping even if player normally wouldn't be able to.  
If not forced, it will throw an exception when unsuccessful.  
The following conditions must be met for a player to sleep: the location must be a bed, the player must be near it,
it must not be obstructed, it must be night and there must not be hostile mobs nearby.

### pswing_hand([player], [hand])
Swing the player's hand in an attack animation. The hand parameter can be either main_hand (default) or off_hand.

### set_parrow_count(count | player, count, [ticks])
Sets the amount of arrows in a player's model.  
Optional number of ticks the arrow count will persist until arrows start despawning again. (default: 20 * (30 - count))

### set_pstinger_count([player], count) [unstable on Spigot]
Sets the amount of bee stingers in a player's model.

### ray_trace([player], [location], [range], [raySize])
Returns an array of result data from a ray trace from the player's eye location or the given location.  
Result array contains the following keys:  
'hitblock' is whether or not a block was hit;  
'hitface' is the block face that was hit (or null);  
'block' is the location of the block that was hit (or null);  
'location' contains the location where the ray trace ends;  
'origin' contains the location where the ray trace starts (useful if you don't specify a location);  
'entities' contains an array of hit living entities where each array contains a 'location' key and 'uuid' key. Ignores the current player and spectators.

### tps()
Returns an array of average ticks per second over 5, 10 and 15 minutes. eg. {19.9999999,19.99888567,19.56889299}

### set_entity_size(entity, width, height) [unstable on Spigot]
Sets an entity collision box's width and height used for movement.  
This gets reset every time the entity's pose changes and isn't used when entity is stationary.  
It's better to use the GENERIC_SCALE attribute where possible.  
However, this can still be used when you need to decouple the collision box's width and height,  
or to decouple visual size and collision box size.</description><displayName>CHNaughty</displayName><fullDisplayName>CHNaughty</fullDisplayName><fullName>CHNaughty</fullName><name>CHNaughty</name><url>https://letsbuild.net/jenkins/job/CHNaughty/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>14</number><url>https://letsbuild.net/jenkins/job/CHNaughty/14/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>13</number><url>https://letsbuild.net/jenkins/job/CHNaughty/13/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>12</number><url>https://letsbuild.net/jenkins/job/CHNaughty/12/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>11</number><url>https://letsbuild.net/jenkins/job/CHNaughty/11/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>10</number><url>https://letsbuild.net/jenkins/job/CHNaughty/10/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>9</number><url>https://letsbuild.net/jenkins/job/CHNaughty/9/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>8</number><url>https://letsbuild.net/jenkins/job/CHNaughty/8/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>7</number><url>https://letsbuild.net/jenkins/job/CHNaughty/7/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>6</number><url>https://letsbuild.net/jenkins/job/CHNaughty/6/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CHNaughty/5/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHNaughty/4/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHNaughty/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHNaughty/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHNaughty/1/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>14</number><url>https://letsbuild.net/jenkins/job/CHNaughty/14/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>14</number><url>https://letsbuild.net/jenkins/job/CHNaughty/14/</url></lastCompletedBuild><lastFailedBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHNaughty/4/</url></lastFailedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>14</number><url>https://letsbuild.net/jenkins/job/CHNaughty/14/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>14</number><url>https://letsbuild.net/jenkins/job/CHNaughty/14/</url></lastSuccessfulBuild><lastUnsuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHNaughty/4/</url></lastUnsuccessfulBuild><nextBuildNumber>15</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>me.pseudoknight:CHNaughty</name><url>https://letsbuild.net/jenkins/job/CHNaughty/me.pseudoknight$CHNaughty/</url><color>blue</color><displayName>CHNaughty</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description># CHPaper

Gives access to API available in Paper but not Bukkit or Spigot.

## Recommended Builds

CHPaper 0.4.x requires CommandHelper 3.3.5 #256 or later (Paper 1.16.5+) (NOTE: some functions require later Paper versions)  
CHPaper 0.3.x requires CommandHelper 3.3.4 (Paper 1.13.2 - 1.16.5)  
CHPaper 0.2.1 requires CommandHelper 3.3.2 (Paper 1.7.10 - 1.12.2)  

## Function Documentation

#### UUID get_firework_shooter(fireworkUUID)
Returns the UUID for the entity that spawned this firework, or null if none exists.

#### int get_world_view_distance(world)
Returns the view distance (in chunks) for a world.

#### void set_world_view_distance(world, distance)
Sets the view distance (in chunks) for a world.

#### int get_command_block_success(location)
Gets the success count for a commandblock. (1.17)

#### void set_command_block_success(location, int)
Sets the success count for a commandblock. (1.17)

#### void minimessage([recipient(s)], message)
Sends a MiniMessage formatted message. (requires Paper 1.18.2+)

#### boolean get_paffects_spawning([player])
Gets whether or not this player affects mob spawning.

#### void set_paffects_spawning([player], boolean)
Sets whether or not this player affects mob spawning.

#### pview_distance([player])
Gets view distance for player in chunks.

#### set_pview_distance([player], distance)
Sets view distance for player in chunks. (2 - 32)

### World Mob Spawning Control
These functions are not Paper-specific and will likely be moved to CommandHelper core at some point under different function names. I forgot to remove them before publishing, but enjoy them for now.

#### array get_spawning(world)
Gets the entity spawn settings for this world.

#### void set_spawning(world, settingsArray)
Sets the entity spawn settings for this world.

### Mob Management

#### boolean set_mob_destination(entityID, destination, [speedMultiplier])
Finds and sets a path for a mob to a location or living entity.

#### array get_mob_path(entityID)
Returns an array of location arrays along the mob's current path or null.

## Event Documentation

### beacon_effect

This event is called when beacon effect is applied to a player.

#### Event Data

* **player:** The player the effect is being applied to.
* **location:** The location of the beacon.
* **effect:** The array of the potion effect being applied to the player.
* **primary:** Whether or not the effect is the primary effect from the beacon.

#### Mutable Fields

* **effect**

### player_jump

This event is called when a player jumps.

#### Prefilters

* **player:** String

#### Event Data

* **player:** The player jumping.
* **from:** The location from which the player is jumping.
* **to:** The location the player is moving to.

#### Mutable Fields

* **from**

### player_elytra_boost

This event is called when a player boosts using a firework while gliding.

#### Prefilters

* **player:** String

#### Event Data

* **player:** The player boosting.
* **firework:** The entity id of the firework created.
* **item:** The item array of the firework used.
* **consume:** Whether or not the firework item will be consumed.

#### Mutable Fields

* **consume**

### entity_remove_from_world

Fired any time an entity is being removed from a world for any reason

#### Prefilters

* **id**: String
* **type**: Macro

#### Event Data

* **id:** The entityID
* **type:** The type of entity removing.

### player_armor_change

This event is called when a player's armor slot changes by any cause, including function.

#### Prefilters

* **player:** String

#### Event Data

* **player:** The player whose armor slot changed.
* **olditem:** The item array for the old item (or null)
* **newitem:** The item array for the new item (or null)
* **slottype:** The armor slot changed (HEAD, CHEST, LEGS, FEET)
</description><displayName>CHPaper</displayName><fullDisplayName>CHPaper</fullDisplayName><fullName>CHPaper</fullName><name>CHPaper</name><url>https://letsbuild.net/jenkins/job/CHPaper/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>12</number><url>https://letsbuild.net/jenkins/job/CHPaper/12/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>11</number><url>https://letsbuild.net/jenkins/job/CHPaper/11/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>10</number><url>https://letsbuild.net/jenkins/job/CHPaper/10/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>9</number><url>https://letsbuild.net/jenkins/job/CHPaper/9/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>8</number><url>https://letsbuild.net/jenkins/job/CHPaper/8/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>7</number><url>https://letsbuild.net/jenkins/job/CHPaper/7/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>6</number><url>https://letsbuild.net/jenkins/job/CHPaper/6/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CHPaper/5/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHPaper/4/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHPaper/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHPaper/2/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHPaper/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHPaper/1/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>12</number><url>https://letsbuild.net/jenkins/job/CHPaper/12/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>12</number><url>https://letsbuild.net/jenkins/job/CHPaper/12/</url></lastCompletedBuild><lastFailedBuild _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CHPaper/5/</url></lastFailedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>12</number><url>https://letsbuild.net/jenkins/job/CHPaper/12/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>12</number><url>https://letsbuild.net/jenkins/job/CHPaper/12/</url></lastSuccessfulBuild><lastUnsuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CHPaper/5/</url></lastUnsuccessfulBuild><nextBuildNumber>13</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>me.pseudoknight:chpaper</name><url>https://letsbuild.net/jenkins/job/CHPaper/me.pseudoknight$chpaper/</url><color>blue</color><displayName>CHPaper</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>CHPerms
=======

An implementation of the Bukkit permissions system, controlled by CommandHelper

Download the correct version for your version of CommandHelper:  
CHPerms 3.0.0 (CommandHelper 3.3.3)  
CHPerms 3.0.2 (CommandHelper 3.3.4)

PERMISSION FUNCTIONS
=========
```
get_permissions()
  Type: 	array
  Return: array
  Args: 	customOnly
  Description:
    Returns an array of all registered permissions. If
    customOnly is true, only the permissions you have created will be in the array,
    defaults to false.
```
```
register_permission()
  Type: 	void
  Return: void
  Args: 	permissionArray, overwrite
  Description:
    Registers a permission on the server. If overwrite
    is true, any conflicting permissions will be unregistered. The permissionArray
    must include a 'name' key containing the permission's name. Other keys can be
    'default', 'description', and 'children'. Default can be one of true, false, op,
    or !op, but defaults to op. If description is not given, it won't have one.
    Children must be null or an array of permission name keys and boolean values.
    The values given will be the values of the child when the parent is set. This
    is the equivilent of setting permissions in the server permissions.yml.
```
```
unregister_permission()
Type:  void
Return:	void
Args:	permission
Description: Removes the specified permission if it is registered, otherwise 
nothing happens.
```


PLAYER PERMISSION FUNCTIONS
=========
```
phas_permission()
  Type: 	boolean
  Return:   boolean
  Args: 	[player], permission
  Description:
    Returns whether the target (function user if not given) has a
    permission, based on the server's built in permission system.
```
```
set_permissions
  Type: 	void
  Return: void
  Args: 	[player], permission(s)
  Description:
    Sets an array of permissions at once before	recalculating permissions
    for player. Permissions must be an array of permission arrays in the
    format array('perm.node': true). This overrides permission defaults.
```
```
set_permission
  Type: 	void
  Return:   void
  Args: 	[player], permission, boolean
  Description:
    Sets the value of a permission for a player, defaulting to the
    current user. This overrides permission defaults.
```
```
unset_permission()
  Type: 	void
  Return:   void
  Args: 	[player], permission
  Description:
    Unsets a permission, so only that permission's default will apply.
```
```
unperm_player()
Type:	    boolean
Return:	    boolean
Args:       player
Description: Removes the attachment from the player, returns whether anything 
actually changed.
```
```
hijack_permissions()
  Type: 	void
  Return:   void
  Args:     [player]
  Description: 
    Runs through the given player's permissions, imports any that 
    commandhelper hasn't set, and removes the setting from the player sothat the 
    other plugin can't change it anymore. If no player is given, all players are 
    used.
```
</description><displayName>CHPerms</displayName><fullDisplayName>CHPerms</fullDisplayName><fullName>CHPerms</fullName><name>CHPerms</name><url>https://letsbuild.net/jenkins/job/CHPerms/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHPerms/2/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHPerms/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHPerms/1/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHPerms/2/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHPerms/2/</url></lastCompletedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHPerms/2/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHPerms/2/</url></lastSuccessfulBuild><nextBuildNumber>3</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>com.zeoldcraft:CHPerms</name><url>https://letsbuild.net/jenkins/job/CHPerms/com.zeoldcraft$CHPerms/</url><color>blue</color><displayName>CHPerms</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description># CHPexAPI
A CommandHelper extension that adds functions to interact with the PermissionsEx plugin API.

# Functions
## CHPexFunctions
### string pex\_get\_uuid(player):
Returns the UUID of the given player or null if the player was not identified by a UUID in the pex permissions file. Throws IllegalArgumentException when player is empty. Throws NullPointerException when player is null.

### boolean pex\_has\_permission(player/uuid, permission, [world]):
Returns true if the player/uuid has the given permission in the given world, false otherwise. If no world is supplied or if world is empty or null, the permission will be checked globally. Throws IllegalArgumentException when player is empty. Throws NullPointerException when player or permission is null.

## CHPexUserFunctions
### array pex\_get\_users():
Returns an array containing all players/uuids in the pex config.

### array pex\_get\_user\_options(player/uuid):
Returns all personal options of the given player/uuid in an associative array in format: array('': optionArray, 'worldName': optionArray) where optionArray is an associative array with possible keys name, prefix and suffix. Throws IllegalArgumentException when player/uuid is empty. Throws NullPointerException when player/uuid is null.

### void pex\_set\_user\_option(player/uuid, optionKey, optionValue, [world]):
Sets the given option for the given player/uuid in the given or all worlds. Option keys used by Pex are: name, prefix and suffix. Setting the value to null will remove the option from the player/uuid. The world argument will be ignored when it is null or empty. Throws IllegalArgumentException when player/uuid or optionKey is empty. Throws NullPointerException when player/uuid or optionKey is null.

### array pex\_get\_user\_permissions(player/uuid):
Returns an array containing all personal permissions the player/uuid has in format: array('': personalPermissions, 'worldName': personalPermissions). where personalPermissions is an array of permission strings. This does NOT include permissions a player/uuid has through groups. Throws IllegalArgumentException when player/uuid is empty. Throws NullPointerException when player/uuid is null.

### void pex\_set\_user\_permissions(player/uuid, permissionArray, [world):
Sets the given permissions for the given player/uuid in the given or all worlds. The world argument will be ignored when it is null or empty. Throws IllegalArgumentException when player/uuid or one of the permissions is empty. Throws NullPointerException when player/uuid or one of the permissions is null.

### void pex\_add\_user\_permission(player/uuid, permission, [world]):
Adds the given permissions to the given player/uuid in the given or all worlds. The world argument will be ignored when it is null or empty. Throws IllegalArgumentException when player/uuid or permission is empty. Throws NullPointerException when player/uuid or permission is null.

### void pex\_remove\_user\_permission(player/uuid, permission, [world]):
Removes the given permissions from the given player/uuid in the given or all worlds. The world argument will be ignored when it is null or empty. Throws IllegalArgumentException when player/uuid or permission is empty. Throws NullPointerException when player/uuid or permission is null.

### array pex\_get\_user\_groups(player/uuid, [world, [specificOnly]]):
Returns an array containing all groups the player/uuid has in the given world. There are three types of groups: default (from group configs), global (personal user config) and world-specific (personal user config). When 'world' is non-empty, the world-specific groups are included. When 'world' is empty, the global groups are included. 'world' defaults to ''. When 'specificOnly' is false, the global groups are included. When 'specificOnly' is false and no groups have been included so far, default groups are included. 'specificOnly' defaults to false. Throws IllegalArgumentException when player/uuid is empty. Throws NullPointerException when player/uuid is null.

### void pex\_set\_user\_groups(player/uuid, groupArray, [world]):
Sets the groups for the given player/uuid in the given or all worlds. The world argument will be ignored when it is null or empty. Throws IllegalArgumentException when player/uuid or a group in the groupArray is empty. Throws NullPointerException when player/uuid or a group in the groupArray is null.

### void pex\_add\_user\_group(player/uuid, group, [world]):
Adds the given player/uuid to the given group in the given or all worlds. The world argument will be ignored when it is null or empty. Throws IllegalArgumentException when player/uuid or group is empty. Throws NullPointerException when player/uuid or group is null.

### void pex\_remove\_user\_group(player/uuid, group, [world]):
Removes the given player/uuid from the given group in the given or all worlds. The world argument will be ignored when it is null or empty. Throws IllegalArgumentException when player/uuid or group is empty. Throws NullPointerException when player/uuid or group is null.

## CHPexGroupFunctions
### array pex\_get\_groups():
Returns an array containing all groups in the pex config.

### array pex\_get\_group\_options(group):
Returns all options of the given group in an associative array in format: array('': optionArray, 'worldName': optionArray) where optionArray is an associative array with possible keys default, prefix and suffix. Throws IllegalArgumentException when group is empty. Throws NullPointerException when group is null.

### void pex\_set\_group\_option(group, optionKey, optionValue, [world]):
Sets the given option for the given group in the given or all worlds. Option keys used by Pex are: default, prefix and suffix. Setting the value to null will remove the option from the group. The world argument will be ignored when it is null or empty. Throws IllegalArgumentException when group or optionKey is empty. Throws NullPointerException when group or optionKey is null.

### array pex\_get\_group\_permissions(group):
Returns all permissions of the given group in an associative array in format: array('': permissionsArray, 'worldName': permissionsArray) where permissionsArray is an array of permission strings. This does NOT include permissions a group has through inheritance of other groups. Throws IllegalArgumentException when group is empty. Throws NullPointerException when group is null.

### void pex\_set\_group\_permissions(group, permissionArray, [world]):
Sets the given permissions for the given group in the given or all worlds. The world argument will be ignored when it is null or empty. Throws IllegalArgumentException when group or one of the permissions is empty. Throws NullPointerException when group or one of the permissions is null.

### void pex\_add\_group\_permission(group, permission, [world]):
Adds the given permissions to the given group in the given or all worlds. The world argument will be ignored when it is null or empty. Throws IllegalArgumentException when group or permission is empty. Throws NullPointerException when group or permission is null.

### void pex\_remove\_group\_permission(group, permission, [world]):
Removes the given permissions from the given group in the given or all worlds. The world argument will be ignored when it is null or empty. Throws IllegalArgumentException when group or permission is empty. Throws NullPointerException when group or permission is null.

### array pex\_get\_group\_users(group, [world]):
Returns an array containing the identifiers (name/uuid) of all players in the given group (excluding through inheritance). If the world is given, only members who are member of the given group in the given world are returned. The world argument will be ignored when it is null or empty. Throws IllegalArgumentException when group is empty. Throws NullPointerException when group is null.

### array pex\_get\_group\_parents(group, [world]):
Returns an array containing the names of all direct parents of the given group, excluding world-specific parents. When world is given, all parents specific to that world are added to the return array. The world argument will be ignored when it is null or empty. Throws IllegalArgumentException when group is empty. Throws NullPointerException when group is null.

### void pex\_set\_group\_parents(group, parentArray, [world]):
Sets the parents of the given group in the given world or non-world specific if no world is given (affecting all worlds). The world argument will be ignored when it is null or empty. Throws IllegalArgumentException when group or an element in parentArray is empty. Throws NullPointerException when group or an element in parentArray is null.

### void pex\_add\_group\_parent(group, parent, [world]):
Adds the given parent to the parent list of the given group in the given world or non-world specific if no world is given (affecting all worlds). The world argument will be ignored when it is null or empty. Throws IllegalArgumentException when group or parent is empty. Throws NullPointerException when group or parent is null.

### void pex\_remove\_group\_parent(group, parent, [world]):
Removes the given parent from the parent list of the given group in the given world or non-world specific if no world is given (affecting all worlds). The world argument will be ignored when it is null or empty. Throws IllegalArgumentException when group or parent is empty. Throws NullPointerException when group or parent is null.

### array pex\_get\_group\_children(group, [world]):
Returns an array containing the names of all direct children of the given group, excluding world-specific children (groups that are only child of the given group in a specific world, other than the given world). The world argument will be ignored when it is null or empty. Throws IllegalArgumentException when group is empty. Throws NullPointerException when group is null.
</description><displayName>CHPexAPI</displayName><fullDisplayName>CHPexAPI</fullDisplayName><fullName>CHPexAPI</fullName><name>CHPexAPI</name><url>https://letsbuild.net/jenkins/job/CHPexAPI/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHPexAPI/4/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHPexAPI/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHPexAPI/2/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHPexAPI/2/</url></firstBuild><healthReport><description>Build stability: 1 out of the last 3 builds failed.</description><iconClassName>icon-health-60to79</iconClassName><iconUrl>health-60to79.png</iconUrl><score>66</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHPexAPI/4/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHPexAPI/4/</url></lastCompletedBuild><lastFailedBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHPexAPI/3/</url></lastFailedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHPexAPI/4/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHPexAPI/4/</url></lastSuccessfulBuild><lastUnsuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHPexAPI/3/</url></lastUnsuccessfulBuild><nextBuildNumber>5</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>io.github.pieter12345:CHPexAPI</name><url>https://letsbuild.net/jenkins/job/CHPexAPI/io.github.pieter12345$CHPexAPI/</url><color>blue</color><displayName>CHPexAPI</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description># CHPlaceholderAPI

An extension to add integration for [PlaceholderAPI](https://www.spigotmc.org/resources/placeholderapi.6245/) in CommandHelper.

Lets you register new placeholders as well as replace placeholders in strings.

Latest version requires CommandHelper 3.3.5 (up to build-621)  
Use version 0.1.6 for CommandHelper 3.3.4  
Use version 0.1.1 for CommandHelper 3.3.2

## Function Documentation

**set_placeholders([player], string)**

Replaces all placeholders in the given string. Player can be null or absent if player context is not necessary for the
given placeholders. Automatically "colorizes" the returned string.

**register_placeholder_hook(identifier, closure)**

Registers a PlaceholderAPI identifier. When the identifier is used in a placeholder, it executes the given closure.
The closure will be passed the player name (or null) and the particular placeholder name that follows the identifier
(eg. \"%id_placeholder_name%\") as variables. Use return() in the closure to specify the output for each placeholder
name you're checking for. Returns true if the placeholder was successfully registered.

Example:
````
// handles %player_health% and %player_hunger%
register_placeholder_hook('player', closure(@player, @placeholder){
    if(is_null(@player)) {
        return("");
    }
    if(@placeholder == 'health') {
        return(phealth(@player));
    }
    if(@placeholder == 'hunger') {
        return(phunger(@player));
    }
});
````

**unregister_placeholder_hook(identifier)**

Unregisters a PlaceholderAPI identifier.
Returns true if a placeholder by that id existed.</description><displayName>CHPlaceholderAPI</displayName><fullDisplayName>CHPlaceholderAPI</fullDisplayName><fullName>CHPlaceholderAPI</fullName><name>CHPlaceholderAPI</name><url>https://letsbuild.net/jenkins/job/CHPlaceholderAPI/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHPlaceholderAPI/4/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHPlaceholderAPI/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHPlaceholderAPI/2/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHPlaceholderAPI/2/</url></firstBuild><healthReport><description>Build stability: 1 out of the last 3 builds failed.</description><iconClassName>icon-health-60to79</iconClassName><iconUrl>health-60to79.png</iconUrl><score>66</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHPlaceholderAPI/4/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHPlaceholderAPI/4/</url></lastCompletedBuild><lastFailedBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHPlaceholderAPI/3/</url></lastFailedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHPlaceholderAPI/4/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHPlaceholderAPI/4/</url></lastSuccessfulBuild><lastUnsuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHPlaceholderAPI/3/</url></lastUnsuccessfulBuild><nextBuildNumber>7</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>me.pseudoknight:CHPlaceholderAPI</name><url>https://letsbuild.net/jenkins/job/CHPlaceholderAPI/me.pseudoknight$CHPlaceholderAPI/</url><color>blue</color><displayName>CHPlaceholderAPI</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description># CHPlotSquared

Version 4.x is compatible with MethodScript 3.3.5 and PlotSquared 6.x

Version 3.0.0 is compatible with MethodScript 3.3.4 and PlotSquared 5.x

Version 2.0.0 is compatible with MethodScript 3.3.4 and PlotSquared 4.x

Version 1.0.2 is compatible with MethodScript 3.3.4 and PlotSquared 3.5.x

Version 1.0.1 is compatible with MethodScript 3.3.2 and PlotSquared 3.5.x

Version 1.0.0 is compatible with MethodScript 3.3.2 and PlotSquared 3.4.x

## Functions

#### array plot_list(world, [uuid])
Returns an array of plot ids for a world. Optionally filtered by owner UUID.
Throws InvalidWorldException if world is not a plot world.

#### string plot_at_loc(location)
Returns the plot id at the specified location, null if no plot exists there.

#### boolean plot_has_player(location, uuid | world, plotarea, plotid, uuid)
Returns whether the player is added to a plot.
Returns null if no plot exists at that location, or by that plotarea or plot id.
Throws a FormatException if plotid is not two numbers separated by a comma or semi-colon.
Throws InvalidWorldException if world is not a plot world.

#### array plot_info(location | world, plotid)
Returns an associative array of plot info, or null if not a plot.
Returns null if no plot exists at that location, or by that plotarea or plot id.
The array will contain the indexes "owners", "members", "trusted", and "denied", each with an array of UUIDs.
Throws a FormatException if plotid is not two numbers separated by a comma or semi-colon.
Throws InvalidWorldException if world is not a plot world.</description><displayName>CHPlotSquared</displayName><fullDisplayName>CHPlotSquared</fullDisplayName><fullName>CHPlotSquared</fullName><name>CHPlotSquared</name><url>https://letsbuild.net/jenkins/job/CHPlotSquared/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHPlotSquared/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHPlotSquared/2/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHPlotSquared/2/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHPlotSquared/3/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHPlotSquared/3/</url></lastCompletedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHPlotSquared/3/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHPlotSquared/3/</url></lastSuccessfulBuild><nextBuildNumber>4</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>me.pseudoknight:CHPlotSquared</name><url>https://letsbuild.net/jenkins/job/CHPlotSquared/me.pseudoknight$CHPlotSquared/</url><color>blue</color><displayName>CHPlotSquared</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description># Functions
## Functions
### array python(script, environment, toReturn):
Runs a python script. The script can set variables beforehand with the environment variable, which should be an associative array mapping variable names to values. Arrays are not directly supported, as everything is simply passed in as a string. Values can be returned from the script, by giving a list of named values to toReturn, which will cause those values to be returned as a part of the associative array returned.

</description><displayName>CHPython</displayName><fullDisplayName>CHPython</fullDisplayName><fullName>CHPython</fullName><name>CHPython</name><url>https://letsbuild.net/jenkins/job/CHPython/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHPython/2/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHPython/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHPython/1/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHPython/2/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHPython/2/</url></lastCompletedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHPython/2/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHPython/2/</url></lastSuccessfulBuild><nextBuildNumber>3</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>com.chpython:chpython</name><url>https://letsbuild.net/jenkins/job/CHPython/com.chpython$chpython/</url><color>blue</color><displayName>CHPython</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description># CHRegionChange
Provides a `region_change` event for CommandHelper when using WorldGuard.

## Downloads and Compatibility
CHRegionChange 2.2.0 for CommandHelper 3.3.5  
CHRegionChange 2.1.1 for CommandHelper 3.3.4  
CHRegionChange 1.1.0 for CommandHelper 3.3.2

## Event Documentation

### region_change
Fires when a player moves to a block with a different region set than they are currently in.
#### Prefilters
#### Event Data
* `player`
* `from` locationArray
* `to` locationArray
* `fromRegions` An array that may contain regions the player is leaving.
* `toRegions` An array that may contain regions the player is entering.
* `type` The type of event that triggered this. (RESPAWN, EMBARK, MOVE, GLIDE, SWIM, TELEPORT, RIDE, OTHER_NON_CANCELLABLE, or OTHER_CANCELLABLE)
#### Mutable Fields
</description><displayName>CHRegionChange</displayName><fullDisplayName>CHRegionChange</fullDisplayName><fullName>CHRegionChange</fullName><name>CHRegionChange</name><url>https://letsbuild.net/jenkins/job/CHRegionChange/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHRegionChange/4/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHRegionChange/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHRegionChange/2/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHRegionChange/2/</url></firstBuild><healthReport><description>Build stability: 1 out of the last 3 builds failed.</description><iconClassName>icon-health-60to79</iconClassName><iconUrl>health-60to79.png</iconUrl><score>66</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHRegionChange/4/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHRegionChange/4/</url></lastCompletedBuild><lastFailedBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHRegionChange/3/</url></lastFailedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHRegionChange/4/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHRegionChange/4/</url></lastSuccessfulBuild><lastUnsuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHRegionChange/3/</url></lastUnsuccessfulBuild><nextBuildNumber>5</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>me.pseudoknight:CHRegionChange</name><url>https://letsbuild.net/jenkins/job/CHRegionChange/me.pseudoknight$CHRegionChange/</url><color>blue</color><displayName>CHRegionChange</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description># THIS EXTENSION IS HIGHLY EXPERIMENTAL! #

**!!!! Latest versions require CommandHelper 3.3.4 build #3978 or later !!!!**

While some small amount of testing has been done to verify that SOMETHING works,
we do not take any responsibility for any damages caused by the use of this
extension until we deem it stable. Thank you.

## Builds ##

You can find latest versions of CHSC [here][builds].

## Documentation ##

Examples: [here][examples]

Function definitions: [here][funcs]

General design thoughts: [here][design]

Example network topography: [here][topo]

[builds]: https://letsbuild.net/jenkins/job/CHServerCommunication/
[examples]: https://github.com/EntityReborn/CHServerCommunication/blob/master/Examples.md
[funcs]: https://docs.google.com/spreadsheet/ccc?key=0AjO4owzyFgGzdEFROHZjRm5GcTEwanRPUVc0NF9uU1E#gid=0
[design]: https://docs.google.com/document/d/1UmSIYHjARkOAsXQaK6oaWMW20zdG1WVmEikLvZUd58o
[topo]: https://www.lucidchart.com/documents/view/46cd-0b90-51af849e-ad48-775e0a004865
</description><displayName>CHServerCommunication</displayName><fullDisplayName>CHServerCommunication</fullDisplayName><fullName>CHServerCommunication</fullName><name>CHServerCommunication</name><url>https://letsbuild.net/jenkins/job/CHServerCommunication/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHServerCommunication/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHServerCommunication/2/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHServerCommunication/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHServerCommunication/1/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHServerCommunication/3/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHServerCommunication/3/</url></lastCompletedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHServerCommunication/3/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHServerCommunication/3/</url></lastSuccessfulBuild><nextBuildNumber>4</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>me.entityreborn:CHServerCommunication</name><url>https://letsbuild.net/jenkins/job/CHServerCommunication/me.entityreborn$CHServerCommunication/</url><color>blue</color><displayName>CHServerCommunication</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description># CHSpigot

Gives access to API available in Spigot but not Bukkit. As CommandHelper now depends on Spigot,
these functions and events are subject to be moved into CommandHelper at some point.

## Recommended Builds

* [**CHSpigot 2.0.8 for Spigot 1.16.5+**](https://github.com/PseudoKnight/CHSpigot/releases/tag/v2.0.8) (CommandHelper 3.3.5 #392 or later) [Documentation](https://github.com/PseudoKnight/CHSpigot/blob/master/README.md)
* [**CHSpigot 2.0.4 for Spigot 1.13.2 - 1.16.5**](https://github.com/PseudoKnight/CHSpigot/releases/tag/v2.0.4) (CommandHelper 3.3.4) [Documentation](https://github.com/PseudoKnight/CHSpigot/blob/v2.0.4/README.md)
* [**CHSpigot 1.6.0a for Spigot 1.12.2**](https://github.com/PseudoKnight/CHSpigot/releases/tag/v1.6.0a) (CommandHelper 3.3.2) [Documentation](https://github.com/PseudoKnight/CHSpigot/blob/v1.6.0a/README.md)

## Event Documentation

### item_damage

This event is called when a player's item (like a tool) will take damage. Cancelling this event will prevent damage from being taken on items.

#### Prefilters

* **player:** String Match
* **itemname:** String Match

#### Event Data

* **player:** the player's name
* **item:** an item array of the item being damaged
* **damage:** the amount of durability damage the item will be taking

#### Mutable Fields

* **damage**

### entity_mount

This event is called when an entity mounts another entity.

#### Prefilters

* **type:** Macro Match
* **mounttype:** Macro Match

#### Event Data

* **type:** The type of entity that is mounting
* **id:** The UUID of the mounting entity
* **mounttype:** The type of entity that is mounted
* **mountid:** The UUID of the mounted entity

### entity_dismount

This event is called when an entity dismounts another entity. This event cannot be cancelled.

#### Prefilters

* **type:** Macro Match
* **mounttype:** Macro Match

#### Event Data

* **type:** The type of entity that is dismounting
* **id:** The UUID of the dismounting entity
* **mounttype:** The type of entity that is mounted
* **mountid:** The UUID of the mounted entity

### spawner_spawn

This event is called when a spawner spawns an entity.

#### Prefilters

* **type:** String Match

#### Event Data

* **type:** The type of entity that is spawning
* **id:** The UUID of the spawning entity
* **location:** The location the entity spawned
* **spawner:** The location of the spawner that spawned the entity
</description><displayName>CHSpigot</displayName><fullDisplayName>CHSpigot</fullDisplayName><fullName>CHSpigot</fullName><name>CHSpigot</name><url>https://letsbuild.net/jenkins/job/CHSpigot/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>7</number><url>https://letsbuild.net/jenkins/job/CHSpigot/7/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>6</number><url>https://letsbuild.net/jenkins/job/CHSpigot/6/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CHSpigot/5/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHSpigot/4/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHSpigot/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHSpigot/2/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHSpigot/2/</url></firstBuild><healthReport><description>Build stability: 1 out of the last 5 builds failed.</description><iconClassName>icon-health-60to79</iconClassName><iconUrl>health-60to79.png</iconUrl><score>80</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>7</number><url>https://letsbuild.net/jenkins/job/CHSpigot/7/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>7</number><url>https://letsbuild.net/jenkins/job/CHSpigot/7/</url></lastCompletedBuild><lastFailedBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHSpigot/4/</url></lastFailedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>7</number><url>https://letsbuild.net/jenkins/job/CHSpigot/7/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>7</number><url>https://letsbuild.net/jenkins/job/CHSpigot/7/</url></lastSuccessfulBuild><lastUnsuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHSpigot/4/</url></lastUnsuccessfulBuild><nextBuildNumber>8</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>me.pseudoknight:chspigot</name><url>https://letsbuild.net/jenkins/job/CHSpigot/me.pseudoknight$chspigot/</url><color>blue</color><displayName>CHSpigot</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description># CHStargate

Adds functions and events for the Stargate plugin. This should only be used if you are already using the [Stargate](https://github.com/PseudoKnight/Stargate-Bukkit) plugin.

## Compatibility and Downloads

CHStargate 3.1.1 for CommandHelper 3.3.5 and Stargate 0.8.0.x  
CHStargate 3.1.0 for CommandHelper 3.3.4 and Stargate 0.8.0.x  
CHStargate 2.0.0 for CommandHelper 3.3.2 and Stargate 0.7.9.11  

## Functions

boolean **sg_set_owner(portalName, portalNetwork, owner)**  
Sets the portal's owner.

string **sg_get_owner_name(portalName, portalNetwork)**  
Returns the portal's owner name.

string **sg_get_owner_uuid(portalName, portalNetwork)**  
Returns the portal's owner UUID.

boolean **sg_is_portal_open(portalName, portalNetwork)**  
Returns whether the given portal is currently open.

array **sg_get_portal_info(portalName, portalNetwork)**  
Gets an array of data about a specific Stargate portal.  
Array keys are: `button`, `sign`, `destination`, `frame`, `entrance`, `options`, `open`, `ownerUUID`, `ownerName`.  
Options array keys are: `alwaysOn`, `backwards`, `free`, `hidden`, `noNetwork`, `private`, `random`, `show`.

## Events
### stargate_access

Fired when a player interacts with a Stargate. Result determines access.

#### Prefilters:
* `deny` (boolean) Whether access was denied or not.

#### Event Data:
* `player` The player requesting access.
* `portal` The Stargate portal's name.
* `network` The Stargate network this portal belongs to.

### stargate_destroy

Fired when a block of a Stargate portal is broken.

#### Prefilters:
* `deny` (boolean) Whether access was denied or not.

#### Event Data:
* `player` The player that broke the block.
* `portal` The Stargate portal's name.
* `network` The Stargate network this portal belongs to.

### stargate_open

Fired when a Stargate portal is opened.

#### Event Data:
* `player` The player opening the portal, if one.
* `portal` The Stargate portal's name.
* `network` The Stargate network this portal belongs to.

### stargate_portal

Fired when a Stargate portal is traversed.

#### Event Data:
* `player` The player traveling.
* `portal` The Stargate portal's name.
* `network` The Stargate network this portal belongs to.
* `exit` The exit location.
* `exitportal` The name of portal at the exit.

#### Mutable Fields:
* `exit` A different exit location.</description><displayName>CHStargate</displayName><fullDisplayName>CHStargate</fullDisplayName><fullName>CHStargate</fullName><name>CHStargate</name><url>https://letsbuild.net/jenkins/job/CHStargate/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHStargate/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHStargate/2/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/CHStargate/2/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHStargate/3/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHStargate/3/</url></lastCompletedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHStargate/3/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHStargate/3/</url></lastSuccessfulBuild><nextBuildNumber>5</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>me.pseudoknight:CHStargate</name><url>https://letsbuild.net/jenkins/job/CHStargate/me.pseudoknight$CHStargate/</url><color>blue</color><displayName>CHStargate</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description># CHVault
A [CommandHelper](https://github.com/enginehub/CommandHelper) extension providing access to Vault's API.

Download the correct version for your version of CommandHelper:  
CHVault 2.1.1 (CommandHelper 3.3.1 - 3.3.3)  
CHVault 2.1.3 (CommandHelper 3.3.4 - 3.3.5)  
CHVault 2.1.6 (CommandHelper 3.3.5)

## Functions
### Permissions
Uses Vault to extend the potential of permissions checking with group and multiworld support.  
UUIDs are recommended for offline players.  
These will throw a NotFoundException when given an offline player name that does not exist.

#### boolean vault_has_permission(player, permission, [world]);
Checks the permission value of a player, optionally in a specific world.
When used on an offline player, the accuracy depends on the permission plugin.

#### array vault_pgroup(player, [world]);
Returns an array of groups that the player is in. When used on offline players,
the accuracy of this function is dependent on the permissions plugin.

### Chat

#### string vault_group_prefix(world, group);
Returns the prefix of group in world.

#### string vault_group_suffix(world, group);
Returns the suffix of group in world.

#### string vault_user_prefix(world, user);
Returns the prefix of user in world. Accuracy is plugin dependent if user is not online.

#### string vault_user_suffix(world, user);
Returns the suffix of user in world. Accuracy is plugin dependent if user is not online.

### Economy
Provides functions to hook into the server's economy plugin. To use any of these functions, you must
have a Vault compatible economy plugin installed in addition to the [Vault plugin](https://github.com/MilkBowl/Vault).
Beyond this, there is no special setup to get the economy functions working,
assuming they work for you in game using the plugin's default controls.
Bank controls may not be supported in your particular plugin, check the details of that particular plugin.

#### void acc\_add(account\_name, to\_add):
Adds an amount to the specified account

#### double acc\_balance(account\_name):
Returns the balance of the given account name.

#### void acc\_divide(account\_name, to\_divide):
Divides the account by the given amount

#### void acc\_multiply(account\_name, to\_multiply):
Multiplies the account balance by the given amount

#### void acc\_set(account\_name, value):
Sets the account's balance to the given amount

#### void acc\_subtract(account\_name, to\_subtract):
Subtracts the given amount from the specified account

#### void bacc\_add(bank\_name, value):
Adds the specified amount to the bank account's balance

#### void bacc\_balance(bank\_name):
Gets the specified bank account's balance

#### void bacc\_divide(bank\_name, value):
Divides the bank account's balance by the given value

#### void bacc\_multiply(bank\_name, value):
Multiplies the given bank account's balance by the given value

#### void bacc\_remove(bank\_name):
Removes the given bank account from the game

#### void bacc\_set(bank\_name, value):
Sets the bank account's balance to the given amount

#### void bacc\_subtract(bank\_name, value):
Subtracts the specified amount from the bank account's balance

</description><displayName>CHVault</displayName><fullDisplayName>CHVault</fullDisplayName><fullName>CHVault</fullName><name>CHVault</name><url>https://letsbuild.net/jenkins/job/CHVault/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CHVault/5/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CHVault/4/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/CHVault/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHVault/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHVault/1/</url></firstBuild><healthReport><description>Build stability: 1 out of the last 4 builds failed.</description><iconClassName>icon-health-60to79</iconClassName><iconUrl>health-60to79.png</iconUrl><score>75</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CHVault/5/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CHVault/5/</url></lastCompletedBuild><lastFailedBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHVault/1/</url></lastFailedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CHVault/5/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CHVault/5/</url></lastSuccessfulBuild><lastUnsuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CHVault/1/</url></lastUnsuccessfulBuild><nextBuildNumber>6</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>io.github.jbaero:CHVault</name><url>https://letsbuild.net/jenkins/job/CHVault/io.github.jbaero$CHVault/</url><color>blue</color><displayName>CHVault</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>CommandHelper
=============
| Service | Badge |
|--------|---------:|
| Github Packages | [![Maven Package](https://github.com/EngineHub/CommandHelper/actions/workflows/maven-publish.yml/badge.svg)](https://github.com/EngineHub/CommandHelper/actions/workflows/maven-publish.yml) |
| Azure | [![Azure Build Status](https://dev.azure.com/MethodScript/CommandHelper/_apis/build/status/EngineHub.CommandHelper)](https://dev.azure.com/MethodScript/CommandHelper/_build/latest?definitionId=1) |
| Snyk.io | [![Known Vulnerabilities](https://snyk.io/test/github/EngineHub/CommandHelper/badge.svg)](https://snyk.io/test/github/EngineHub/CommandHelper) |
| Discord | [![Discord](https://img.shields.io/discord/446057847428481044.svg)](https://img.shields.io/discord/446057847428481044.svg) |
| Code Size | [![Code Size](https://img.shields.io/github/languages/code-size/EngineHub/CommandHelper.svg)](https://img.shields.io/github/languages/code-size/EngineHub/CommandHelper.svg) |
| Stars | [![Stars](https://img.shields.io/github/stars/EngineHub/CommandHelper.svg?style=social)](https://img.shields.io/github/stars/EngineHub/CommandHelper.svg?style=social) |
| Website | [![Website](https://img.shields.io/website/https/methodscript.com.svg?down_color=red&amp;down_message=offline&amp;up_color=green&amp;up_message=online)](https://methodscript.com) |
| Contributors | [![Contributors](https://img.shields.io/github/contributors/EngineHub/CommandHelper.svg)](https://img.shields.io/github/contributors/EngineHub/CommandHelper.svg) |
| Last Commit | [![Last Commit](https://img.shields.io/github/last-commit/EngineHub/CommandHelper.svg)](https://img.shields.io/github/last-commit/EngineHub/CommandHelper.svg) |

CommandHelper adds simple command aliases, complex macros,
and the ability to script your own commands and events into Minecraft,
using the MethodScript scripting language.

Compiling
---------

You need to have Maven installed (http://maven.apache.org). Once installed,
simply run:

	mvn clean package install

Maven will automatically download dependencies for you. Note: For that to work,
be sure to add Maven to your "PATH". If you get a message about tests failing,
try running:

	mvn -Pprovisional-build clean package install

Contributing
------------

We happily accept contributions. The best way to do this is to fork
CommandHelper on GitHub, add your changes, and then submit a pull request.
We'll look at it, make comments, and merge it into CommandHelper if
everything works out. If you make a PR, and feel your code is being
nitpicked to death, don't worry! Whenever a code review is done, it tends
to find lots of minor errors, even in a very experienced programmer. Don't
get discouraged! We'll work with you to make the changes, and all contributions
are appreciated. If the feature you want to add makes a significant change,
however, it may be best to discuss the changes with the other contributors
before you begin work on the feature.

By submitting code, you agree to dual license your code under the
the MIT License and GPL, barring the special restriction regarding code submissions,
explained in the SPECIAL_LICENSE.txt file, which is attached.

For details about code formatting standards, and other basic information for
contributors, please see the CONTRIBUTING.txt file.

Portions of CommandHelper are copyright by various contributors.

This project uses BrowserStack (https://www.browserstack.com) for testing the website.

Installing
----------

To install on Windows, you can follow the directions below (which are cross platform) or simply download the
Windows installer, found [here](https://github.com/EngineHub/CommandHelper/releases/tag/win-installer-v.1.0.1).

There are two modes of installation, both first require obtaining the MethodScript jar.
You can build it yourself, or download the official builds from Github.

For other platforms or manual installation on Windows, grab the jar from
[here](https://github.com/EngineHub/CommandHelper/packages/).

Minecraft: Installation in Minecraft is simple. Simply drop the jar in the plugins
folder.

Standalone Programming: MethodScript is a fledgling general purpose programming language,
and can be used from the command line, much like python, node, or other programming
languages.

For all platforms, place the jar file in whatever location you like, (noting that
it will create a folder at the same level which contains the configuration files, so
it's probably easiest to put this in your user directory),
then run `java -jar MethodScript.jar install-cmdline` as root/Administrator.
This will install the `mscript` program and add it to your path,
which can be used to start a REPL shell for quick tasks, execute a script file, or
easily run the commandline tools. On Windows, this also installs a PowerShell module,
which can be used with `Import-Module -Name MethodScript` and `Invoke-MethodScript`. On Windows,
you must reboot your system after installation to use the `mscript` command in cmd.exe.
You can install MethodScript using the same jar that is used in the Minecraft server,
though two different environments are used, with separate folders for the CommandHelper
installation, and the MethodScript installation. You can symlink these folders together if you
wish your configuration to be the same for both environments.

Commandline Tools: Various command line tools are available for use, and are useful
both for those that use the jar as a plugin, or as a general purpose language. Run
`java -jar MethodScript.jar help` for a list of these tools, or if you have installed
the commandline version, you can use `mscript -- help`.
</description><displayName>CommandHelper</displayName><fullDisplayName>CommandHelper</fullDisplayName><fullName>CommandHelper</fullName><name>CommandHelper</name><url>https://letsbuild.net/jenkins/job/CommandHelper/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>25</number><url>https://letsbuild.net/jenkins/job/CommandHelper/25/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>24</number><url>https://letsbuild.net/jenkins/job/CommandHelper/24/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>23</number><url>https://letsbuild.net/jenkins/job/CommandHelper/23/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>22</number><url>https://letsbuild.net/jenkins/job/CommandHelper/22/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>21</number><url>https://letsbuild.net/jenkins/job/CommandHelper/21/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>20</number><url>https://letsbuild.net/jenkins/job/CommandHelper/20/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>19</number><url>https://letsbuild.net/jenkins/job/CommandHelper/19/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>18</number><url>https://letsbuild.net/jenkins/job/CommandHelper/18/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>16</number><url>https://letsbuild.net/jenkins/job/CommandHelper/16/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>15</number><url>https://letsbuild.net/jenkins/job/CommandHelper/15/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>14</number><url>https://letsbuild.net/jenkins/job/CommandHelper/14/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>13</number><url>https://letsbuild.net/jenkins/job/CommandHelper/13/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>12</number><url>https://letsbuild.net/jenkins/job/CommandHelper/12/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>11</number><url>https://letsbuild.net/jenkins/job/CommandHelper/11/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>10</number><url>https://letsbuild.net/jenkins/job/CommandHelper/10/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>9</number><url>https://letsbuild.net/jenkins/job/CommandHelper/9/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>8</number><url>https://letsbuild.net/jenkins/job/CommandHelper/8/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>7</number><url>https://letsbuild.net/jenkins/job/CommandHelper/7/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>6</number><url>https://letsbuild.net/jenkins/job/CommandHelper/6/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/CommandHelper/5/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/CommandHelper/4/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CommandHelper/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/CommandHelper/1/</url></firstBuild><healthReport><description>Tests: 0 tests failing out of a total of 850 tests.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>25</number><url>https://letsbuild.net/jenkins/job/CommandHelper/25/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>25</number><url>https://letsbuild.net/jenkins/job/CommandHelper/25/</url></lastCompletedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>25</number><url>https://letsbuild.net/jenkins/job/CommandHelper/25/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>25</number><url>https://letsbuild.net/jenkins/job/CommandHelper/25/</url></lastSuccessfulBuild><nextBuildNumber>26</nextBuildNumber><property _class='jenkins.model.BuildDiscarderProperty'></property><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><property _class='hudson.plugins.sidebar_link.ProjectLinks'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>com.sk89q:commandhelper</name><url>https://letsbuild.net/jenkins/job/CommandHelper/com.sk89q$commandhelper/</url><color>blue</color><displayName>CommandHelper</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>LaterEvents
===========
An extension for [CommandHelper](https://methodscript.com/docs/3.3.3/)
which adds later binding event listeners. Normally CommandHelper only
listens for the earliest possible firing of events (in Bukkit this is
"LOWEST"). For the covered events, a latest modifiable firing and
read-only firing are listened for (Bukkit "HIGHEST" and "MONITOR"
respectively). The Read-only firing is the one that occurs after all
plugins have had a chance to modify the event and it is considered
finalized.

## Usage
- put the file in \&lt;pluginfolder&gt;/CommandHelper/extensions/
- bind the events as you would any other
- they have all the same capabilities of the original events, except
the read-only versions cannot be cancelled or modified
- names are normal events + abbreviated fire order
- _lm = last modifiable
- _ro = read-only

## Events
### Note:
[*See original documentation for details*](https://methodscript.com/docs/3.3.4/Event_API.html)
- player_interact_lm
- player_interact_ro
- player_interact_entity_lm
- player_interact_entity_ro
- player_interact_at_entity_lm
- player_interact_at_entity_ro
- player_login_lm
- player_login_ro
- player_join_lm
- player_join_ro
- block_break_lm
- block_break_ro
- block_place_lm
- block_place_ro
- projectile_hit_lm
- projectile_hit_ro
- entity_damage_lm
- entity_damage_ro
- entity_damage_player_lm
- entity_damage_player_ro</description><displayName>LaterEvents</displayName><fullDisplayName>LaterEvents</fullDisplayName><fullName>LaterEvents</fullName><name>LaterEvents</name><url>https://letsbuild.net/jenkins/job/LaterEvents/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/LaterEvents/2/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/LaterEvents/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/LaterEvents/1/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/LaterEvents/2/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/LaterEvents/2/</url></lastCompletedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/LaterEvents/2/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/LaterEvents/2/</url></lastSuccessfulBuild><nextBuildNumber>3</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>io.github.jbaero:laterevents</name><url>https://letsbuild.net/jenkins/job/LaterEvents/io.github.jbaero$laterevents/</url><color>blue</color><displayName>LaterEvents</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>This extension does not provide any new functions, but instead
provides a new DataSource for the Persistence Network. It allows
connection to an AWS DynamoDB installation.

To use it, you must already have a table set up in AWS, or running locally. The
table must have two columns, "key", which is a string and is the primary key, 
and "value" which is a string. You may set this up directly using whatever means
you like, or alternatively, you can have MethodScript set it up for you, using
the x-msdynamodb-createtable cmdline tool. (Run the commandline tools for
details on the settings and flags.)

Once the table is set up, to use it, set up a routing in the Persistence Network
with the scheme "dynamodb", for example:

    storage.aws.**=dynamodb://url?parameters

The url may be an actual url, (i.e. localhost:8000) which should point to a
self-hosted instance of DynamoDB 
(https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html)
which is useful for testing, but generally will be the special url "aws". This
directs the DataSource to connect to the specified region in the parameters.
The parameters should follow typical url syntax, i.e.

    storage.aws.**=dynamodb://aws?param1=value1&amp;param2=value2

Valid parameters are:

| Parameter       | Description                                               | Default    |
| --------------- | --------------------------------------------------------- | ---------- |
| protocol        | The protocol to use when connecting to non-AWS endpoints  | http       |
| region          | The AWS region to connect to. For non-AWS connections, this is ignored, but is required for AWS connections. May be one of: GovCloud, US_GOV_EAST_1, US_EAST_1, US_EAST_2, US_WEST_1, US_WEST_2, EU_WEST_1, EU_WEST_2, EU_WEST_3, EU_CENTRAL_1, EU_NORTH_1, AP_SOUTH_1, AP_SOUTHEAST_1, AP_SOUTHEAST_2, AP_NORTHEAST_1, AP_NORTHEAST_2, SA_EAST_1, CN_NORTH_1, CN_NORTHWEST_1, or CA_CENTRAL_1 | |
| tableName       | The name of the table to be accessed.                     | &amp;lt;Required&amp;gt; |
| accessKeyId     | The access key id to use. Not required, but if not provided, credentials must be set up in the system itself. | |
| accessKeySecret | The access key secret to use. Only required if accessKeyId is provided | |
| consistentRead  | If "true", reads will be put in the [strongly consistent](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html) read mode. | false |



It is not recommended to use the accessKeyId or accessKeySecret parameters,
instead, you should set the credentials up on the system itself. Instructions
can be found here: 
https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html</description><displayName>MSDynamoDB</displayName><fullDisplayName>MSDynamoDB</fullDisplayName><fullName>MSDynamoDB</fullName><name>MSDynamoDB</name><url>https://letsbuild.net/jenkins/job/MSDynamoDB/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/MSDynamoDB/2/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/MSDynamoDB/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/MSDynamoDB/1/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/MSDynamoDB/2/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/MSDynamoDB/2/</url></lastCompletedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/MSDynamoDB/2/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/MSDynamoDB/2/</url></lastSuccessfulBuild><nextBuildNumber>3</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>com.methodscript:MSDynamoDB</name><url>https://letsbuild.net/jenkins/job/MSDynamoDB/com.methodscript$MSDynamoDB/</url><color>blue</color><displayName>MSDynamoDB</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description># MSSerialConnection
Provides serial connection API for the MethodScript programming language.

# Functions
## SerialConnectionFunctions
Provides serial connection API that can be used to communicate with serial devices through COMPORT/USB.

### void serial\_connect(string portName, int baudRate, int numDataBits, int numStopBits, string parity, boolean setRTS, boolean setDTR):
Opens a serial connection to the given serial port using the given parameters. parity has to be one of: PARITY_NONE, PARITY_ODD, PARITY_EVEN, PARITY_MARK and PARITY_SPACE. Many common microprocessors work with settings: numDataBits = 8, numStopBits = 1, parity = PARITY_NONE, setRTS = true and setDTR = true. Look up the specifications of your serial device if this does not work. Throws IllegalArgumentException when parity is not one of: PARITY_NONE, PARITY_ODD, PARITY_EVEN, PARITY_MARK and PARITY_SPACE. Throws IllegalStateException when the given serial port has already been opened by MSSerialConnection. Throws SerialPortException when the serial connection could not be set up.

### void serial\_disconnect(string portName):
Disconnects the given serial port. Throws IllegalStateException when the given serial port is not open.

### array serial\_get\_ports():
Returns an array containing all serial ports in the system. Returns null when serial port data could not be obtained due to a recently disconnected device.

### int serial\_input\_buffer\_byte\_count(string portName):
Returns the number of bytes in the RX (input) buffer.

### boolean serial\_is\_connected(string portName):
Returns true if this port was opened by serial_connect(), and not yet closed by serial_disconnect(). Note that connection failures are not automatically detected, and therefore not considered by this function.

### int serial\_output\_buffer\_byte\_count(string portName):
Returns the number of bytes in the TX (output) buffer.

### byte\_array serial\_read\_bytes(string serialPort, int length, [int timeoutMs]):
Reads from the given serial connection. Returns the read data when 'length' bytes have been read or when no data has been read for 'timeoutMs' milliseconds (-1 indicates no timeout). Throws IllegalArgumentException when length &lt; 0 or timeoutMs &lt; -1. Throws IllegalStateException when the given serial port is not open. Throws SerialPortException when reading from the serial port fails.

### void serial\_write\_bytes(string serialPort, byte\_array data, [int startInd], [int length]):
Writes data to the given serial connection. When 'startInd' is given, writes bytes from the given data array starting at this index. When 'length' is given, writes this amount of bytes from the given data array starting at the start index. Throws IllegalStateException when the given serial port is not open. Throws RangeException when startInd and/or startInd + length is out of array bounds. Throws SerialPortException when writing the data to the serial port fails.

# Events
## SerialConnectionEvents
Contains events related to serial connections.

### serial\_data\_available
Fired when data is received through a serial connection.
#### Prefilters

#### Event Data
**string serialport**: The serial port name  
**int rxBufferByteCount**: The number of bytes available for reading
#### Mutable Fields

### serial\_output\_buffer\_empty
Fired when the output buffer of a serial connection has become empty (i.e. all writing operations have finished).
#### Prefilters

#### Event Data
**string serialport**: The serial port name
#### Mutable Fields
</description><displayName>MSSerialConnection</displayName><fullDisplayName>MSSerialConnection</fullDisplayName><fullName>MSSerialConnection</fullName><name>MSSerialConnection</name><url>https://letsbuild.net/jenkins/job/MSSerialConnection/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/MSSerialConnection/2/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/MSSerialConnection/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/MSSerialConnection/1/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/MSSerialConnection/2/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/MSSerialConnection/2/</url></lastCompletedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/MSSerialConnection/2/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/MSSerialConnection/2/</url></lastSuccessfulBuild><nextBuildNumber>3</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>io.github.pieter12345:MSSerialConnection</name><url>https://letsbuild.net/jenkins/job/MSSerialConnection/io.github.pieter12345$MSSerialConnection/</url><color>blue</color><displayName>MSSerialConnection</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>
Dead simple SMS integration! Simply set up your profile, then call `send_sms()`.

## Twilio

Currently, Twilio is the only supported SMS gateway, though the system is set up so that more can be added in the future, if demand is there. First, sign up for a Twilio account [here](https://www.twilio.com/), and obtain your SID and Auth token.

Create a profile in profiles.xml, in your MethodScript directory:


    &lt;profile id="twilioProfile"&gt;
        &lt;type&gt;twilio&lt;/type&gt;		 
        &lt;sid&gt;AC********************************&lt;/sid&gt;		 
        &lt;auth&gt;********************************&lt;/auth&gt;
    &lt;/profile&gt;

Then, in your code, you can send an sms simply:

    send_sms('twilioProfile', 
        '+11234561212', // from
        '+13214563232', // to
        'Message body');

That's it! You must use the Twilio hosted "active number" as the from number, and in trial mode, you can only send to a validated phone number. With a full account, you can send to any number.

See Twilio's website for more usage details, along with pricing, etc.</description><displayName>MSSMS</displayName><fullDisplayName>MSSMS</fullDisplayName><fullName>MSSMS</fullName><name>MSSMS</name><url>https://letsbuild.net/jenkins/job/MSSMS/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/MSSMS/2/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/MSSMS/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/MSSMS/1/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/MSSMS/2/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/MSSMS/2/</url></lastCompletedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/MSSMS/2/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/MSSMS/2/</url></lastSuccessfulBuild><nextBuildNumber>3</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>com.methodscript:MSSMS</name><url>https://letsbuild.net/jenkins/job/MSSMS/com.methodscript$MSSMS/</url><color>blue</color><displayName>MSSMS</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description># Functions
## Xodus
Provides methods for manipulating an Xodus database.

### array xodus\_entity\_from\_id(entityId):
Given an entity id string, returns the specified entity. The id reference may be obtained from a previous lookup, or for instance the links specified in the object.

### array xodus\_get\_all(type):
Returns all entities of a particular type.

### array xodus\_get\_types():
Returns a list of types in the database.

### byte\_array xodus\_read\_blob(entity, blobName):
Returns the blob with the given name. The entity may be the entire entity, or just the string id.

### array xodus\_read\_links(entity, linkName):
Given the entity, returns the ids for the given links, which can then be individually looked up if necessary. The entity may be the entire entity, or just the string id.

### void xodus\_transaction\_entity(environment, callback, [readOnly=false]):
Starts a transaction. The callback can then call one or more other methods within a transaction to manipulate the entity.
</description><displayName>MSXodus</displayName><fullDisplayName>MSXodus</fullDisplayName><fullName>MSXodus</fullName><name>MSXodus</name><url>https://letsbuild.net/jenkins/job/MSXodus/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/MSXodus/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/MSXodus/2/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/MSXodus/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/MSXodus/1/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/MSXodus/3/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/MSXodus/3/</url></lastCompletedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/MSXodus/3/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/MSXodus/3/</url></lastSuccessfulBuild><nextBuildNumber>4</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>com.methodscript:MSXodus</name><url>https://letsbuild.net/jenkins/job/MSXodus/com.methodscript$MSXodus/</url><color>blue</color><displayName>MSXodus</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>Adds packet based control directly in CommandHelper</description><displayName>PacketJumper</displayName><fullDisplayName>PacketJumper</fullDisplayName><fullName>PacketJumper</fullName><name>PacketJumper</name><url>https://letsbuild.net/jenkins/job/PacketJumper/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>8</number><url>https://letsbuild.net/jenkins/job/PacketJumper/8/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>7</number><url>https://letsbuild.net/jenkins/job/PacketJumper/7/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>6</number><url>https://letsbuild.net/jenkins/job/PacketJumper/6/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/PacketJumper/5/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/PacketJumper/4/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>3</number><url>https://letsbuild.net/jenkins/job/PacketJumper/3/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/PacketJumper/2/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/PacketJumper/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/PacketJumper/1/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>8</number><url>https://letsbuild.net/jenkins/job/PacketJumper/8/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>8</number><url>https://letsbuild.net/jenkins/job/PacketJumper/8/</url></lastCompletedBuild><lastFailedBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/PacketJumper/2/</url></lastFailedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>8</number><url>https://letsbuild.net/jenkins/job/PacketJumper/8/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>8</number><url>https://letsbuild.net/jenkins/job/PacketJumper/8/</url></lastSuccessfulBuild><lastUnsuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/PacketJumper/2/</url></lastUnsuccessfulBuild><nextBuildNumber>9</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>com.commandhelper:PacketJumper</name><url>https://letsbuild.net/jenkins/job/PacketJumper/com.commandhelper$PacketJumper/</url><color>blue</color><displayName>PacketJumper</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>Fork of PermissionsEx that works on later versions of Spigot/Paper. (builds against 1.20.2)</description><displayName>PermissionsEx</displayName><fullDisplayName>PermissionsEx</fullDisplayName><fullName>PermissionsEx</fullName><name>PermissionsEx</name><url>https://letsbuild.net/jenkins/job/PermissionsEx/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/PermissionsEx/2/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/PermissionsEx/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/PermissionsEx/1/</url></firstBuild><healthReport><description>Tests: 0 tests failing out of a total of 7 tests.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/PermissionsEx/2/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/PermissionsEx/2/</url></lastCompletedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/PermissionsEx/2/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>2</number><url>https://letsbuild.net/jenkins/job/PermissionsEx/2/</url></lastSuccessfulBuild><nextBuildNumber>3</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>ru.tehkode:PermissionsEx</name><url>https://letsbuild.net/jenkins/job/PermissionsEx/ru.tehkode$PermissionsEx/</url><color>blue</color><displayName>PermissionsEx</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description># SKCompat

An extension to [CommandHelper](https://github.com/EngineHub/CommandHelper) providing access to functionality in WorldEdit and WorldGuard.

**CHWorldEdit** provides functions for WorldEdit. **CHWorldGuard** provides functions for WorldGuard. **SKCompat** combines both, which means you only need to download one file.
See **[CHRegionChange](https://github.com/PseudoKnight/CHRegionChange)** for a WorldGuard event that fires on region boundary crossings.

## Builds

### Latest

**[SKCompat 3.3.0](https://github.com/jb-aero/SKCompat/releases/tag/v3.3.0)** (CommandHelper 3.3.5, Spigot 1.16.5 - 1.21.4, WorldEdit 7.2 - 7.3, WorldGuard 7.0)

### Legacy

**[SKCompat 3.1.4](https://github.com/jb-aero/SKCompat/releases/tag/v3.1.4)** (CommandHelper 3.3.4 - 3.3.5, Spigot 1.13.2 - 1.19.4, WorldEdit 7.0 - 7.2, WorldGuard 7.0)  
**[SKCompat 2.1.1](https://github.com/jb-aero/SKCompat/releases/tag/v2.1.1)** (CommandHelper 3.3.2, Spigot 1.7.10 - 1.12.2, WorldEdit/WorldGuard 6)

## Documentation

Full function documentation can be seen using VSCode with the MethodScript extension when SKCompat is installed.
Alternatively, [here's a guide](https://github.com/jb-aero/SKCompat/blob/master/DOCUMENTATION.md) to create a command to
see documentation in-game.

### Compact Function Reference
#### WorldEdit

In these WorldEdit functions, user refers to console or player, where console is `null` or `'~console'`.

**sk_pos1([user], array | [user] | array)** Sets or gets the user's point 1.  
**sk_pos2([user], array | [user] | array)** Sets or gets the user's point 2.  
**sk_setblock([user], pattern)** Sets the current selection to blocks defined by the provided block pattern.  
**sk_replace_blocks([user], mask, pattern)** Replaces blocks matching the mask in the current selection with a pattern.  
**skcb_copy(location | user, [options])** Copies the selected region into the clipboard.  
**skcb_paste(location | user, [options])** Pastes a schematic from the user's clipboard.  
**skcb_load(filename, [user])** Loads a schematic into the clipboard from file.  
**skcb_save(filename, [overwrite], [user])** Saves a schematic in the clipboard to file.  
**skcb_rotate([user,] y, [x, z])** Rotates the clipboard by the given degrees for each corresponding axis.  
**skcb_clear([user])** Clears the clipboard for the specified user.  
**sk_schematic_exists(filename)** Returns whether a schematic by that name exists.  
**sk_clipboard_info([user])** Returns an array with selection info of the give user's clipboard.

#### WorldGuard

**sk_all_regions([world])** Returns all the regions in all worlds, or just the one world.  
**sk_region_info(region, world, [value])** Returns information about the a region in the given world.  
**sk_region_overlaps(world, region1, array(region2, [regionN...]))** Returns whether or not the specified regions overlap.  
**sk_region_intersect(world, first_region, [other_region(s)]}** Returns array of regions which intersect with first region.  
**sk_region_contains([world], region, locationArray)** Returns whether the location is within the region.  
**sk_current_regions([player])** Returns an array of regions a player is in.  
**sk_regions_at(locationArray)** Returns a list of regions at the specified location.  
**sk_region_volume(region, world)** Returns the volume of a region in the given world.  
**sk_region_create([world], name, array(locationArray, [...]))** Create region of the given name in the given world.  
**sk_region_update([world], region, array(locationArray, [...]))** Updates the boundaries of a given region.  
**sk_region_rename([world], oldName, newName])** Renames an existing region.  
**sk_region_remove([world], region)** Removes existing region.  
**sk_region_exists([world], region)** Check if a region by that name exists in a world.  
**sk_region_addowner(region, [world], [owner(s)])** Add owner(s) to a region.  
**sk_region_remowner(region, [world], [owner(s)])** Removes owner(s) from a region.  
**sk_region_owners(region, world)** Returns an array of owners of this region.  
**sk_region_addmember(region, [world], [member(s)])** Add member(s) to a region.  
**sk_region_remmember(region, [world], [member(s)])** Remove member(s) from a region.  
**sk_region_members(region, world)** Returns an array of members of this region.  
**sk_register_flag(name, [type])** Registers a new region flag. Type must be BOOLEAN, DOUBLE, INTEGER, LOCATION or STRING (default).  
**sk_region_flag(world, region, flagName, flagValue, [group])** Add/change/remove flag in a region.  
**sk_region_check_flag(locationArray, flagName, [player])** Check state of selected flag in defined location.  
**sk_region_flags(region, world)** Returns an associative array with the flags of the region.  
**sk_region_setpriority([world], region, priority)** Sets priority for a region.  
**sk_region_setparent(world, region, [parentRegion])** Sets parent region for a region.  
**sk_can_build([player], locationArray)** Returns whether or not player can build at the location.
</description><displayName>SKCompat</displayName><fullDisplayName>SKCompat</fullDisplayName><fullName>SKCompat</fullName><name>SKCompat</name><url>https://letsbuild.net/jenkins/job/SKCompat/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>8</number><url>https://letsbuild.net/jenkins/job/SKCompat/8/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>7</number><url>https://letsbuild.net/jenkins/job/SKCompat/7/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>6</number><url>https://letsbuild.net/jenkins/job/SKCompat/6/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>5</number><url>https://letsbuild.net/jenkins/job/SKCompat/5/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>4</number><url>https://letsbuild.net/jenkins/job/SKCompat/4/</url></build><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/SKCompat/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/SKCompat/1/</url></firstBuild><healthReport><description>Build stability: 1 out of the last 5 builds failed.</description><iconClassName>icon-health-60to79</iconClassName><iconUrl>health-60to79.png</iconUrl><score>80</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>8</number><url>https://letsbuild.net/jenkins/job/SKCompat/8/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>8</number><url>https://letsbuild.net/jenkins/job/SKCompat/8/</url></lastCompletedBuild><lastFailedBuild _class='hudson.maven.MavenModuleSetBuild'><number>6</number><url>https://letsbuild.net/jenkins/job/SKCompat/6/</url></lastFailedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>8</number><url>https://letsbuild.net/jenkins/job/SKCompat/8/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>8</number><url>https://letsbuild.net/jenkins/job/SKCompat/8/</url></lastSuccessfulBuild><lastUnsuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>6</number><url>https://letsbuild.net/jenkins/job/SKCompat/6/</url></lastUnsuccessfulBuild><nextBuildNumber>9</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>io.github.jbaero:CHWorldEdit</name><url>https://letsbuild.net/jenkins/job/SKCompat/io.github.jbaero$CHWorldEdit/</url><color>blue</color><displayName>CHWorldEdit</displayName></module><module><name>io.github.jbaero:CHWorldGuard</name><url>https://letsbuild.net/jenkins/job/SKCompat/io.github.jbaero$CHWorldGuard/</url><color>blue</color><displayName>CHWorldGuard</displayName></module><module><name>io.github.jbaero:SKCompat</name><url>https://letsbuild.net/jenkins/job/SKCompat/io.github.jbaero$SKCompat/</url><color>blue</color><displayName>SKCompat</displayName></module><module><name>io.github.jbaero:SKCompat-parent</name><url>https://letsbuild.net/jenkins/job/SKCompat/io.github.jbaero$SKCompat-parent/</url><color>blue</color><displayName>SKCompat-parent</displayName></module></job><job _class='hudson.maven.MavenModuleSet'><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'></action><description>Updated fork of a plugin to create and manage networks of Stargates. and a dependency for the [CHStargate](https://letsbuild.net/jenkins/job/CHStargate/) CommandHelper extension.

Create gates that allow for instant-teleportation between large distances. Gates can be always-open or triggered; they can share a network or be split into clusters; they can be hidden on a network or accessible to everybody.

* Player permissions -- let players build their own networks.  
* Vault economy support -- can add costs for create, destroy and use.  
* Multiple custom gate configurations  
* Message customization  

[Documentation](https://github.com/PseudoKnight/Stargate-Bukkit/blob/master/README.md)  </description><displayName>Stargate</displayName><fullDisplayName>Stargate</fullDisplayName><fullName>Stargate</fullName><name>Stargate</name><url>https://letsbuild.net/jenkins/job/Stargate/</url><buildable>true</buildable><build _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/Stargate/1/</url></build><color>blue</color><firstBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/Stargate/1/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/Stargate/1/</url></lastBuild><lastCompletedBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/Stargate/1/</url></lastCompletedBuild><lastStableBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/Stargate/1/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenModuleSetBuild'><number>1</number><url>https://letsbuild.net/jenkins/job/Stargate/1/</url></lastSuccessfulBuild><nextBuildNumber>2</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm><module><name>org.TheDgtl:Stargate</name><url>https://letsbuild.net/jenkins/job/Stargate/org.TheDgtl$Stargate/</url><color>blue</color><displayName>Stargate</displayName></module></job><overallLoad><availableExecutors></availableExecutors><busyExecutors></busyExecutors><connectingExecutors></connectingExecutors><definedExecutors></definedExecutors><idleExecutors></idleExecutors><onlineExecutors></onlineExecutors><queueLength></queueLength><totalExecutors></totalExecutors><totalQueueLength></totalQueueLength></overallLoad><primaryView _class='hudson.model.AllView'><job _class='hudson.maven.MavenModuleSet'><name>CHCitizens</name><url>https://letsbuild.net/jenkins/job/CHCitizens/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHDiscord</name><url>https://letsbuild.net/jenkins/job/CHDiscord/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHDisguises</name><url>https://letsbuild.net/jenkins/job/CHDisguises/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHDynmap</name><url>https://letsbuild.net/jenkins/job/CHDynmap/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHFile</name><url>https://letsbuild.net/jenkins/job/CHFile/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHFiles</name><url>https://letsbuild.net/jenkins/job/CHFiles/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHGCC</name><url>https://letsbuild.net/jenkins/job/CHGCC/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHGeyser</name><url>https://letsbuild.net/jenkins/job/CHGeyser/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHGriefPrevention</name><url>https://letsbuild.net/jenkins/job/CHGriefPrevention/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHGroovy</name><url>https://letsbuild.net/jenkins/job/CHGroovy/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHHTTPd</name><url>https://letsbuild.net/jenkins/job/CHHTTPd/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHIRC</name><url>https://letsbuild.net/jenkins/job/CHIRC/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHJavascript</name><url>https://letsbuild.net/jenkins/job/CHJavascript/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHLogblock</name><url>https://letsbuild.net/jenkins/job/CHLogblock/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHNaughty</name><url>https://letsbuild.net/jenkins/job/CHNaughty/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHPaper</name><url>https://letsbuild.net/jenkins/job/CHPaper/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHPerms</name><url>https://letsbuild.net/jenkins/job/CHPerms/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHPexAPI</name><url>https://letsbuild.net/jenkins/job/CHPexAPI/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHPlaceholderAPI</name><url>https://letsbuild.net/jenkins/job/CHPlaceholderAPI/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHPlotSquared</name><url>https://letsbuild.net/jenkins/job/CHPlotSquared/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHPython</name><url>https://letsbuild.net/jenkins/job/CHPython/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHRegionChange</name><url>https://letsbuild.net/jenkins/job/CHRegionChange/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHServerCommunication</name><url>https://letsbuild.net/jenkins/job/CHServerCommunication/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHSpigot</name><url>https://letsbuild.net/jenkins/job/CHSpigot/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHStargate</name><url>https://letsbuild.net/jenkins/job/CHStargate/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHVault</name><url>https://letsbuild.net/jenkins/job/CHVault/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CommandHelper</name><url>https://letsbuild.net/jenkins/job/CommandHelper/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>LaterEvents</name><url>https://letsbuild.net/jenkins/job/LaterEvents/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>MSDynamoDB</name><url>https://letsbuild.net/jenkins/job/MSDynamoDB/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>MSSerialConnection</name><url>https://letsbuild.net/jenkins/job/MSSerialConnection/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>MSSMS</name><url>https://letsbuild.net/jenkins/job/MSSMS/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>MSXodus</name><url>https://letsbuild.net/jenkins/job/MSXodus/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>PacketJumper</name><url>https://letsbuild.net/jenkins/job/PacketJumper/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>PermissionsEx</name><url>https://letsbuild.net/jenkins/job/PermissionsEx/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>SKCompat</name><url>https://letsbuild.net/jenkins/job/SKCompat/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>Stargate</name><url>https://letsbuild.net/jenkins/job/Stargate/</url><color>blue</color></job><name>all</name><url>https://letsbuild.net/jenkins/</url></primaryView><quietingDown>false</quietingDown><slaveAgentPort>50000</slaveAgentPort><unlabeledLoad _class='jenkins.model.UnlabeledLoadStatistics'><availableExecutors></availableExecutors><busyExecutors></busyExecutors><connectingExecutors></connectingExecutors><definedExecutors></definedExecutors><idleExecutors></idleExecutors><onlineExecutors></onlineExecutors><queueLength></queueLength><totalExecutors></totalExecutors></unlabeledLoad><url>https://letsbuild.net/jenkins/</url><useCrumbs>true</useCrumbs><useSecurity>true</useSecurity><view _class='hudson.model.AllView'><job _class='hudson.maven.MavenModuleSet'><name>CHCitizens</name><url>https://letsbuild.net/jenkins/job/CHCitizens/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHDiscord</name><url>https://letsbuild.net/jenkins/job/CHDiscord/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHDisguises</name><url>https://letsbuild.net/jenkins/job/CHDisguises/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHDynmap</name><url>https://letsbuild.net/jenkins/job/CHDynmap/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHFile</name><url>https://letsbuild.net/jenkins/job/CHFile/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHFiles</name><url>https://letsbuild.net/jenkins/job/CHFiles/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHGCC</name><url>https://letsbuild.net/jenkins/job/CHGCC/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHGeyser</name><url>https://letsbuild.net/jenkins/job/CHGeyser/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHGriefPrevention</name><url>https://letsbuild.net/jenkins/job/CHGriefPrevention/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHGroovy</name><url>https://letsbuild.net/jenkins/job/CHGroovy/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHHTTPd</name><url>https://letsbuild.net/jenkins/job/CHHTTPd/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHIRC</name><url>https://letsbuild.net/jenkins/job/CHIRC/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHJavascript</name><url>https://letsbuild.net/jenkins/job/CHJavascript/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHLogblock</name><url>https://letsbuild.net/jenkins/job/CHLogblock/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHNaughty</name><url>https://letsbuild.net/jenkins/job/CHNaughty/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHPaper</name><url>https://letsbuild.net/jenkins/job/CHPaper/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHPerms</name><url>https://letsbuild.net/jenkins/job/CHPerms/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHPexAPI</name><url>https://letsbuild.net/jenkins/job/CHPexAPI/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHPlaceholderAPI</name><url>https://letsbuild.net/jenkins/job/CHPlaceholderAPI/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHPlotSquared</name><url>https://letsbuild.net/jenkins/job/CHPlotSquared/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHPython</name><url>https://letsbuild.net/jenkins/job/CHPython/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHRegionChange</name><url>https://letsbuild.net/jenkins/job/CHRegionChange/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHServerCommunication</name><url>https://letsbuild.net/jenkins/job/CHServerCommunication/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHSpigot</name><url>https://letsbuild.net/jenkins/job/CHSpigot/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHStargate</name><url>https://letsbuild.net/jenkins/job/CHStargate/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CHVault</name><url>https://letsbuild.net/jenkins/job/CHVault/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>CommandHelper</name><url>https://letsbuild.net/jenkins/job/CommandHelper/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>LaterEvents</name><url>https://letsbuild.net/jenkins/job/LaterEvents/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>MSDynamoDB</name><url>https://letsbuild.net/jenkins/job/MSDynamoDB/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>MSSerialConnection</name><url>https://letsbuild.net/jenkins/job/MSSerialConnection/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>MSSMS</name><url>https://letsbuild.net/jenkins/job/MSSMS/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>MSXodus</name><url>https://letsbuild.net/jenkins/job/MSXodus/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>PacketJumper</name><url>https://letsbuild.net/jenkins/job/PacketJumper/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>PermissionsEx</name><url>https://letsbuild.net/jenkins/job/PermissionsEx/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>SKCompat</name><url>https://letsbuild.net/jenkins/job/SKCompat/</url><color>blue</color></job><job _class='hudson.maven.MavenModuleSet'><name>Stargate</name><url>https://letsbuild.net/jenkins/job/Stargate/</url><color>blue</color></job><name>all</name><url>https://letsbuild.net/jenkins/</url></view></hudson>