> For the complete documentation index, see [llms.txt](https://warmania.gitbook.io/playerconsole-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://warmania.gitbook.io/playerconsole-documentation/api-reference/reference/playerconsole-api.md).

# PlayerCONSOLE API

The guide to using the PlayerCONSOLE API.

## Environment Setup

### 1. Download PlayerCONSOLE

Download the latest PlayerCONSOLE JAR from one of the following trusted sources:

* MinecraftPlugins.org
* SpigotMC.org

***

### 2. Install the JAR into your local Maven repository

Replace the file path and version with the ones that match your downloaded JAR.

```bash
mvn install:install-file \
-Dfile=path/to/PlayerCONSOLE.jar \
-DgroupId=com.Mateitaa1 \
-DartifactId=PlayerCONSOLE \
-Dversion=<version> \
-Dpackaging=jar
```

{% hint style="info" %}
Make sure to change the /path/to/PlayerCONSOLE.jar and the \<version> to the version.
{% endhint %}

***

### 3. Add the Maven dependency

```xml
<dependency>
    <groupId>com.Mateitaa1</groupId>
    <artifactId>PlayerCONSOLE</artifactId>
    <version>{version}</version>
    <scope>provided</scope>
</dependency>
```

{% hint style="info" %}
Replace {version} with the latest version
{% endhint %}

***

### 4. Add the dependency to your plugin

#### Bukkit

```yaml
depend: [PlayerCONSOLE]
```

{% hint style="info" %}
Only needed on Bukkit
{% endhint %}

***

## Imports

#### Bukkit

```java
import com.Mateitaa1.playerconsole.CommandAPI;
import com.Mateitaa1.playerconsole.PlayerCONSOLE;
```

#### Velocity

```java
import com.Mateitaa1.playerconsole.velocity.CommandAPI;
import com.Mateitaa1.playerconsole.velocity.PlayerCONSOLEVelocity;
```

***

## Basic Usage

#### Registering a basic command

```java
api.registerCommand("ping", "Ping command", args -> {
    return new CommandAPI.CommandResult(true, "Pong!");
});
```

#### Registering a command with arguments

```java
api.registerCommand("say", "Say something now!", args -> {
    if (args.length == 0) {
        return new CommandAPI.CommandResult(false, "Usage: say <message>");
    }

    String message = String.join(" ", args);
    return new CommandAPI.CommandResult(true, "User said: " + message);
});
```

#### Registering subcommands

```java
api.registerCommand("admin", "Admin tools", args -> {
    if (args.length == 0) {
        return new CommandAPI.CommandResult(false,
            "Usage: admin <kick|ban|clear>");
    }

    switch (args[0].toLowerCase()) {
        case "kick":
            return new CommandAPI.CommandResult(true, "Player kicked");

        case "ban":
            return new CommandAPI.CommandResult(true, "Player banned");

        case "clear":
            return new CommandAPI.CommandResult(true, "Chat cleared");

        default:
            return new CommandAPI.CommandResult(false, "Unknown subcommand");
    }
});
```

***

## Accessing the API

#### Bukkit

```java
PlayerCONSOLE pc = (PlayerCONSOLE) Bukkit.getPluginManager()
    .getPlugin("PlayerCONSOLE");

CommandAPI api = pc.getCommandAPI();
```

#### Velocity

```java
Optional<Object> pcInstance = server.getPluginManager()
    .getPlugin("playerconsole-velocity")
    .flatMap(container -> container.getInstance());

if (pcInstance.isPresent()) {
    PlayerCONSOLEVelocity plugin = (PlayerCONSOLEVelocity) pcInstance.get();
    CommandAPI api = plugin.getCommandAPI();
}
```
