001    package cpw.mods.fml.common;
002    
003    import java.lang.annotation.ElementType;
004    import java.lang.annotation.Retention;
005    import java.lang.annotation.RetentionPolicy;
006    import java.lang.annotation.Target;
007    
008    /**
009     * Declare a variable to be populated by a Bukkit Plugin proxy instance if the bukkit coremod
010     * is available. It can only be applied to field typed as {@link BukkitProxy}
011     * Generally it should be used in conjunction with {@link Mod#bukkitPlugin()} specifying the
012     * plugin to load.
013     *
014     * @author cpw
015     *
016     */
017    @Retention(RetentionPolicy.RUNTIME)
018    @Target(ElementType.FIELD)
019    public @interface BukkitPluginRef
020    {
021        /**
022         * A reference (possibly version specific) to a Bukkit Plugin by name, using the name@versionbound
023         * specification. If this is a bukkit enabled environment the field annotated by this
024         * will be populated with a {@link BukkitProxy} instance if possible. This proxy will be gotten by
025         * reflectively calling the "getModProxy" method on the bukkit plugin instance.
026         * @return The name of the plugin which we will inject into this field
027         */
028        String value();
029    }