5 KiB
cloud command framework

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 any command framework 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 already existing command frameworks, 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.
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)
nomenclature
- sender: someone who is able to produce input
- argument: an argument is something that can be parsed from a string
- required argument: a required argument is an argument that must be provided by the sender
- optional argument: an optional argument is an argument that can be omitted (may have a default value)
- static argument: a string literal
- command: a command is a chain of arguments and a handler that acts on the parsed arguments
- command tree: structure that contains all commands and is used to parse input into arguments
modules
- cloud-core: Core module containing most of the cloud API, and shared implementations
- cloud-annotations: Annotation processing code that allows you to use annotated methods rather than builders
- cloud-jline: W.I.P JLine3 implementation of cloud
- cloud-minecraft/cloud-brigadier: Brigadier mappings for cloud
- cloud-minecraft/cloud-bukkit: Bukkit 1.8.8+ implementation of cloud
- cloud-minecraft/cloud-paper: Module that extends cloud-bukkit to add special support for Paper 1.8.8+
- cloud-minecraft/cloud-bungee: BungeeCord 1.8.8+ implementation of Cloud
- cloud-minecraft/cloud-velocity: Velocity v1.1.0 implementation of cloud
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' maven repository:
<repository>
<id>intellectualsites-snapshots</id>
<url>https://mvn.intellectualsites.com/content/repositories/snapshots</url>
</repository>
<dependency>
<groupId>com.intellectualsites</groupId>
<artifactId>cloud-core</artifactId>
<version>0.1.0-SNAPSHOT</version>
</dependency>
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.