package buildcraft.api.gates; import java.util.LinkedList; import net.minecraft.block.Block; import net.minecraft.tileentity.TileEntity; import buildcraft.api.transport.IPipe; public class ActionManager { public static ITrigger[] triggers = new ITrigger[1024]; public static IAction[] actions = new IAction[1024]; private static LinkedList triggerProviders = new LinkedList(); private static LinkedList actionProviders = new LinkedList(); public static void registerTriggerProvider(ITriggerProvider provider) { if (provider != null && !triggerProviders.contains(provider)) { triggerProviders.add(provider); } } public static LinkedList getNeighborTriggers(Block block, TileEntity entity) { LinkedList triggers = new LinkedList(); for (ITriggerProvider provider : triggerProviders) { LinkedList toAdd = provider.getNeighborTriggers(block, entity); if (toAdd != null) { for (ITrigger t : toAdd) { if (!triggers.contains(t)) { triggers.add(t); } } } } return triggers; } public static void registerActionProvider(IActionProvider provider) { if (provider != null && !actionProviders.contains(provider)) { actionProviders.add(provider); } } public static LinkedList getNeighborActions(Block block, TileEntity entity) { LinkedList actions = new LinkedList(); for (IActionProvider provider : actionProviders) { LinkedList toAdd = provider.getNeighborActions(block, entity); if (toAdd != null) { for (IAction t : toAdd) { if (!actions.contains(t)) { actions.add(t); } } } } return actions; } public static LinkedList getPipeTriggers(IPipe pipe) { LinkedList triggers = new LinkedList(); for (ITriggerProvider provider : triggerProviders) { LinkedList toAdd = provider.getPipeTriggers(pipe); if (toAdd != null) { for (ITrigger t : toAdd) { if (!triggers.contains(t)) { triggers.add(t); } } } } return triggers; } }