package com.nisovin.magicspells.spells.passive; import java.util.HashSet; import java.util.Set; import org.bukkit.event.HandlerList; import com.nisovin.magicspells.MagicSpells; import com.nisovin.magicspells.spells.PassiveSpell; public class PassiveManager { Set<PassiveListener> listeners = new HashSet<PassiveListener>(); Set<PassiveTrigger> triggers = new HashSet<PassiveTrigger>(); boolean initialized = false; public void registerSpell(PassiveSpell spell, PassiveTrigger trigger, String var) { triggers.add(trigger); PassiveListener listener = trigger.getListener(); if (listener != null) { listeners.add(listener); listener.registerSpell(spell, trigger, var); } else { MagicSpells.error("Failed to register passive spell (no listener): " + spell.getInternalName() + ", " + trigger.getName()); } } public void initialize() { if (!initialized) { initialized = true; for (PassiveListener listener : listeners) { listener.initialize(); } } } public void turnOff() { for (PassiveListener listener : listeners) { HandlerList.unregisterAll(listener); listener.turnOff(); } for (PassiveTrigger trigger : triggers) { trigger.listener = null; } listeners.clear(); } }