package org.shininet.bukkit.itemrenamer.component; import javax.annotation.Nonnull; import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.plugin.Plugin; import com.google.common.eventbus.EventBus; /** * Represents a Bukkit listener as a registerable component. * @author Kristian */ public abstract class AbstractBukkitComponent extends AbstractComponent implements Listener { @Override protected void onRegistered(@Nonnull Plugin plugin, EventBus bus) { if (requireBukkit()) plugin.getServer().getPluginManager().registerEvents(this, plugin); if (requireEventBus()) bus.register(this); } @Override protected void onUnregistered(@Nonnull Plugin plugin) { if (requireBukkit()) HandlerList.unregisterAll(this); if (requireEventBus()) bus.unregister(this); } /** * Determine if we require Bukkit events. * @return TRUE if we do, FALSE otherwise. */ protected abstract boolean requireBukkit(); /** * Determine if we require event bus events. * @return TRUE if we do, FALSE otherwise. */ protected abstract boolean requireEventBus(); }