component->argument
This commit is contained in:
parent
b3d75496b5
commit
8b0a650b48
52 changed files with 1032 additions and 1024 deletions
172
README.md
172
README.md
|
|
@ -1,84 +1,92 @@
|
|||
<div align="center">
|
||||
<img src="icons/cloud.svg" width="300px"/>
|
||||
</div>
|
||||
|
||||
# cloud command framework
|
||||
|
||||
[](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
|
||||
<repository>
|
||||
<id>intellectualsites-snapshots</id>
|
||||
<url>https://mvn.intellectualsites.com/content/repositories/snapshots</url>
|
||||
</repository>
|
||||
```
|
||||
|
||||
```xml
|
||||
<dependency>
|
||||
<groupId>com.intellectualsites</groupId>
|
||||
<artifactId></artifactId>
|
||||
<version></version>
|
||||
</dependency>
|
||||
```
|
||||
|
||||
### attributions, links & acknowledgements
|
||||
|
||||
This library is licensed under the <a href="https://opensource.org/licenses/MIT">MIT</a> 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 <a href="https://creativecommons.org/licenses/by/4.0/legalcode">CC Attribution 4</a> license.
|
||||
|
||||
The <a href="https://iconscout.com/icons/cloud" target="_blank">Cloud</a> icon was created by by
|
||||
<a href="https://iconscout.com/contributors/oviyan">Thanga Vignesh P</a> on <a href="https://iconscout.com">Iconscout</a>
|
||||
<div align="center">
|
||||
<img src="icons/cloud.svg" width="300px"/>
|
||||
</div>
|
||||
|
||||
# cloud command framework
|
||||
|
||||
[](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)
|
||||
|
||||
## 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
|
||||
|
||||
## 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
|
||||
<repository>
|
||||
<id>intellectualsites-snapshots</id>
|
||||
<url>https://mvn.intellectualsites.com/content/repositories/snapshots</url>
|
||||
</repository>
|
||||
```
|
||||
|
||||
```xml
|
||||
<dependency>
|
||||
<groupId>com.intellectualsites</groupId>
|
||||
<artifactId></artifactId> <version></version></dependency>
|
||||
```
|
||||
|
||||
### attributions, links & acknowledgements
|
||||
|
||||
This library is licensed under the <a href="https://opensource.org/licenses/MIT">MIT</a> 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 <a href="https://creativecommons.org/licenses/by/4.0/legalcode">CC Attribution 4</a> license.
|
||||
|
||||
The <a href="https://iconscout.com/icons/cloud" target="_blank">Cloud</a> icon was created by by
|
||||
<a href="https://iconscout.com/contributors/oviyan">Thanga Vignesh P</a> on <a href="https://iconscout.com">Iconscout</a>
|
||||
and Digital rights were purchased under a premium plan.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue