    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
    015package cpw.mods.fml.common;
    016
    017import 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 */
    029public 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}