Skip to content

Commit

Permalink
Update NPC Vulnerable command.
Browse files Browse the repository at this point in the history
  • Loading branch information
Fortifier42 committed Jan 24, 2016
1 parent 2a78412 commit 143e949
Showing 1 changed file with 16 additions and 25 deletions.
Expand Up @@ -4,6 +4,7 @@
import net.aufdemrand.denizen.utilities.debugging.dB;
import net.aufdemrand.denizencore.exceptions.CommandExecutionException;
import net.aufdemrand.denizencore.exceptions.InvalidArgumentsException;
import net.aufdemrand.denizencore.objects.Element;
import net.aufdemrand.denizencore.objects.aH;
import net.aufdemrand.denizencore.scripts.ScriptEntry;
import net.aufdemrand.denizencore.scripts.commands.AbstractCommand;
Expand All @@ -17,44 +18,34 @@ enum Toggle {TRUE, FALSE, TOGGLE}
public void parseArgs(ScriptEntry scriptEntry) throws InvalidArgumentsException {

// Initialize fields
Toggle vulnerable = Toggle.TRUE;
// TODO: UPDATE COMMAND PARSING
for (String arg : scriptEntry.getArguments()) {
if (aH.matchesState(arg)) {
vulnerable = Toggle.valueOf(aH.getStringFrom(arg).toUpperCase());
for (aH.Argument arg : aH.interpret(scriptEntry.getArguments())) {
if (!scriptEntry.hasObject("action") && arg.matchesEnum(Toggle.values())) {
scriptEntry.addObject("action", arg.asElement());
}
else {
arg.reportUnhandled();
}
}

if (((BukkitScriptEntryData) scriptEntry.entryData).getNPC() == null) {
scriptEntry.defaultObject("action", new Element("toggle"));
if (!((BukkitScriptEntryData) scriptEntry.entryData).hasNPC()) {
throw new InvalidArgumentsException("This command requires a linked NPC!");
}

// Add objects that need to be passed to execute() to the scriptEntry
scriptEntry.addObject("vulnerable", vulnerable);
}

@Override
public void execute(ScriptEntry scriptEntry) throws CommandExecutionException {
// Fetch objects
Toggle toggle = (Toggle) scriptEntry.getObject("vulnerable");

// Report to dB
dB.report(scriptEntry, getName(),
aH.debugObj("NPC", ((BukkitScriptEntryData) scriptEntry.entryData).getNPC().toString()) +
aH.debugObj("Toggle", toggle.toString()));
Element action = scriptEntry.getElement("action");

NPC npc = ((BukkitScriptEntryData) scriptEntry.entryData).getNPC().getCitizen();
BukkitScriptEntryData entryData = (BukkitScriptEntryData) scriptEntry.entryData;

boolean vulnerable;

if (toggle == Toggle.TOGGLE) {
vulnerable = !npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true);
}
// Report to dB
dB.report(scriptEntry, getName(), entryData.getNPC().debug() + action.debug());

else {
vulnerable = Boolean.valueOf(toggle.toString());
}
NPC npc = entryData.getNPC().getCitizen();
Toggle toggle = Toggle.valueOf(action.asString().toUpperCase());

npc.data().set(NPC.DEFAULT_PROTECTED_METADATA, !vulnerable);
npc.setProtected(!(toggle == Toggle.TOGGLE ? npc.isProtected() : action.asBoolean()));
}
}

0 comments on commit 143e949

Please sign in to comment.