Skip to content

Commit

Permalink
Add - repeat command
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Aug 24, 2013
1 parent 07af9ba commit cbd0ca5
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 0 deletions.
Expand Up @@ -250,6 +250,9 @@ public void registerCoreMembers() {
registerCoreMember(RenameCommand.class,
"RENAME", "rename [<npc>] [<name>]", 1);

registerCoreMember(RepeatCommand.class,
"REPEAT", "repeat [<amount>] [<commands>]", 1);

registerCoreMember(ResetCommand.class,
"RESET", "reset [fails/finishes/cooldown] (script:<name>)", 1);

Expand Down
@@ -0,0 +1,71 @@
package net.aufdemrand.denizen.scripts.commands.core;

import net.aufdemrand.denizen.exceptions.CommandExecutionException;
import net.aufdemrand.denizen.exceptions.InvalidArgumentsException;
import net.aufdemrand.denizen.objects.Element;
import net.aufdemrand.denizen.objects.aH;
import net.aufdemrand.denizen.objects.dList;
import net.aufdemrand.denizen.scripts.ScriptEntry;
import net.aufdemrand.denizen.scripts.commands.BracedCommand;
import net.aufdemrand.denizen.scripts.queues.ScriptQueue;
import net.aufdemrand.denizen.scripts.queues.core.InstantQueue;
import net.aufdemrand.denizen.utilities.debugging.dB;
import net.aufdemrand.denizen.utilities.debugging.dB.Messages;

import java.util.ArrayList;
import java.util.UUID;

public class RepeatCommand extends BracedCommand {


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

for (aH.Argument arg : aH.interpret(scriptEntry.getArguments())) {

if (!scriptEntry.hasObject("qty")
&& arg.matchesPrimitive(aH.PrimitiveType.Integer))
scriptEntry.addObject("qty", arg.asElement());

}

if (!scriptEntry.hasObject("qty"))
throw new InvalidArgumentsException(Messages.ERROR_MISSING_OTHER, "QUANTITY");

scriptEntry.addObject("entries", getBracedCommands(scriptEntry));

}

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

// Get objects
int qty = ((Element)scriptEntry.getObject("qty")).asInt();
ArrayList<ScriptEntry> entries = (ArrayList<ScriptEntry>) scriptEntry.getObject("entries");

// Report to dB
dB.report(getName(), aH.debugObj("qty", qty) );

for (int incr = 0;incr < qty;incr++) {
ArrayList<ScriptEntry> newEntries = (ArrayList<ScriptEntry>) new ArrayList<ScriptEntry>();
for (ScriptEntry entr: entries) {
try {
ScriptEntry toadd = entr.clone();
toadd.getObjects().clear();
newEntries.add(toadd);
}
catch (Throwable e) {
e.printStackTrace();
}
}
ScriptQueue queue = new InstantQueue(UUID.randomUUID().toString());
scriptEntry.getResidingQueue().addContext("value", String.valueOf(incr + 1));
queue.addContext("value", String.valueOf(incr + 1));
queue.addEntries(newEntries);
queue.start();
}

}

}

This comment has been minimized.

Copy link
@spaceemotion

spaceemotion Aug 24, 2013

Contributor

Mwahaha no new line xD

0 comments on commit cbd0ca5

Please sign in to comment.