package com.asteria.game.plugin; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * This annotation serves as a container for the context that a plugin listener * will be executed in. The bootstrap grabs the {@link PluginContext} from this * container and maps a collection of plugin listeners to it. Every plugin * listener must have this annotation as its header or a * {@link PluginSignatureException} will be thrown. * * @author lare96 <http://github.com/lare96> */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface PluginSignature { /** * The {@link PluginContext} that represents the context plugin listeners * will be stored and executed in. * * @return the plugin signature. */ public Class<? extends PluginContext>[] value(); }