I will create a comprehensive README.md file for the Caduceus project, detailing its purpose, architecture (Spigot plugin with an API layer), and key features like dependency injection, HTTP integration, and user management.
# Caduceus
Caduceus is a sophisticated Minecraft Spigot plugin designed with a robust modular architecture. It leverages dependency injection and a dedicated API layer to manage user statistics, synchronization, and remote HTTP interactions efficiently.
## 🚀 Features
— **Modular Architecture**: Split into `api` and `plugin` modules for better separation of concerns and reusability.
— **Dependency Injection**: Utilizes `unnamed-inject` for clean, maintainable, and testable code.
- **HTTP Integration**: Built-in support for remote API communication, including
- Authentication via Interceptors.
- JWT/Security Token management (Creation, Validation, Updating).
— Retrofit-style request patterns.
- **User Management**:
— Remote user loading and creation.
– Synchronization between local and remote data.
– Comprehensive user statistics and economy tracking.
- **Translation System**: Support for localized messages.
- **Configurable**: Easy configuration via YAML files.
## 🛠️ Project Structure
- `api/`: Contains the core interfaces, models, and logic for HTTP communication, user data structures, and services.
- `plugin/`: The Spigot implementation, handling Bukkit events, commands, and plugin lifecycle management.
## 📋 Requirements
— Java 8
— A Spigot/Paper Minecraft server
– Gradle for building the project.
## 🔧 Installation & Setup
1. **Clone the repository**:
```bash
git clone https://github.com/alexissdev/caduceus.git
cd caduceus-
Build the project:
./gradlew clean shadowJar
The compiled JAR will be located in
plugin/build/libs/. -
Deploy: Place the generated
caduceus-plugin.jarinto your server'spluginsfolder. -
Configuration: Upon first run, the plugin will generate a
http.ymlfile. Configure your API credentials and endpoints there.
The project uses several modern libraries and patterns:
- Injection:
team.unnamed:inject - Networking:
OkHttp / Custom HTTP Layer - JSON:
Gson - Commands:
team.unnamed.command
Contributions are welcome! Please feel free to submit a Pull Request or open an issue for any bugs or feature requests.
MIT LICENCES