Cuberite Forum
Command Conflics - Printable Version

+- Cuberite Forum (https://forum.cuberite.org)
+-- Forum: Plugins (https://forum.cuberite.org/forum-1.html)
+--- Forum: Plugin Discussion (https://forum.cuberite.org/forum-8.html)
+--- Thread: Command Conflics (/thread-2247.html)



Command Conflics - chrobione - 12-11-2015

*updated with spoilers
With the trials of building the plugin showcase server, I have already run into conflicting commands.

So Essentials Beta and WorldEdit both have an Extinguish:
Conflict information:

Code:
Plugins]$ fgrep -r /ext
Worldedit
Code:
WorldEdit/README.md:|//extinguish | worldedit.extinguish |  Removes all the fires around you in the given radius.|
WorldEdit/README.md:| worldedit.extinguish |  | `//extinguish` |  |
WorldEdit/Info.lua:             ["//extinguish"] =
WorldEdit/Info.lua:                     Alias = { "//ex", "//ext", "/ex", "/ext", "/extinguish", },
WorldEdit/Commands/Terraforming.lua:    -- //extinguish <radius>
WorldEdit/Commands/Terraforming.lua:    -- /extinguish <radius>
WorldEdit/Commands/Terraforming.lua:    -- //ext <radius>
WorldEdit/Commands/Terraforming.lua:    -- /ext <radius>
Essentials
Code:
Essentials/README.md:|/ext | /extinguish | es.ext | | Extinguish a player.|
Essentials/Info.lua:                ["/ext"] =
Essentials/Info.lua:                        Alias = "/extinguish"

I know I can just go mod the files to get around this, but this not solid solution to a larger problem.

I am not sure if there is a way with the beta plugin site that it could do a check with other known plugins and show this type of a conflict?

And then the issue becomes who's plugin can claim the command?

Or maybe i am just over thinking this... Thoughts?

So for those who are interested what happened?
It seems that Cuberite loads the plugins in alphabetical order, and so Essentials loads first and when WorldEdit tried to load you get this error:
The error output:

Code:
[21:11:52] Command "/ext" is already bound to plugin "Essentials".
[21:11:52] Stack trace:
[21:11:52]   [C](-1): BindCommand
[21:11:52]   Plugins/InfoReg.lua(139): RegisterSubcommands
[21:11:52]   Plugins/InfoReg.lua(162): RegisterPluginInfoCommands
[21:11:52]   Plugins/WorldEdit/main.lua(65): (no name)
[21:11:52] Stack trace end
[21:11:52] Command "/extinguish" is already bound to plugin "Essentials".
[21:11:52] Stack trace:
[21:11:52]   [C](-1): BindCommand
[21:11:52]   Plugins/InfoReg.lua(139): RegisterSubcommands
[21:11:52]   Plugins/InfoReg.lua(162): RegisterPluginInfoCommands
[21:11:52]   Plugins/WorldEdit/main.lua(65): (no name)
[21:11:52] Stack trace end




RE: Command Conflics - Zee1234 - 12-11-2015

I personally think that a bukkit-like system should be implemented, with commands and aliases being treated differently and the actual command being /plugin_name:command (although this makes me wonder if it's /worldedit:/set in spigot). At the very least, aliases should be allowed to overlap and have one win out, and leave it to plugin authors to define their actual command as something unique while aliases take the generic bits.