MessageToggleCommand.java
package dev.aura.bungeechat.command;
import dev.aura.bungeechat.account.BungeecordAccountManager;
import dev.aura.bungeechat.api.account.AccountManager;
import dev.aura.bungeechat.api.account.BungeeChatAccount;
import dev.aura.bungeechat.api.enums.AccountType;
import dev.aura.bungeechat.message.Messages;
import dev.aura.bungeechat.message.MessagesService;
import dev.aura.bungeechat.module.MessengerModule;
import dev.aura.bungeechat.permission.Permission;
import dev.aura.bungeechat.permission.PermissionManager;
import java.util.Collection;
import java.util.Optional;
import java.util.stream.Collectors;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.connection.ProxiedPlayer;
public class MessageToggleCommand extends BaseCommand {
public MessageToggleCommand(MessengerModule messengerModule) {
super(
"msgtoggle",
Permission.COMMAND_TOGGLE_MESSAGE,
messengerModule.getModuleSection().getStringList("aliases.msgtoggle"));
}
@Override
public void execute(CommandSender sender, String[] args) {
if (!PermissionManager.hasPermission(sender, Permission.COMMAND_TOGGLE_MESSAGE)) return;
if (args.length == 0) {
if (!(sender instanceof ProxiedPlayer)) {
MessagesService.sendMessage(sender, Messages.NOT_A_PLAYER.get());
return;
}
BungeeChatAccount player = BungeecordAccountManager.getAccount(sender).get();
player.toggleMessenger();
if (player.hasMessengerEnabled()) {
MessagesService.sendMessage(sender, Messages.ENABLE_MESSENGER.get());
} else {
MessagesService.sendMessage(sender, Messages.DISABLE_MESSENGER.get());
}
} else if (args.length == 1) {
if (!PermissionManager.hasPermission(sender, Permission.COMMAND_TOGGLE_MESSAGE_OTHERS))
return;
Optional<BungeeChatAccount> targetAccount = AccountManager.getAccount(args[0]);
if (targetAccount.map(target -> target.getAccountType() != AccountType.PLAYER).orElse(true)) {
MessagesService.sendMessage(sender, Messages.PLAYER_NOT_FOUND.get());
return;
}
targetAccount.get().toggleMessenger();
if (targetAccount.get().hasMessengerEnabled()) {
MessagesService.sendMessage(
sender, Messages.ENABLE_MESSENGER_OTHERS.get(targetAccount.get()));
} else {
MessagesService.sendMessage(
sender, Messages.DISABLE_MESSENGER_OTHERS.get(targetAccount.get()));
}
} else {
MessagesService.sendMessage(
sender, Messages.INCORRECT_USAGE.get(sender, "/msgtoggle [player]"));
}
}
@Override
public Collection<String> tabComplete(CommandSender sender, String[] args) {
if (args.length == 1) {
final BungeeChatAccount senderAccount = BungeecordAccountManager.getAccount(sender).get();
return BungeecordAccountManager.getAccountsForPartialName(args[0], sender).stream()
.filter(account -> account.getAccountType() == AccountType.PLAYER)
.filter(account -> !senderAccount.equals(account))
.map(BungeeChatAccount::getName)
.collect(Collectors.toList());
}
return super.tabComplete(sender, args);
}
}