    001    /*
    002     * The FML Forge Mod Loader suite.
    003     * Copyright (C) 2012 cpw
    004     *
    005     * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free
    006     * Software Foundation; either version 2.1 of the License, or any later version.
    007     *
    008     * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
    009     * A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
    010     *
    011     * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51
    012     * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
    013     */
    014
    015    package cpw.mods.fml.common;
    016
    017    import java.util.EnumSet;
    018
    019
    020    /**
    021     *
    022     * Tick handler for mods to implement and register through the TickRegistry
    023     *
    024     * The data available to each tick is documented in the TickType
    025     *
    026     * @author cpw
    027     *
    028     */
    029    public interface ITickHandler
    030    {
    031
    032        /**
    033         * Called at the "start" phase of a tick
    034         *
    035         * Multiple ticks may fire simultaneously- you will only be called once with all the firing ticks
    036         *
    037         * @param type
    038         * @param tickData
    039         */
    040        public void tickStart(EnumSet<TickType> type, Object... tickData);
    041
    042        /**
    043         * Called at the "end" phase of a tick
    044         *
    045         * Multiple ticks may fire simultaneously- you will only be called once with all the firing ticks
    046         *
    047         * @param type
    048         * @param tickData
    049         */
    050        public void tickEnd(EnumSet<TickType> type, Object... tickData);
    051
    052        /**
    053         * Returns the list of ticks this tick handler is interested in receiving at the minute
    054         */
    055        public EnumSet<TickType> ticks();
    056
    057        /**
    058         * A profiling label for this tick handler
    059         */
    060        public String getLabel();
    061    }