Fix help command (#2604)

* Always pass session to execute() if the sender is a geyser player

* cleanup
This commit is contained in:
Konicai 2021-10-31 01:22:41 -04:00 committed by GitHub
parent eb211884de
commit 1929a5be83
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 32 additions and 37 deletions

View file

@ -35,6 +35,7 @@ import org.geysermc.connector.command.GeyserCommand;
import org.geysermc.connector.network.session.GeyserSession;
import org.geysermc.connector.utils.LanguageUtils;
import javax.annotation.Nullable;
import java.util.Arrays;
import java.util.Collections;
@ -52,30 +53,28 @@ public class GeyserBungeeCommandExecutor extends Command implements TabExecutor
@Override
public void execute(CommandSender sender, String[] args) {
BungeeCommandSender commandSender = new BungeeCommandSender(sender);
GeyserSession session = this.commandExecutor.getGeyserSession(commandSender);
if (args.length > 0) {
GeyserCommand command = this.commandExecutor.getCommand(args[0]);
if (command != null) {
BungeeCommandSender commandSender = new BungeeCommandSender(sender);
if (!sender.hasPermission(command.getPermission())) {
String message = LanguageUtils.getPlayerLocaleString("geyser.bootstrap.command.permission_fail", commandSender.getLocale());
commandSender.sendMessage(ChatColor.RED + message);
return;
}
GeyserSession session = null;
if (command.isBedrockOnly()) {
session = this.commandExecutor.getGeyserSession(commandSender);
if (session == null) {
String message = LanguageUtils.getPlayerLocaleString("geyser.bootstrap.command.bedrock_only", commandSender.getLocale());
if (command.isBedrockOnly() && session == null) {
String message = LanguageUtils.getPlayerLocaleString("geyser.bootstrap.command.bedrock_only", commandSender.getLocale());
commandSender.sendMessage(ChatColor.RED + message);
return;
}
commandSender.sendMessage(ChatColor.RED + message);
return;
}
command.execute(session, commandSender, args.length > 1 ? Arrays.copyOfRange(args, 1, args.length) : new String[0]);
}
} else {
this.commandExecutor.getCommand("help").execute(null, new BungeeCommandSender(sender), new String[0]);
this.commandExecutor.getCommand("help").execute(session, commandSender, new String[0]);
}
}