Caduceus is a Minecraft plugin that uses our Hermes backend to communicate
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.jar into your server's plugins folder.
Configuration:
Upon first run, the plugin will generate a http.yml file. Configure your API credentials and endpoints there.
The project uses several modern libraries and patterns:
team.unnamed:injectOkHttp / Custom HTTP LayerGsonteam.unnamed.commandContributions are welcome! Please feel free to submit a Pull Request or open an issue for any bugs or feature requests.
MIT LICENCES