Skip to content

Commit 25f5cda

Browse files
committed
feat(docs): add the new README
1 parent ec7213d commit 25f5cda

File tree

1 file changed

+109
-47
lines changed

1 file changed

+109
-47
lines changed

README.md

Lines changed: 109 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,63 @@
11
# CommandsAPI
22

3-
CommandsAPI is a powerful and flexible Java library for creating and managing commands in Bukkit/Spigot plugins. It provides a robust framework for handling command arguments, permissions, subcommands, and auto-completion, making it easier to build complex command structures in your Minecraft plugins.
3+
**CommandsAPI** is a modular, extensible Java library for building robust, typed command systems across multiple platforms such as **Spigot** and **Velocity**.
4+
As of version `4.0.0`, all core logic has been extracted into a dedicated `core` module, enabling seamless multi-platform support.
45

5-
## Features
6+
---
7+
8+
## ✨ Features
9+
10+
***Multi-Platform Support** (Spigot, Velocity, etc.)
11+
***Typed Argument Parsing** with validation
12+
***Custom Argument Converters**
13+
***Subcommands & Hierarchical Command Trees**
14+
***Tab Completion Support**
15+
***Permission & Context Requirements**
16+
***Optional and Infinite Arguments**
17+
***Auto-Generated Usage Help**
18+
***Lightweight, Fast, and Fully Extensible**
19+
20+
---
21+
22+
## 🧱 Project Structure
23+
24+
```
25+
traqueur-dev-commandsapi/
26+
├── core/ # Platform-agnostic command logic
27+
├── spigot/ # Spigot implementation
28+
├── <platform>-test-plugin/ # The test plugin for the specified platform
29+
└── velocity/ # Velocity implementation
30+
```
31+
32+
---
633

7-
- **Customizable Commands:** Easily create commands with custom arguments, descriptions, usage, and permissions.
8-
- **Subcommands Support:** Organize your commands with subcommands and handle complex command structures effortlessly.
9-
- **Argument Handling:** Support for various argument types including custom types and auto-completion for a better user experience.
10-
- **Permissions and Aliases:** Define permissions and aliases for your commands to control access and provide alternative command names.
11-
- **In-Game/Console Command Support:** Specify whether a command can only be executed in-game or from the console.
12-
- **Commands Requirements:** Set requirements for commands to be executed, use specific conditions like in specific world.
34+
## 🚀 Getting Started
1335

14-
## Getting Started
36+
### ✅ Requirements
1537

16-
### Prerequisites
38+
* Java 21+
39+
* A supported Minecraft platform (e.g., Spigot or Velocity)
40+
* Build tool (Gradle/Maven) with JitPack
1741

18-
- **Java 21** or higher
19-
- **Paper/Spigot API** - Compatible with various Minecraft server versions
20-
- **CommandsAPI Library** - Add it to your project dependencies
42+
---
2143

22-
### Installation
44+
## 📦 Installation
2345

24-
To use CommandsAPI in your project, add the dependency to your build configuration. For Maven, include:
46+
### Gradle
2547

26-
#### For Gradle include
2748
```groovy
2849
repositories {
2950
maven { url 'https://jitpack.io' }
3051
}
52+
3153
dependencies {
32-
implementation 'com.github.Traqueur-dev:CommandsAPI:VERSION'
54+
implementation 'com.github.Traqueur-dev.CommandsAPI:platform-spigot:4.0.0' // or platform-velocity
3355
}
3456
```
3557

36-
#### For Maven include
37-
```xml
58+
### Maven
59+
60+
```xml
3861
<repositories>
3962
<repository>
4063
<id>jitpack.io</id>
@@ -44,22 +67,26 @@ dependencies {
4467

4568
<dependencies>
4669
<dependency>
47-
<groupId>com.github.Traqueur-dev</groupId>
48-
<artifactId>CommandsAPI</artifactId>
49-
<version>VERSION</version>
70+
<groupId>com.github.Traqueur-dev.CommandsAPI</groupId>
71+
<artifactId>platform-spigot</artifactId> <!-- or platform-velocity -->
72+
<version>4.0.0</version>
5073
</dependency>
5174
</dependencies>
5275
```
53-
Be sure to relocate commandsAPI in to prevent bugs with other plugins.
5476

55-
### Basic Usage
77+
> ⚠️ **Relocate** the library when shading it into your plugin to avoid version conflicts with other plugins.
78+
79+
---
80+
81+
## 💡 Example (Spigot)
5682

57-
To get started with CommandsAPI, create a new command by extending the `Command<T extends JavaPlugin>` class. Here’s a simple example:
83+
Be sure to extends all the classes from the platform you are using (Spigot, Velocity, etc.):
84+
`fr.traqueur.commandsapi.spigot.CommandManager` for Spigot, `fr.traqueur.commandsapi.velocity.CommandManager` for Velocity, etc.
5885

5986
```java
6087
public class HelloWorldCommand extends Command<MyPlugin> {
6188

62-
public HelloWorldCommand(JavaPlugin plugin) {
89+
public HelloWorldCommand(MyPlugin plugin) {
6390
super(plugin, "helloworld");
6491
setDescription("A simple hello world command");
6592
setUsage("/helloworld");
@@ -72,41 +99,76 @@ public class HelloWorldCommand extends Command<MyPlugin> {
7299
}
73100
```
74101

75-
Register the command in your plugin's `onEnable` method:
102+
Register the command:
76103

77104
```java
78-
public class MyPlugin extends JavaPlugin {
105+
@Override
106+
public void onEnable() {
107+
CommandManager<MyPlugin> manager = new CommandManager<>(/*args depending of the platform*/);
108+
manager.registerCommand(new HelloWorldCommand(this));
109+
}
110+
```
79111

80-
@Override
81-
public void onEnable() {
82-
CommandManager<MyPlugin> commandManager = new CommandManager<>(this);
83-
commandManager.registerCommands(new HelloWorldCommand(this));
84-
}
112+
---
113+
114+
## 🧠 Add New Platform Support
115+
116+
You can create your own adapter by implementing:
117+
118+
```java
119+
public interface CommandPlatform<T, S> {
120+
T getPlugin();
121+
void injectManager(CommandManager<T, S> manager);
122+
Logger getLogger();
123+
boolean hasPermission(S sender, String permission);
124+
void addCommand(Command<T, S> command, String label);
125+
void removeCommand(String label, boolean subcommand);
85126
}
86127
```
87128

88-
### Documentation
129+
This allows support for new platforms like Fabric, Minestom, or BungeeCord.
89130

90-
For detailed documentation and usage examples, visit me [Wiki](https://github.com/Traqueur-dev/CommandsAPI/wiki).
131+
---
91132

92-
## Contributing
133+
## 🛠️ Local Development
93134

94-
We welcome contributions to the CommandsAPI project! If you would like to contribute, please follow these steps:
135+
To publish locally for development:
95136

96-
1. Fork the repository.
97-
2. Create a new branch for your changes.
98-
3. Commit your changes with clear and concise commit messages.
99-
4. Push your changes to your fork.
100-
5. Create a pull request with a description of your changes.
137+
```bash
138+
./gradlew core:publishToMavenLocal platform-spigot:publishToMavenLocal platform-velocity:publishToMavenLocal
139+
```
101140

102-
## License
141+
---
103142

104-
CommandsAPI is licensed under the [MIT License](LICENSE). See the LICENSE file for more details.
143+
## 📚 Documentation
105144

106-
## Contact
145+
Visit the [Wiki](https://github.com/Traqueur-dev/CommandsAPI/wiki) for:
107146

108-
For any questions or support, please open an issue on the [GitHub repository](https://github.com/Traqueur-dev/CommandsAPI/issues).
147+
* Tutorials
148+
* Examples
149+
* API Reference
150+
* Extending with custom types and logic
109151

110152
---
111153

112-
Happy coding and enjoy building your Minecraft plugins with CommandsAPI!
154+
## 🤝 Contributing
155+
156+
We welcome contributions!
157+
158+
1. Fork this repository
159+
2. Create a new branch
160+
3. Implement your feature or fix
161+
4. Open a pull request with a clear description
162+
163+
---
164+
165+
## 📄 License
166+
167+
CommandsAPI is licensed under the [MIT License](LICENSE).
168+
169+
---
170+
171+
## 💬 Support
172+
173+
Need help or want to report a bug?
174+
Open an issue on [GitHub](https://github.com/Traqueur-dev/CommandsAPI/issues)

0 commit comments

Comments
 (0)