Skip to content

Commit

Permalink
Allow outside scripts to be loaded into Denizen. Use ScriptRegistry.a…
Browse files Browse the repository at this point in the history
…ddYamlScriptContainer(FileConfiguration …)
  • Loading branch information
aufdemrand committed Jul 13, 2013
1 parent ca264cb commit 2f8ffd5
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 7 deletions.
4 changes: 2 additions & 2 deletions src/main/java/net/aufdemrand/denizen/objects/dItem.java
Expand Up @@ -73,9 +73,9 @@ public static dItem valueOf(String string) {
* Gets a Item Object from a string form.
*
* @param string The string or dScript argument String
* @param dPlayer The dPlayer to be used for player contexts
* @param player The dPlayer to be used for player contexts
* where applicable.
* @param dNPC The dNPC to be used for NPC contexts
* @param npc The dNPC to be used for NPC contexts
* where applicable.
* @return an Item, or null if incorrectly formatted
*
Expand Down
10 changes: 10 additions & 0 deletions src/main/java/net/aufdemrand/denizen/scripts/ScriptHelper.java
Expand Up @@ -5,6 +5,7 @@
import net.aufdemrand.denizen.utilities.debugging.dB;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
Expand Down Expand Up @@ -74,6 +75,15 @@ private static String _concatenateCoreScripts() {
yaml = YamlConfiguration.loadConfiguration(DenizenAPI.getCurrentInstance().getResource("genies.dscript"));
sb.append(yaml.saveToString() + "\r\n");

dB.echoDebug("Processing outside scripts... ");
for (FileConfiguration outsideConfig : ScriptRegistry.outside_scripts) {
try {
sb.append(outsideConfig.saveToString() + "\r\n");
} catch (Exception e) {
dB.echoError("Woah! Error parsing outside scripts!");
}
}

for (File f : files){
String fileName = f.getAbsolutePath().substring(file.getAbsolutePath().length());
dB.echoDebug("Processing '" + fileName + "'... ");
Expand Down
31 changes: 26 additions & 5 deletions src/main/java/net/aufdemrand/denizen/scripts/ScriptRegistry.java
Expand Up @@ -6,9 +6,7 @@
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.*;

public class ScriptRegistry {

Expand Down Expand Up @@ -78,8 +76,30 @@ public static void _buildCoreYamlScriptContainers(FileConfiguration yamlScripts)
}
}

public static void _buildYamlScriptContainer(ConfigurationSection configurationSection) {
// TODO: Allow others to register dScript with Denizen without adding to Denizen's script folder.
public static List<FileConfiguration> outside_scripts = new ArrayList<FileConfiguration>();

/**
* Adds a YAML FileConfiguration to the list of scripts to be loaded. Adding a new
* FileConfiguration will reload the scripts automatically.
*
* @param yaml_script the FileConfiguration containing the script
*
*/
public static void addYamlScriptContainer(FileConfiguration yaml_script) {
outside_scripts.add(yaml_script);
ScriptHelper.reloadScripts();
}

/**
* Removes a YAML FileConfiguration to the list of scripts to be loaded. Removing a
* FileConfiguration will reload the scripts automatically.
*
* @param yaml_script the FileConfiguration containing the script
*
*/
public static void removeYamlScriptContainer(FileConfiguration yaml_script) {
outside_scripts.remove(yaml_script);
ScriptHelper.reloadScripts();
}

public static <T extends ScriptContainer> T getScriptContainerAs(String name, Class<T> type) {
Expand All @@ -88,6 +108,7 @@ public static <T extends ScriptContainer> T getScriptContainerAs(String name, Cl
return (T) type.cast(scriptContainers.get(name.toUpperCase()));
else return null;
} catch (Exception e) { }

return null;
}

Expand Down

0 comments on commit 2f8ffd5

Please sign in to comment.