// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.server.core.command.commands.utility;

import com.hypixel.hytale.protocol.ItemWithAllMetadata;
import com.hypixel.hytale.server.core.util.NotificationUtil;
import com.hypixel.hytale.protocol.packets.interface_.NotificationStyle;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandUtil;
import javax.annotation.Nonnull;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;

public class NotifyCommand extends CommandBase
{
    public NotifyCommand() {
        super("notify", "server.commands.notify.desc");
        this.setAllowsExtraArguments(true);
    }
    
    @Override
    protected void executeSync(@Nonnull final CommandContext context) {
        final String inputString = context.getInputString();
        final String rawArgs = CommandUtil.stripCommandName(inputString).trim();
        if (rawArgs.isEmpty()) {
            context.sendMessage(Message.translation("server.commands.parsing.error.wrongNumberRequiredParameters").param("expected", 1).param("actual", 0));
            return;
        }
        final String[] args = rawArgs.split("\\s+");
        if (args.length == 0) {
            context.sendMessage(Message.translation("server.commands.parsing.error.wrongNumberRequiredParameters").param("expected", 1).param("actual", 0));
            return;
        }
        NotificationStyle style = NotificationStyle.Default;
        int messageStartIndex = 0;
        if (args.length >= 2) {
            final String firstArg = args[0];
            if (!firstArg.startsWith("{")) {
                try {
                    style = NotificationStyle.valueOf(firstArg.toUpperCase());
                    messageStartIndex = 1;
                }
                catch (final IllegalArgumentException ex) {}
            }
        }
        final StringBuilder messageBuilder = new StringBuilder();
        for (int i = messageStartIndex; i < args.length; ++i) {
            if (i > messageStartIndex) {
                messageBuilder.append(' ');
            }
            messageBuilder.append(args[i]);
        }
        final String messageString = messageBuilder.toString();
        Message message = null;
        Label_0234: {
            if (messageString.startsWith("{")) {
                try {
                    message = Message.parse(messageString);
                    break Label_0234;
                }
                catch (final IllegalArgumentException e) {
                    context.sendMessage(Message.raw("Invalid formatted message: " + e.getMessage()));
                    return;
                }
            }
            message = Message.raw(messageString);
        }
        final Message senderName = Message.raw(context.sender().getDisplayName());
        NotificationUtil.sendNotificationToUniverse(message, senderName, "announcement", null, style);
    }
}
