package gtPlusPlus.api.interfaces;

import gtPlusPlus.api.objects.Logger;

public interface IPlugin {

    /**
     * @return A {@link String} object which returns the {@link IPlugin}'s name.
     */
    public String getPluginName();

    /**
     * @return A {@link String} object which returns the {@link IPlugin}'s short name. This String should only contain 4
     *         Characters.
     */
    public String getPluginAbbreviation();

    /**
     * @param message - A {@link String} object which holds a message to be logged to console.
     */
    default void log(String message) {
        Logger.INFO("[" + getPluginAbbreviation() + "] " + message);
    }

    /**
     * @param message - A {@link String} object which holds a warning/error message to be logged to console.
     */
    default void logDebug(String message) {
        Logger.WARNING("[" + getPluginAbbreviation() + "] " + message);
    }

    public boolean preInit();

    public boolean init();

    public boolean postInit();

    public boolean serverStart();

    public boolean serverStop();
}