BungeeMain / src / main / java / com / lifeknight / relaymcbungeemain / commands / chat / MessageCommand.java
MessageCommand.java
Raw
package com.lifeknight.relaymcbungeemain.commands.chat;

import com.lifeknight.relaymcbungeemain.commands.CommandUtilities;
import com.lifeknight.relaymcbungeemain.player.SmartPlayer;
import com.lifeknight.relayutils.basic.Miscellaneous;
import com.lifeknight.relayutils.basic.Text;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Command;

public class MessageCommand extends Command {
    public MessageCommand() {
        super("message", null, "msg");
    }

    @Override
    public void execute(CommandSender sender, String[] arguments) {
        if (sender instanceof ProxiedPlayer) {
            SmartPlayer messageSender = SmartPlayer.getSmartPlayer((ProxiedPlayer) sender);
            if (arguments.length == 0) {
                messageSender.sendErrorMessage("Please enter a player to send the message to and a message to send.");
            } else if (arguments.length == 1) {
                messageSender.sendErrorMessage("Please enter a message to send.");
            } else {
                SmartPlayer messageRecipient = SmartPlayer.getSmartPlayerOrNick(arguments[0]);
                if (messageRecipient == null) {
                    if (SmartPlayer.isNickname(arguments[0])) {
                        messageSender.sendErrorMessage("You cannot message that player!");
                    } else {
                        messageSender.noPlayerFound(arguments[0]);
                    }
                    return;
                }

                if (!messageRecipient.isOnline()) {
                    messageSender.sendErrorMessage("That player is offline!");
                    return;
                }

                String message = Text.concatenateArguments(Miscellaneous.from(arguments, 1));
                if (!messageSender.canSendMessage(message)) {
                    return;
                }
                messageSender.messagePlayer(messageRecipient, message);
            }
        } else {
            if (arguments.length == 0) {
                CommandUtilities.sendErrorMessage(sender, "Please enter a player to send the message to and a message to send.");
            } else if (arguments.length == 1) {
                CommandUtilities.sendErrorMessage(sender, "Please enter a message to send.");
            } else {
                String name = arguments[0];
                SmartPlayer messageRecipient = SmartPlayer.getSmartPlayerOrNick(name);
                if (messageRecipient == null) {
                    CommandUtilities.noPlayerFound(sender, name);
                    return;
                }
                if (!messageRecipient.isOnline()) {
                    CommandUtilities.sendErrorMessage(sender, "That player is offline!");
                    return;
                }
                String message = Text.concatenateArguments(Miscellaneous.from(arguments, 1));
                CommandUtilities.sendMessage(sender, "%sTo %s%s > %s", ChatColor.BLUE, messageRecipient.getProxiedPlayer().getName(), ChatColor.WHITE, message);
                messageRecipient.sendMessage("%sFrom %s%s > %s", ChatColor.RED, ChatColor.GOLD + "Server", ChatColor.RED, ChatColor.WHITE + message);
            }
        }
    }

    private static void sendMessage(CommandSender sender, String message, Object... data) {
        sender.sendMessage(new TextComponent(String.format(message, data)));
    }

}