@@ -0,0 +1,1042 @@
+package com.elmakers.mine.bukkit.action.builtin;%0A%0Aimport com.elmakers.mine.bukkit.action.ActionHandler;%0Aimport com.elmakers.mine.bukkit.action.CompoundAction;%0Aimport com.elmakers.mine.bukkit.api.action.CastContext;%0Aimport com.elmakers.mine.bukkit.api.spell.SpellResult;%0A%0Apublic class AsynchronousAction extends CompoundAction%0A%7B%0A    private boolean queued = false;%0A    %0A    @Override%0A    public void reset(CastContext context) %7B%0A        super.reset(context);%0A        queued = false;%0A    %7D%0A    %0A    @Override%0A%09public SpellResult perform(CastContext context) %7B%0A        if (queued) %7B%0A            return SpellResult.NO_ACTION;%0A        %7D%0A        ActionHandler handler = getHandler(%22actions%22);%0A        if (handler == null) %7B%0A            return SpellResult.NO_ACTION;%0A        %7D%0A%0A        actionContext = new com.elmakers.mine.bukkit.action.CastContext(context);%0A        handler = (ActionHandler)handler.clone();%0A        handler.reset(actionContext);%0A        actionContext.addHandler(handler);%0A        queued = true;%0A%09%09return SpellResult.PENDING;%0A%09%7D%0A%7D%0A

Add Asynchronous action