6.4 KiB
cloud-minecraft
This directory hosts Minecraft specific implementations of cloud. Their features are summarized in the table below:
| Module | Platform | Minecraft Version | Brigadier Support? |
|---|---|---|---|
cloud-bukkit |
Bukkit, Spigot, Paper | 1.8+ | Via commodore for MC 1.13+ |
cloud-paper |
Bukkit, Spigot, Paper | 1.8+ | Via Paper for MC 1.15+, Via commodore for MC 1.13+ |
cloud-bungee |
BungeeCord | 1.8+ | No |
cloud-velocity |
Velocity 1.1.0 | 1.7+ | Yes |
cloud-cloudburst |
CloudBurst 1.0.0 | Bedrock 1.16.20+ | No |
There is also a cloud-minecraft-extras module that contains a few extra minecraft related features
cloud-bukkit
Bukkit mappings for cloud. If commodore is present on the classpath and the server is running at least version 1.13+, Brigadier mappings will be available.
dependency
maven:
<dependency>
<groupId>cloud.commandframework</groupId>
<artifactId>cloud-bukkit</artifactId>
<version>1.3.0-dev</version>
</dependency>
gradle:
dependencies {
implementation 'cloud.commandframework:cloud-bukkit:1.3.0-dev'
}
setup
Simply do:
final BukkitCommandManager<YourSender> bukkitCommandManager = new BukkitCommandManager<>(
yourPlugin, yourExecutionCoordinator, forwardMapper, backwardsMapper);
The forwardMapper is a function that maps your chosen sender type to Bukkit's CommandSender, and the backwardsMapperdoes the opposite. In the case that you don't need a custom sender type, you can simply use CommandSenderas the generic type and pass Function.identity() as the forward and backward mappers.
commodore
To use commodore, include it as a dependency:
maven:
<dependency>
<groupId>me.lucko</groupId>
<artifactId>commodore</artifactId>
<version>1.9</version>
</dependency>
gradle:
dependencies {
implementation 'me.lucko:commodore:1.9'
}
Then initialize the commodore mappings using:
try {
bukkitCommandManager.registerBrigadier();
} catch (final Exception e) {
plugin.getLogger().warning("Failed to initialize Brigadier support: " + e.getMessage());
}
The mappings will then be created and registered automatically whenever a new command is registered.
Note: The mapper must be initialized before any commands are registered.
You can check whether or not the running server supports Brigadier, by using bukkitCommandManager.queryCapability(...).
cloud-paper
An example plugin using the cloud-paper API can be found here.
cloud-paperworks on all Bukkit derivatives and has graceful fallbacks for cases where Paper specific features are missing. It is initialized the same way as the Bukkit manager, except PaperCommandManageris used instead. When using Paper 1.15+ Brigadier mappings are available even without commodore present.
dependency
maven:
<dependency>
<groupId>cloud.commandframework</groupId>
<artifactId>cloud-paper</artifactId>
<version>1.3.0-dev</version>
</dependency>
gradle:
dependencies {
implementation 'cloud.commandframework:cloud-paper:1.3.0-dev'
}
asynchronous completions
cloud-papersupports asynchronous completions when running on Paper. First check if the capability is present, by using paperCommandManager.queryCapability(CloudBukkitCapabilities.ASYNCHRONOUS_COMPLETION) and then initialize the asynchronous completion listener by using paperCommandManager.registerAsynchronousCompletions().
cloud-bungee
BungeeCord mappings for cloud.
dependency
maven:
<dependency>
<groupId>cloud.commandframework</groupId>
<artifactId>cloud-bungee</artifactId>
<version>1.3.0-dev</version>
</dependency>
gradle:
dependencies {
implementation 'cloud.commandframework:cloud-bungee:1.3.0-dev'
}
setup
Simply do:
final BungeeCommandManager<YourSender> bungeeCommandManager = new BungeeCommandManager<>(
yourPlugin, yourExecutionCoordinator, forwardMapper, backwardsMapper);
The forwardMapper is a function that maps your chosen sender type to Bungee's CommandSender, and the backwardsMapperdoes the opposite. In the case that you don't need a custom sender type, you can simply use CommandSenderas the generic type and pass Function.identity() as the forward and backward mappers.
cloud-velocity
cloud mappings for Velocity 1.1.0.
dependency
maven:
<dependency>
<groupId>cloud.commandframework</groupId>
<artifactId>cloud-velocity</artifactId>
<version>1.3.0-dev</version>
</dependency>
gradle:
dependencies {
implementation 'cloud.commandframework:cloud-velocity:1.3.0-dev'
}
Simply do:
final VelocityCommandManager<YourSender> velocityCommandManager = new VelocityCommandManager<>(
proxyServer, yourExecutionCoordinator, forwardMapper, backwardsMapper);
The forwardMapper is a function that maps your chosen sender type to Velocity's CommandSource, and the backwardsMapperdoes the opposite. In the case that you don't need a custom sender type, you can simply use CommandSourceas the generic type and pass Function.identity() as the forward and backward mappers.
cloud-cloudburst
cloud mappings for CloudBurst 1.0.0-SNAPSHOT.
dependency
maven:
<dependency>
<groupId>cloud.commandframework</groupId>
<artifactId>cloud-cloudburst</artifactId>
<version>1.3.0-dev</version>
</dependency>
gradle:
dependencies {
implementation 'cloud.commandframework:cloud-velocity:1.3.0-dev'
}
Simply do:
final CloudburstCommandManager<YourSender> cloudburstCommandManager = new CloudburstCommandManager<>(
yourPlugin, yourExecutionCoordinator, forwardMapper, backwardsMapper);
The forwardMapper is a function that maps your chosen sender type to Cloudbursts's CommandSender, and the backwardsMapperdoes the opposite. In the case that you don't need a custom sender type, you can simply use CommandSourceas the generic type and pass Function.identity() as the forward and backward mappers.