Add WaterdogPE integration#162
Conversation
|
WaterdogPE is a Minecraft Bedrock based proxy, similar to Bungee/Velocity. It is actively being worked onto to support large scale Bedrock networks. At InPvP, we operate a handful of the largest Bedrock partnered servers and are currently in the process of moving over to WaterdogPE for our proxies, thus the reasoning for this PR. We have built frameworks based around Cloud for all of our internal plugins and features to use and it would be an excellent addition into both our infrastructure but also the growing Bedrock Minecraft scene. This PR adds a |
jpenilla
left a comment
There was a problem hiding this comment.
Thanks for adding WaterdogPE support. The module structure and conventions mostly line up with the existing platform modules, and local validation passed for me (:cloud-waterdog:check, root check, and :cloud-waterdog:javadoc). I think this is close, but I'd like to request two small consistency fixes before merge:
- Please propagate the root command permission into the Waterdog command settings.
In WaterdogCommand, the constructor currently sets aliases and description, but not the cloud command permission. Comparable modules do expose the root permission to the platform command object (BungeeCommand passes cloudCommand.commandPermission().toString(), and CloudburstCommand adds it to CommandData). Cloud will still enforce permissions internally, but Waterdog's command map currently sees cloud commands as having no root permission. Please add the permission to the CommandSettings builder, e.g.:
.setPermission(cloudCommand.commandPermission().toString())- Please only record a command as registered after Waterdog accepts it.
In WaterdogPluginRegistrationHandler#registerCommand, the command is added to registeredCommands before calling CommandMap#registerCommand. If Waterdog rejects the command, cloud's registration handler will still treat that root component as registered. Since Waterdog returns a meaningful boolean here, please only put it in the map after a successful registration, e.g.:
final boolean registered = this.waterdogCommandManager.owningPlugin().getProxy().getCommandMap().registerCommand(waterdogCommand);
if (registered) {
this.registeredCommands.put(component, waterdogCommand);
}
return registered;
No description provided.