package tc.oc.commons.bukkit.hologram;

import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import tc.oc.commons.bukkit.hologram.content.HologramContent;

/**
 * Represents a text-based in-game hologram, which may be animated.
 */
public interface Hologram {
    /**
     * Sets the current hologram content.
     *
     * @param plugin The plugin responsible for the hologram.
     * @param content The content to be displayed.
     */
    void setContent(Plugin plugin, HologramContent content);

    /**
     * Displays the hologram to the specified player.
     *
     * @param player The player.
     * @throws java.lang.IllegalStateException If no content has been set.
     */
    void show(Player player) throws IllegalStateException;

    /**
     * Hides the hologram from the specified player.
     *
     * @param player The player.
     */
    void hide(Player player);

    HologramContent getContent();
}
