package com.supaham.commons.bungee; import com.google.common.base.Preconditions; import com.supaham.commons.CMain; import net.md_5.bungee.api.plugin.Plugin; import java.util.Collections; import java.util.HashMap; import java.util.Map; import javax.annotation.Nonnull; /** * Commons main Bungeecord class. * * @since 0.3.6 */ public class CBungeeMain { private static CBungeeMain instance = null; private final Map<String, Plugin> hookedPlugins = new HashMap<>(); /** * Gets the instance of this singleton class. * * @return {@link CBungeeMain} instance. */ public static CBungeeMain get() { if (CBungeeMain.instance == null) { CBungeeMain.instance = new CBungeeMain(); } return CBungeeMain.instance; } public static void hook(@Nonnull Plugin plugin) { Preconditions.checkNotNull(plugin, "plugin cannot be null."); if (CMain.get() == null) { CMain.main(plugin.getLogger()); } CBungeeMain inst = CBungeeMain.get(); if (inst.hookedPlugins.containsValue(plugin)) { return; } inst.hookedPlugins.put(plugin.getDescription().getName(), plugin); plugin.getLogger().fine("Hooked into commons-bukkit."); } public static boolean unhook(@Nonnull Plugin plugin) { Preconditions.checkNotNull(plugin, "plugin cannot be null."); return CBungeeMain.instance != null && instance.hookedPlugins.remove(plugin.getDescription().getName()) != null; } private CBungeeMain() { } public Map<String, Plugin> getHookedPlugins() { return Collections.unmodifiableMap(this.hookedPlugins); } }