From b9e80ce8bc457732da55c346d74fa7399175f82d Mon Sep 17 00:00:00 2001 From: walterhiggins Date: Tue, 8 Jan 2013 02:33:18 +0000 Subject: [PATCH] rework - moved logic from java to js --- .../scriptcraft/ScriptCraftPlugin.java | 52 +++++++++++++++++-- 1 file changed, 49 insertions(+), 3 deletions(-) diff --git a/bukkit-plugin/src/net/walterhiggins/scriptcraft/ScriptCraftPlugin.java b/bukkit-plugin/src/net/walterhiggins/scriptcraft/ScriptCraftPlugin.java index c1447e4..a5b9086 100644 --- a/bukkit-plugin/src/net/walterhiggins/scriptcraft/ScriptCraftPlugin.java +++ b/bukkit-plugin/src/net/walterhiggins/scriptcraft/ScriptCraftPlugin.java @@ -2,7 +2,11 @@ package net.walterhiggins.scriptcraft; import java.io.File; import java.io.FileReader; +import java.io.FileOutputStream; +import java.io.IOException; import javax.script.*; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.command.*; @@ -15,13 +19,56 @@ public class ScriptCraftPlugin extends JavaPlugin // need to look at possibly having context/scope per operator //protected Map playerContexts = new HashMap(); protected ScriptEngine engine = null; + private static final String JS_PLUGINS_DIR = "js-plugins"; @Override - public void onEnable(){ + public void onEnable() + { + // + // does the js-plugins directory exist? + // + File jsPlugins = new File(JS_PLUGINS_DIR); + if (!jsPlugins.exists()) + { + getLogger().info("Directory " + JS_PLUGINS_DIR + " does not exist."); + getLogger().info("Initializing " + JS_PLUGINS_DIR + " directory with contents from plugin archive."); + + jsPlugins.mkdir(); + + ZipInputStream zis = new ZipInputStream(getResource(JS_PLUGINS_DIR + ".zip")); + ZipEntry entry; + try { + while ( ( entry = zis.getNextEntry() ) != null) + { + String filename = entry.getName(); + getLogger().info("Unzipping " + filename); + File newFile = new File(jsPlugins.getName() + File.separator + filename); + + //create all non exists folders + //else you will hit FileNotFoundException for compressed folder + if (entry.isDirectory()){ + newFile.mkdirs(); + }else{ + FileOutputStream fout = new FileOutputStream(newFile); + for (int c = zis.read(); c != -1; c = zis.read()) { + fout.write(c); + } + fout.close(); + + } + zis.closeEntry(); + } + zis.close(); + }catch (IOException ioe){ + getLogger().warning(ioe.getMessage()); + ioe.printStackTrace(); + } + } + if (this.engine == null){ try{ ScriptEngineManager factory = new ScriptEngineManager(); - File boot = new File("js-plugins2/core/_scriptcraft.js"); + File boot = new File(JS_PLUGINS_DIR + "/core/_scriptcraft.js"); this.engine = factory.getEngineByName("JavaScript"); this.engine.put("__engine",engine); this.engine.put("__plugin",this); @@ -30,7 +77,6 @@ public class ScriptCraftPlugin extends JavaPlugin }catch(Exception e){ e.printStackTrace(); } - } } public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)