# cloud command framework [![CodeFactor](https://www.codefactor.io/repository/github/sauilitired/cloud/badge)](https://www.codefactor.io/repository/github/sauilitired/cloud) This is going to be a general-purpose Java command dispatcher & framework. It will allow programmers to define command chains that users can use to execute pre-defined actions. The library was named cloud because using it makes you feel like you're floating around on a cloud in heaven. It's an experience of pure bliss and joy. This is unlike the experience of using **a**ny **c**ommand **f**ramework that currently exists for the JVM, which can be compared to drowning in a pool of lava while watching your family get eaten by a pack of wolves. Its feature set is derived from **a**lready existing **c**ommand **f**rameworks, while being less restrictive, opinionated and confusing. CLOUD is built to be completely deterministic and your commands will behave exactly as you've programmed them to. No fluff and no mess, just a smooth cloud-like experience. The code is based on a paper that can be found [here](https://github.com/Sauilitired/Sauilitired/blob/master/AS_2020_09_Commands.pdf). ## goals - Allow for commands to be defined using builder patterns - Allow for commands to be defined using annotated methods - Allow for command pre-processing - Allow for command suggestion outputs Once the core functionality is present, the framework will offer implementation modules, supporting a wide variety of platforms. ### implementations - Minecraft: - Generic Brigadier module - Bukkit module - Paper module, with optional Brigadier support - Sponge module - Cloudburst - Bungee module - Velocity module - Create a Discord implementation (JDA) - Create a Java CLI implementation (JLine3) ## links - Discord: https://discord.gg/KxkjDVg ## develop & build To clone the repository, use `git clone --recursive https://github.com/Sauilitired/cloud.git`. To then build it, use `mvn clean package`. If you've already cloned the repository without doing it recursively, use `git submodule update --remote` to update the submodule. This is only needed the first time, as Maven will perform this operation when building. There is a bash script (`build.sh`) that performs the submodule updating & builds the project. Feel free to use this if you want to. ## maven cloud is available from [IntellectualSites](https://intellectualsites.com)' maven repository: ```xml intellectualsites-snapshots https://mvn.intellectualsites.com/content/repositories/snapshots ``` ```xml com.intellectualsites ``` ### attributions, links & acknowledgements This library is licensed under the MIT license, and the code copyright belongs to Alexander Söderberg. The implementation is based on a paper written by the copyright holder, and this paper exists under the CC Attribution 4 license. The Cloud icon was created by by Thanga Vignesh P on Iconscout and Digital rights were purchased under a premium plan.