Skip to content

Commit

Permalink
Make ScriptContainer pure core
Browse files Browse the repository at this point in the history
Yay core systems
  • Loading branch information
mcmonkey4eva committed Nov 5, 2014
1 parent 0e4e611 commit e949577
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 33 deletions.
6 changes: 4 additions & 2 deletions src/main/java/net/aufdemrand/denizen/objects/dScript.java
Expand Up @@ -7,6 +7,7 @@
import net.aufdemrand.denizen.scripts.ScriptRegistry;
import net.aufdemrand.denizen.scripts.commands.core.CooldownCommand;
import net.aufdemrand.denizen.scripts.containers.ScriptContainer;
import net.aufdemrand.denizen.scripts.containers.core.InteractScriptContainer;
import net.aufdemrand.denizen.scripts.containers.core.InteractScriptHelper;
import net.aufdemrand.denizen.tags.Attribute;
import net.aufdemrand.denizen.tags.TagManager;
Expand Down Expand Up @@ -245,7 +246,7 @@ public String getAttribute(Attribute attribute) {
dPlayer player = (attribute.hasContext(1) ? dPlayer.valueOf(attribute.getContext(1))
: attribute.getScriptEntry().getPlayer());
if (player != null && player.isValid())
return new Element(container.checkCooldown(player))
return new Element(CooldownCommand.checkCooldown(player, container.getName()))
.getAttribute(attribute.fulfill(1));
else return "null";
}
Expand All @@ -255,12 +256,13 @@ public String getAttribute(Attribute attribute) {
// @returns Element
// @description
// Returns whether the player specified (defaults to current) has the requirement.
// Must be an INTERACT script.
// -->
if (attribute.startsWith("requirements.check")) {
dPlayer player = (attribute.hasContext(1) ? dPlayer.valueOf(attribute.getContext(1))
: attribute.getScriptEntry().getPlayer());
if (attribute.hasContext(2))
return new Element(container.checkRequirements(player,
return new Element(((InteractScriptContainer)container).checkRequirements(player,
attribute.getScriptEntry().getNPC(),
attribute.getContext(2)))
.getAttribute(attribute.fulfill(2));
Expand Down
@@ -1,18 +1,11 @@
package net.aufdemrand.denizen.scripts.containers;

import net.aufdemrand.denizen.BukkitScriptEntryData;
import net.aufdemrand.denizen.objects.dNPC;
import net.aufdemrand.denizen.objects.dPlayer;
import net.aufdemrand.denizen.objects.dScript;
import net.aufdemrand.denizen.scripts.ScriptBuilder;
import net.aufdemrand.denizen.scripts.ScriptEntry;
import net.aufdemrand.denizen.scripts.ScriptEntrySet;
import net.aufdemrand.denizencore.scripts.ScriptEntryData;
import net.aufdemrand.denizencore.scripts.ScriptHelper;
import net.aufdemrand.denizen.scripts.commands.core.CooldownCommand;
import net.aufdemrand.denizen.scripts.requirements.RequirementsContext;
import net.aufdemrand.denizen.scripts.requirements.RequirementsMode;
import net.aufdemrand.denizen.utilities.DenizenAPI;
import net.aufdemrand.denizencore.utilities.YamlConfiguration;
import net.aufdemrand.denizencore.utilities.debugging.Debuggable;

Expand Down Expand Up @@ -208,25 +201,6 @@ public void set(String path, Object object) {
}


public boolean checkBaseRequirements(dPlayer player, dNPC npc) {
return checkRequirements(player, npc, "");
}

public boolean checkRequirements(dPlayer player, dNPC npc, String path) {
if (path == null) path = "";
if (path.length() > 0) path = path + ".";
// Get requirements
List<String> requirements = contents.getStringList(path + "REQUIREMENTS.LIST");
String mode = contents.getString(path + "REQUIREMENTS.MODE", "ALL");
// No requirements? Meets requirements!
if (requirements == null || requirements.isEmpty()) return true;
// Return new RequirementsContext built with info extracted from the ScriptContainer
RequirementsContext context = new RequirementsContext(new RequirementsMode(mode), requirements, this);
context.attachPlayer(player);
context.attachNPC(npc);
return DenizenAPI.getCurrentInstance().getScriptEngine().getRequirementChecker().check(context);
}

public List<ScriptEntry> getBaseEntries(ScriptEntryData data) {
return getEntries(data, "script");
}
Expand Down Expand Up @@ -257,10 +231,6 @@ ScriptEntrySet getSetFor(String path) {

private Map<String, ScriptEntrySet> scriptsMap = new HashMap<String, ScriptEntrySet>();

public boolean checkCooldown(dPlayer player) {
return CooldownCommand.checkCooldown(player, name);
}

/////////////
// DEBUGGABLE
/////////
Expand Down
Expand Up @@ -5,6 +5,8 @@
import net.aufdemrand.denizen.objects.dPlayer;
import net.aufdemrand.denizen.scripts.ScriptEntry;
import net.aufdemrand.denizen.scripts.containers.ScriptContainer;
import net.aufdemrand.denizen.scripts.requirements.RequirementsContext;
import net.aufdemrand.denizen.scripts.requirements.RequirementsMode;
import net.aufdemrand.denizen.scripts.triggers.AbstractTrigger;
import net.aufdemrand.denizen.utilities.DenizenAPI;
import net.aufdemrand.denizen.utilities.debugging.dB;
Expand Down Expand Up @@ -255,4 +257,22 @@ public boolean hasTriggerOptionFor(Class<? extends AbstractTrigger> trigger,
return contains("STEPS." + step + "." + triggerName + " TRIGGER"
+ (id == null ? "" : "." + id.toUpperCase()) + "." + option.toUpperCase());
}
public boolean checkBaseRequirements(dPlayer player, dNPC npc) {
return checkRequirements(player, npc, "");
}

public boolean checkRequirements(dPlayer player, dNPC npc, String path) {
if (path == null) path = "";
if (path.length() > 0) path = path + ".";
// Get requirements
List<String> requirements = getContents().getStringList(path + "REQUIREMENTS.LIST");
String mode = getContents().getString(path + "REQUIREMENTS.MODE", "ALL");
// No requirements? Meets requirements!
if (requirements == null || requirements.isEmpty()) return true;
// Return new RequirementsContext built with info extracted from the ScriptContainer
RequirementsContext context = new RequirementsContext(new RequirementsMode(mode), requirements, this);
context.attachPlayer(player);
context.attachNPC(npc);
return DenizenAPI.getCurrentInstance().getScriptEngine().getRequirementChecker().check(context);
}
}
Expand Up @@ -3,6 +3,7 @@
import net.aufdemrand.denizen.objects.dNPC;
import net.aufdemrand.denizen.objects.dPlayer;
import net.aufdemrand.denizen.scripts.ScriptRegistry;
import net.aufdemrand.denizen.scripts.commands.core.CooldownCommand;
import net.aufdemrand.denizen.scripts.triggers.AbstractTrigger;
import net.aufdemrand.denizen.utilities.DenizenAPI;
import net.aufdemrand.denizen.utilities.debugging.dB;
Expand Down Expand Up @@ -94,7 +95,7 @@ public static InteractScriptContainer getInteractScript(dNPC npc, dPlayer player
dB.echoApproval("'" + entry + "' meets requirements.");

// Meets requirements, but we need to check cool down, too.
if (interactScript.checkCooldown(player))
if (CooldownCommand.checkCooldown(player, interactScript.getName()))
interactableScripts.add(new PriorityPair(priority, entry.split(" ", 2)[1]));
else {
if (dB.shouldDebug(interactScript))
Expand Down

0 comments on commit e949577

Please sign in to comment.