* Block the /execute ... run datapack command
The /datapack list command is useless, and the other 2 subcommands (/datapack enable and /datapack disable) can be used to cause huge lag on the server.
* Update ServerCommand.java (partial revert)
* fix: don't re-apply ratelimit when user is already ratelimited
* fix: lower command ratelimit event priority
Makes command spam not show up in CommandSpy
Previously it was possible to bypass the "ConsoleCommandSender" check by running the command in a command block, and causing the server to throw an exception in console. Exceptions are bad.
Fixes a bug where commands in /execute would not have modifications applied to them.
Example: `/execute run particle flame ~ ~ ~ 1 1 1 0 100 force @s` would not get modified before this PR, but now it gets modified to `/execute run particle flame ~ ~ ~ 1 1 1 0 10 force @s`
Instead of using `Bukkit.getPlayer(name)`, now each player is manually iterated over to check if a username is taken. This fixes multiple problems, such as a player not being able to set their name to `a` because a player named `ab` is online, and a player not being able to set their username back to the one they joined with.
* Use per-player ratelimit for /username
* Improve the skin system
- Migrates skin getting over to Mojang. I do indeed understand that the Mojang API is more ratelimited and generally harder to use, it should be noted that it has an almost 0% chance of error. Compare that to Ashcon which, on some days, has a 50% chance of actually recognizing your account exists
- Uses CompletableFutures and a ExecutorService for making requests
- Renames SkinDownloader class to SkinManager class
- Makes SkinManager class static
- Limits the /skin command per-player