    001/*
    002 * Forge Mod Loader
    003 * Copyright (c) 2012-2013 cpw.
    004 * All rights reserved. This program and the accompanying materials
    005 * are made available under the terms of the GNU Lesser Public License v2.1
    006 * which accompanies this distribution, and is available at
    007 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
    008 *
    009 * Contributors:
    010 *     cpw - implementation
    011 */
    012
    013package cpw.mods.fml.common;
    014
    015import java.lang.annotation.ElementType;
    016import java.lang.annotation.Retention;
    017import java.lang.annotation.RetentionPolicy;
    018import java.lang.annotation.Target;
    019
    020/**
    021 * Declare a variable to be populated by a Bukkit Plugin proxy instance if the bukkit coremod
    022 * is available. It can only be applied to field typed as {@link BukkitProxy}
    023 * Generally it should be used in conjunction with {@link Mod#bukkitPlugin()} specifying the
    024 * plugin to load.
    025 *
    026 * @author cpw
    027 *
    028 */
    029@Retention(RetentionPolicy.RUNTIME)
    030@Target(ElementType.FIELD)
    031public @interface BukkitPluginRef
    032{
    033    /**
    034     * A reference (possibly version specific) to a Bukkit Plugin by name, using the name@versionbound
    035     * specification. If this is a bukkit enabled environment the field annotated by this
    036     * will be populated with a {@link BukkitProxy} instance if possible. This proxy will be gotten by
    037     * reflectively calling the "getModProxy" method on the bukkit plugin instance.
    038     * @return The name of the plugin which we will inject into this field
    039     */
    040    String value();
    041}