StaffChatCommand.java

package dev.aura.bungeechat.command;

import dev.aura.bungeechat.account.BungeecordAccountManager;
import dev.aura.bungeechat.api.account.BungeeChatAccount;
import dev.aura.bungeechat.api.enums.ChannelType;
import dev.aura.bungeechat.message.Messages;
import dev.aura.bungeechat.message.MessagesService;
import dev.aura.bungeechat.module.StaffChatModule;
import dev.aura.bungeechat.permission.Permission;
import dev.aura.bungeechat.permission.PermissionManager;
import net.md_5.bungee.api.CommandSender;

public class StaffChatCommand extends BaseCommand {
  public StaffChatCommand(StaffChatModule staffChatModule) {
    super(
        "staffchat",
        Permission.COMMAND_STAFFCHAT,
        staffChatModule.getModuleSection().getStringList("aliases"));
  }

  @Override
  public void execute(CommandSender sender, String[] args) {
    if (!PermissionManager.hasPermission(sender, Permission.COMMAND_STAFFCHAT)) return;

    if (args.length == 0) {
      BungeeChatAccount player = BungeecordAccountManager.getAccount(sender).get();

      if (player.getChannelType() == ChannelType.STAFF) {
        ChannelType defaultChannelType = player.getDefaultChannelType();
        player.setChannelType(defaultChannelType);

        if (defaultChannelType == ChannelType.LOCAL) {
          MessagesService.sendMessage(sender, Messages.ENABLE_LOCAL.get());
        } else {
          MessagesService.sendMessage(sender, Messages.ENABLE_GLOBAL.get());
        }
      } else {
        player.setChannelType(ChannelType.STAFF);
        MessagesService.sendMessage(sender, Messages.ENABLE_STAFFCHAT.get());
      }
    } else {
      String finalMessage = String.join(" ", args);

      MessagesService.sendStaffMessage(sender, finalMessage);
    }
  }
}