Package net.aufdemrand.denizen.scripts.queues

Examples of net.aufdemrand.denizen.scripts.queues.ScriptQueue


        // Get the 'id' if specified
        String id = (scriptEntry.hasObject("id") ?
                (scriptEntry.getElement("id")).asString() : ScriptQueue.getNextId(script.getContainer().getName()));

        // Build the queue
        ScriptQueue queue;
        if (scriptEntry.hasObject("instant")) {
            queue = InstantQueue.getQueue(id).addEntries(entries);
        }
        else {
            queue = TimedQueue.getQueue(id).addEntries(entries);

            // Check speed of the script if a TimedQueue -- if identified, use the speed from the script.
            if (script != null && script.getContainer().contains("SPEED"))
                ((TimedQueue) queue).setSpeed(Duration.valueOf(script.getContainer().getString("SPEED", "0")).getTicks());

        }

        // Set any delay
        if (scriptEntry.hasObject("delay"))
            queue.delayUntil(System.currentTimeMillis() + ((Duration) scriptEntry.getObject("delay")).getMillis());

        // Set any definitions
        if (scriptEntry.hasObject("definitions")) {
            int x = 1;
            dList definitions = (dList) scriptEntry.getObject("definitions");
            String[] definition_names = null;
            try { definition_names = script.getContainer().getString("definitions").split("\\|"); }
            catch (Exception e) { }
            for (String definition : definitions) {
                String name = definition_names != null && definition_names.length >= x ?
                        definition_names[x - 1].trim() : String.valueOf(x);
                queue.addDefinition(name, definition);
                dB.echoDebug(scriptEntry, "Adding definition %" + name + "% as " + definition);
                x++;
            }
        }


        // Setup a callback if the queue is being waited on
        if (scriptEntry.shouldWaitFor()) {
            // Record the ScriptEntry
            final ScriptEntry se = scriptEntry;
            queue.callBack(new Runnable() {
                @Override
                public void run() {
                    se.setFinished(true);
                }
            });
        }

        // Save the queue for script referencing
        scriptEntry.addObject("created_queue", queue);

        // OK, GO!
        queue.start();
    }
View Full Code Here


        dB.log("Notice: This command has been deprecated. Use instead 'run' or 'inject'! While this command" +
                " will continue to work for now, RUNTASK's new counterparts are more efficient and powerful!");

        Boolean instant = (Boolean) scriptEntry.getObject("instant");

        ScriptQueue queue;
        String id = (String) scriptEntry.getObject("queue");

        if (ScriptQueue._queueExists(id))
            queue = ScriptQueue._getExistingQueue(id);
        else if (instant)
View Full Code Here

    @Override
    public void parseArgs(ScriptEntry scriptEntry) throws InvalidArgumentsException {

        // Initialize required fields
        ScriptQueue queue = scriptEntry.getResidingQueue();
        Duration delay = new Duration(3);

        // Iterate through arguments
        for (String arg : scriptEntry.getArguments()) {
View Full Code Here


    @Override
    public void execute(ScriptEntry scriptEntry) throws CommandExecutionException {

        ScriptQueue queue = (ScriptQueue) scriptEntry.getObject("queue");
        Duration delay = (Duration) scriptEntry.getObject("delay");

        dB.report(scriptEntry, getName(),
                aH.debugObj("queue", queue.id) + delay.debug());

        // Tell the queue to delay
        if (queue instanceof Delayable)
               ((Delayable) queue).delayFor(delay);
        else {
            scriptEntry.setInstant(false);
            dB.echoDebug(scriptEntry, "Forcing queue " + queue.id + " into a timed queue...");
            queue.forceToTimed(delay);
        }
    }
View Full Code Here

                    }
                    postComplete(loc, was_static);
                    if (locations.size() == 0) {
                        if (script != null) {
                            List<ScriptEntry> entries = script.getContainer().getBaseEntries(scriptEntry.entryData.clone());
                            ScriptQueue queue = InstantQueue.getQueue(ScriptQueue.getNextId(script.getContainer().getName()))
                                    .addEntries(entries);
                            queue.start();
                        }
                        scriptEntry.setFinished(true);
                        cancel();
                    }
                }
View Full Code Here

    }

    @Override
    public void execute(ScriptEntry scriptEntry) throws CommandExecutionException {

        ScriptQueue queue = (ScriptQueue) scriptEntry.getObject("queue");
        Action action = (Action) scriptEntry.getObject("action");
        Duration delay = (Duration) scriptEntry.getObject("delay");

        // Debugger
        dB.report(scriptEntry, getName(), queue.debug()
                + aH.debugObj("Action", action.toString())
                + (action == Action.DELAY ? delay.debug() : ""));

        switch (action) {

            case CLEAR:
                queue.clear();
                return;

            case STOP:
                queue.clear();
                queue.stop();
                return;

            case PAUSE:
                if (queue instanceof Delayable) {
                    ((Delayable) queue).setPaused(true);
                }
                else {
                    queue.forceToTimed(new Duration(1L)).setPaused(true);
                }
                return;

            case RESUME:
                if (queue instanceof Delayable)
                    ((Delayable) queue).setPaused(false);
                return;

            case DELAY:
                if (queue instanceof Delayable)
                    ((Delayable) queue).delayFor(delay);
                else
                    queue.forceToTimed(delay);
                return;

        }

    }
View Full Code Here

    @SuppressWarnings("unchecked")
    @Override
    public void execute(ScriptEntry scriptEntry) throws CommandExecutionException {

        int possibilities = 0;
        ScriptQueue queue = scriptEntry.getResidingQueue();
        ArrayList<ScriptEntry> bracedCommands = null;

        if (!scriptEntry.hasObject("braces")) {
            possibilities = scriptEntry.getElement("possibilities").asInt();
        }
        else {
            bracedCommands = ((LinkedHashMap<String, ArrayList<ScriptEntry>>) scriptEntry.getObject("braces")).get("RANDOM");
            possibilities = bracedCommands.size();
        }

        int selected = CoreUtilities.getRandom().nextInt(possibilities);
        // Try to not duplicate
        if (selected == previous || selected == previous2 || selected == previous3)
            selected = CoreUtilities.getRandom().nextInt(possibilities);
        if (selected == previous || selected == previous2 || selected == previous3)
            selected = CoreUtilities.getRandom().nextInt(possibilities);
        previous3 = previous2;
        previous2 = previous;
        previous = selected;

        dB.report(scriptEntry, getName(), aH.debugObj("possibilities", possibilities) + aH.debugObj("choice", selected + 1));

        if (bracedCommands == null) {

            ScriptEntry keeping = null;

            for (int x = 0; x < possibilities; x++) {

                if (x != selected)
                    queue.removeEntry(0);

                else {
                    dB.echoDebug(scriptEntry, "...selected '" + queue.getEntry(0).getCommandName() + ": "
                        + queue.getEntry(0).getArguments() + "'.");
                    keeping = queue.getEntry(0);
                    queue.removeEntry(0);
                }

            }

            queue.injectEntry(keeping, 0);

        }
        else {
            queue.injectEntry(bracedCommands.get(selected).addObject("reqID", scriptEntry.getObject("reqID")), 0);
        }
    }
View Full Code Here

                        // Add the reqId to each of the entries for the determine command
                        ScriptBuilder.addObjectToEntries(entries, "ReqId", id);

                        // Add entries and context to the queue
                        ScriptQueue queue = InstantQueue.getQueue(ScriptQueue.getNextId(script.getName())).addEntries(entries).setReqId(id);

                        if (context != null) {
                            for (Map.Entry<String, dObject> entry : context.entrySet()) {
                                queue.addContext(entry.getKey(), entry.getValue());
                            }
                        }

                        // Start the queue!
                        queue.start();

                        // Check the determination
                        if (DetermineCommand.hasOutcome(id))
                            determination =  DetermineCommand.getOutcome(id);
                    }
View Full Code Here

        dB.echoDebug(assignment, DebugElement.Header,
                "Building action 'On " + actionName.toUpperCase() + "' for " + npc.toString());

        // Add entries and context to the queue
        ScriptQueue queue = InstantQueue.getQueue(ScriptQueue.getNextId(assignment.getName())).addEntries(script);

        if (context != null) {
            for (Map.Entry<String, dObject> entry : context.entrySet()) {
                queue.addContext(entry.getKey(), entry.getValue());
            }
        }

        // Start the queue!
        queue.start();

        // Check the determination by asking the DetermineCommand
        if (DetermineCommand.hasOutcome(id))
            determination =  DetermineCommand.getOutcome(id);
View Full Code Here

        Talkable talker = context.getTalker();
        if (talker == null) return;

        ScriptEntry entry = context.getScriptEntry();
        ScriptQueue queue = entry.getResidingQueue();

        String defTalker = null;
        if (queue.hasDefinition("talker"))
            defTalker = queue.getDefinition("talker");
        queue.addDefinition("talker", new dEntity(talker.getEntity()).identify());

        String defMessage = null;
        if (queue.hasDefinition("message"))
            defMessage = queue.getDefinition("message");
        queue.addDefinition("message", context.getMessage());

        // Chat to the world using Denizen chat settings
        if (!context.hasRecipients()) {
            String text = TagManager.tag(((BukkitScriptEntryData)entry.entryData).getPlayer(), ((BukkitScriptEntryData)entry.entryData).getNPC(), Settings.chatNoTargetFormat(), false, entry);
            talkToBystanders(talker, text, context);
        }

        // Single recipient
        else if (context.size() <= 1) {
            // Send chat to target
            String text = TagManager.tag(((BukkitScriptEntryData)entry.entryData).getPlayer(), ((BukkitScriptEntryData)entry.entryData).getNPC(), Settings.chatToTargetFormat(), false, entry);
            for (Talkable entity : context) {
                entity.talkTo(context, text, this);
            }
            // Check if bystanders hear targeted chat
            if (context.isBystandersEnabled()) {
                String defTarget = null;
                if (queue.hasDefinition("target"))
                    defTarget = queue.getDefinition("target");
                queue.addDefinition("target", new dEntity(context.iterator().next().getEntity()).identify());
                String bystanderText = TagManager.tag(((BukkitScriptEntryData)entry.entryData).getPlayer(), ((BukkitScriptEntryData)entry.entryData).getNPC(),
                        Settings.chatWithTargetToBystandersFormat(), false, entry);
                talkToBystanders(talker, bystanderText, context);
                if (defTarget != null)
                    queue.addDefinition("target", defTarget);
            }
        }

        // Multiple recipients
        else {
            // Send chat to targets
            String text = TagManager.tag(((BukkitScriptEntryData)entry.entryData).getPlayer(), ((BukkitScriptEntryData)entry.entryData).getNPC(), Settings.chatToTargetFormat(), false, entry);
            for (Talkable entity : context) {
                entity.talkTo(context, text, this);
            }
            if (context.isBystandersEnabled()) {
                String[] format = Settings.chatMultipleTargetsFormat().split("%target%");
                if (format.length <= 1)
                    dB.echoError("Invalid 'Commands.Chat.Options.Multiple targets format' in config.yml! Must have at least 1 %target%");
                StringBuilder parsed = new StringBuilder();
                Iterator<Talkable> iter = context.iterator();
                int i = 0;
                while (iter.hasNext()) {
                    if (i == format.length) {
                        parsed.append(format[i]);
                        break;
                    }
                    parsed.append(format[i]).append(new dEntity(iter.next().getEntity()).getName());
                    i++;
                }
                String targets = TagManager.tag(((BukkitScriptEntryData)entry.entryData).getPlayer(), ((BukkitScriptEntryData)entry.entryData).getNPC(), parsed.toString(), false, entry);

                String defTargets = null;
                if (queue.hasDefinition("targets"))
                    defTargets = queue.getDefinition("targets");
                queue.addDefinition("targets", targets);

                String bystanderText = TagManager.tag(((BukkitScriptEntryData)entry.entryData).getPlayer(), ((BukkitScriptEntryData)entry.entryData).getNPC(),
                        Settings.chatWithTargetsToBystandersFormat(), false, entry);
                talkToBystanders(talker, bystanderText, context);

                if (defTargets != null)
                    queue.addDefinition("targets", defTargets);
            }
        }

        if (defMessage != null)
            queue.addDefinition("message", defMessage);
        if (defTalker != null)
            queue.addDefinition("talker", defTalker);
    }
View Full Code Here

TOP

Related Classes of net.aufdemrand.denizen.scripts.queues.ScriptQueue

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.