MessageAction.java

package it.fulminazzo.yagl.action.message;

import it.fulminazzo.fulmicollection.objects.FieldEquable;
import it.fulminazzo.yagl.SerializableFunction;
import it.fulminazzo.yagl.util.MessageUtils;
import it.fulminazzo.yagl.viewer.Viewer;
import org.jetbrains.annotations.NotNull;

/**
 * An implementation of {@link SerializableFunction} that sends the given {@link #message} to the viewer upon {@link #sendMessage(Viewer)}.
 */
public abstract class MessageAction extends FieldEquable implements SerializableFunction {
    protected final String message;

    /**
     * Instantiates a new Message action.
     *
     * @param message the message
     */
    MessageAction(final @NotNull String message) {
        this.message = message;
    }

    /**
     * Send message.
     *
     * @param viewer the viewer
     */
    public void sendMessage(final @NotNull Viewer viewer) {
        viewer.sendMessage(MessageUtils.color(this.message));
    }

    @Override
    public String serialize() {
        return this.message;
    }
}