@Override
public void visit(Addon instance)
{
if (enabled.contains(instance.getId()) && instance instanceof AddonImpl)
{
AddonImpl addon = (AddonImpl) instance;
if (addon.canBeStarted())
{
if (executor.isShutdown())
{
throw new IllegalStateException("Cannot start additional addons once Shutdown has been initiated.");
}
Future<Void> result = null;
if (addon.getRunnable() == null)
{
starting.incrementAndGet();
AddonRunnable runnable = new AddonRunnable(forge, addon);
result = executor.submit(runnable, null);
addon.setFuture(result);
addon.setRunnable(runnable);
addon.setDirty(false);
}
}
}
}