Full output of /ess version:
```> version ess
md5-5687f135788c6dbeb0a27329893ad114
went into commands.yml and added:
aliases:
essentials:give:
- []
Running:
Paper 1.13.2 b474
EssentialsX v2.15.0.56
Screenshots
alias: /give for /minecraft:give with essentials plugin and disabled essentials:give

Without the EssentialsX plugin:

This is addressed on the wiki's Common Issues page.
I took a look at the Common Issue's wiki, but it doesn't fix tab completion unfortunately. The referenced #1384 from last year's solution was aliasing to another plugin's command; it's a similar issue, but this is a tad different. It's more so about disabled commands in config.yml rather than aliases.
Specifically it's about how Essentials is taking /give away from vanilla commands and replacing it. When essentials' give is disabled it doesn't return to vanilla behavior (instead it disables /give in-game unless you alias it to something else).
Because aliasing is the only remaining option to try to get vanilla /give back without using /minecraft:give, it's having strange tab completion issues (which may be related to spigot/paper instead of essentials) ((unless there's some strange way that the plugin interacts with alias tab completion with those [<args>]
So the question is more about if the overlapping vanilla commands that are overridden _need_ to be overridden - I'm not seeing too many differences between 1.13 commands vs what EssentialsX is providing;
And since the current solution is aliasing, that's separate from how disabling commands is implemented.
I could skip disabling - give in the config.yml if I aliased /give to /minecraft:give, but I lose tab completion in that process;
Is it possible for those commands that are disabled in config.yml to default to vanilla, or take a step down in priority if there's another plugin with the same command - _instead of how it retains control of the disabled command but doesn't have any output?_
@Zefferis Disabling commands in the config.yml does not stop EssentialsX handling the command - instead, EssentialsX will simply not do anything if it ends up handling it. If you want to override commands, it's best to only use commands.yml and not disabled-commands:.
Spigot should redirect tab completion to whichever plugin has priority in commands.yml, but disabling commands may prevent this working as intended.
Alright, thank you md!
It would be super nifty if essentialsX was able to just remove handling of specific commands; esp. since they overlap with vanilla -
I'll head over to Spigot and report the issue 馃憣
EDIT:
Spigot had this issue reported 2 years ago with https://hub.spigotmc.org/jira/browse/SPIGOT-2819
Still, I'm not seeing the real need for the vanilla override commands that Essentials is providing now that commands have been updated and have tab completions in 1.13.
Thoughts on removing essentials:give & essentials:enchant and the such?
These commands have been part of the upstream Essentials project and EssentialsX for years, and their behaviour is familiar to likely thousands of players and admins. There is no intention nor rationale for removing them.
In addition, CraftBukkit has had a command override system for years which has allowed you to specify how individual commands are handled, so adding a command disable feature to every plugin that exists would be unnecessarily complex while not achieving the intended effects.
Totally understandable;
A response I got from the paper github from a user was:
To me it looks like essentials should properly implement command disabling. It still registers the command, which is why tabcomplete is going through.
EDIT:
Here is how essentials handles disabled commands:
https://github.com/EssentialsX/Essentials/blob/2.x/Essentials/src/com/earth2me/essentials/Essentials.java#L486
https://github.com/PaperMC/Paper/issues/1733
Is this an actual issue with the way disabling commands is being handled?
As stated before, disabled-commands does not disable them in the sense of unregistering the command - it "disables" them by making said commands not do anything if EssentialsX is responsible for handling them (ie if no other plugin overrides them).
This was fit for the purposes of just making the commands not work, which made sense years ago before vanilla even had half of Essentials' commands. However, people now expect "disabling" a command to mean "unregister it from the server", which is:
In addition, EssentialsX also makes a conscious effort to hand over tab completion to other commands, but we can't do this with vanilla commands as they are not plugin commands.
Ideally, server software would provide a way to let vanilla commands take precedence, because doing this in EssentialsX would require an uncomfortable amount of tying behaviour to the implementation instead of the API.
Did you ever find a proper solution to this problem that addresses tab completion? I have recently switched to 1.13.2, which broke the tab completion in the commands.yml fix. You are the only person I have found that seems to have all the same problems I do. I need to be able to do more advanced things in commands than the essentials version offers, but I still want /warp, /home, and the essentials chat functions, did you ever find a solution?
@pawjwp
I unfortunately did not. Neither Essentials nor Spigot/Paper have worked on this issue. I continue to work around it by using "/minecraft:" in-game to get my vanilla commands without aliases.
I'm glad I'm not the only one on this sinking ship though, it's nice to have company 馃槅
@pawjwp @Zefferis I've been looking into this recently.
So far, I've tried registering the permission to the command at runtime. This is currently the intended way for plugins to hide their commands from the autocomplete list.
The problem with this is that Bukkit will also check permissions before EssentialsX starts running the command, and won't let EssentialsX run the command if the player doesn't have permission. This has several downsides:
player-commands won't work/ess debug) won't include command permission checks unless they're successfulIdeally, Bukkit would just provide a way for us to hide commands from the tab list, but this doesn't seem to have happened yet. I may try and implement something like this on Paper, but this won't work on Spigot unless they provide an equivalent API.
Thank you for looking into it!
I hope it's something that can be integrated into Paper and Spigot/Bukkit later, your work is great, thank you for it 馃憤
This issue still hasn't been fixed. Can it be re-opened?
Feel free to open a new issue, everything here is years old. Fill out the template completely as well.
Most helpful comment
@pawjwp
I unfortunately did not. Neither Essentials nor Spigot/Paper have worked on this issue. I continue to work around it by using "/minecraft:" in-game to get my vanilla commands without aliases.
I'm glad I'm not the only one on this sinking ship though, it's nice to have company 馃槅