# Commander
## A universal java command parsing library
# Building
This project uses [Gradle](https://gradle.org/).
1. Clone this [repository](https://gihub.com/OctoPvP/Commander): `git clone https://github.com/OctoPvP/Commander`
2. Run `./gradlew build`, optionally add `publishToMavenLocal` if you would like to install it into your ~/.m2 (Maven cache) directory
# Important
To allow command argument names to work correctly, you need to pass `-parameters` to your compiler
Alternatively, you can use the [@Name](https://github.com/OctoPvP/Commander/blob/master/Commander-Core/src/main/java/net/octopvp/commander/annotation/Name.java) annotation.
Maven:
```xml
org.apache.maven.plugins
maven-compiler-plugin
${maven-compiler-plugin.version}
true
```
Gradle (Groovy):
```groovy
compileJava {
options.compilerArgs << '-parameters'
}
```
Gradle (KTS):
```kotlin
tasks.compileJava {
options.compilerArgs.add("-parameters")
}
```
# Usage
| Implementation | Link |
|----------------------------|---------------------------------------------------------------------------|
| Creating An Implementation | [Here](https://github.com/OctoPvP/Commander/wiki) |
| Bukkit | [Here](https://github.com/OctoPvP/Commander/tree/master/Commander-Bukkit) |
# Features
- Annotation based commands
- Dependency Injection in command methods
- Argument parsing into Objects through [Providers](https://github.com/OctoPvP/Commander/blob/master/Commander-Core/src/main/java/net/octopvp/commander/provider/Provider.java)
- Command suggestions
- Flags & Switches
- Customizable Messages
- Validators
# License
See [LICENSE](https://github.com/OctoPvP/Commander/blob/master/LICENSE)