Search in sources :

Example 16 with Invocable

use of javax.script.Invocable in project HeavenMS by ronancpl.

the class PortalScriptManager method getPortalScript.

private PortalScript getPortalScript(String scriptName) {
    if (scripts.containsKey(scriptName)) {
        return scripts.get(scriptName);
    }
    File scriptFile = new File("scripts/portal/" + scriptName + ".js");
    if (!scriptFile.exists()) {
        scripts.put(scriptName, null);
        return null;
    }
    FileReader fr = null;
    ScriptEngine portal = sef.getScriptEngine();
    try {
        fr = new FileReader(scriptFile);
        ((Compilable) portal).compile(fr).eval();
    } catch (ScriptException | IOException | UndeclaredThrowableException e) {
        FilePrinter.printError(FilePrinter.PORTAL + scriptName + ".txt", e);
    } finally {
        if (fr != null) {
            try {
                fr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    PortalScript script = ((Invocable) portal).getInterface(PortalScript.class);
    scripts.put(scriptName, script);
    return script;
}
Also used : ScriptException(javax.script.ScriptException) Invocable(javax.script.Invocable) UndeclaredThrowableException(java.lang.reflect.UndeclaredThrowableException) FileReader(java.io.FileReader) IOException(java.io.IOException) File(java.io.File) ScriptEngine(javax.script.ScriptEngine)

Example 17 with Invocable

use of javax.script.Invocable in project HeavenMS by ronancpl.

the class QuestScriptManager method end.

public void end(MapleClient c, short questid, int npc) {
    MapleQuest quest = MapleQuest.getInstance(questid);
    if (!c.getPlayer().getQuest(quest).getStatus().equals(MapleQuestStatus.Status.STARTED) || !c.getPlayer().getMap().containsNPC(npc)) {
        dispose(c);
        return;
    }
    try {
        QuestActionManager qm = new QuestActionManager(c, questid, npc, false);
        if (qms.containsKey(c)) {
            return;
        }
        if (c.canClickNPC()) {
            qms.put(c, qm);
            Invocable iv = getInvocable("quest/" + questid + ".js", c);
            if (iv == null) {
                qm.dispose();
                return;
            }
            engine.put("qm", qm);
            scripts.put(c, iv);
            c.setClickedNPC();
            iv.invokeFunction("end", (byte) 1, (byte) 0, 0);
        }
    } catch (final UndeclaredThrowableException ute) {
        FilePrinter.printError(FilePrinter.QUEST + questid + ".txt", ute);
        dispose(c);
    } catch (final Throwable t) {
        FilePrinter.printError(FilePrinter.QUEST + getQM(c).getQuest() + ".txt", t);
        dispose(c);
    }
}
Also used : Invocable(javax.script.Invocable) MapleQuest(server.quest.MapleQuest) UndeclaredThrowableException(java.lang.reflect.UndeclaredThrowableException)

Example 18 with Invocable

use of javax.script.Invocable in project HeavenMS by ronancpl.

the class QuestScriptManager method start.

public void start(MapleClient c, short questid, int npc) {
    MapleQuest quest = MapleQuest.getInstance(questid);
    if (!c.getPlayer().getQuest(quest).getStatus().equals(MapleQuestStatus.Status.NOT_STARTED)) {
        dispose(c);
        return;
    }
    try {
        QuestActionManager qm = new QuestActionManager(c, questid, npc, true);
        if (qms.containsKey(c)) {
            return;
        }
        if (c.canClickNPC()) {
            qms.put(c, qm);
            Invocable iv = getInvocable("quest/" + questid + ".js", c);
            if (iv == null) {
                FilePrinter.printError(FilePrinter.QUEST_UNCODED, "Quest " + questid + " is uncoded.\r\n");
            }
            if (iv == null || QuestScriptManager.getInstance() == null) {
                qm.dispose();
                return;
            }
            engine.put("qm", qm);
            scripts.put(c, iv);
            c.setClickedNPC();
            iv.invokeFunction("start", (byte) 1, (byte) 0, 0);
        }
    } catch (final UndeclaredThrowableException ute) {
        FilePrinter.printError(FilePrinter.QUEST + questid + ".txt", ute);
        dispose(c);
    } catch (final Throwable t) {
        FilePrinter.printError(FilePrinter.QUEST + getQM(c).getQuest() + ".txt", t);
        dispose(c);
    }
}
Also used : Invocable(javax.script.Invocable) MapleQuest(server.quest.MapleQuest) UndeclaredThrowableException(java.lang.reflect.UndeclaredThrowableException)

Example 19 with Invocable

use of javax.script.Invocable in project HeavenMS by ronancpl.

the class ReactorScriptManager method onHit.

public void onHit(MapleClient c, MapleReactor reactor) {
    try {
        Invocable iv = getInvocable("reactor/" + reactor.getId() + ".js", c);
        if (iv == null)
            return;
        ReactorActionManager rm = new ReactorActionManager(c, reactor, iv);
        engine.put("rm", rm);
        iv.invokeFunction("hit");
    } catch (final NoSuchMethodException e) {
    // do nothing, hit is OPTIONAL
    } catch (final ScriptException | NullPointerException e) {
        FilePrinter.printError(FilePrinter.REACTOR + reactor.getId() + ".txt", e);
    }
}
Also used : Invocable(javax.script.Invocable) ScriptException(javax.script.ScriptException)

Example 20 with Invocable

use of javax.script.Invocable in project java8-tutorial by winterbe.

the class Nashorn6 method main.

public static void main(String[] args) throws Exception {
    ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
    engine.eval("load('res/nashorn6.js')");
    Invocable invocable = (Invocable) engine;
    Product product = new Product();
    product.setName("Rubber");
    product.setPrice(1.99);
    product.setStock(1337);
    ScriptObjectMirror result = (ScriptObjectMirror) invocable.invokeFunction("calculate", product);
    System.out.println(result.get("name") + ": " + result.get("valueOfGoods"));
}
Also used : Invocable(javax.script.Invocable) ScriptObjectMirror(jdk.nashorn.api.scripting.ScriptObjectMirror) ScriptEngineManager(javax.script.ScriptEngineManager) ScriptEngine(javax.script.ScriptEngine)

Aggregations

Invocable (javax.script.Invocable)68 ScriptException (javax.script.ScriptException)41 ScriptEngine (javax.script.ScriptEngine)30 ScriptEngineManager (javax.script.ScriptEngineManager)22 IOException (java.io.IOException)19 File (java.io.File)10 InputStreamReader (java.io.InputStreamReader)10 UndeclaredThrowableException (java.lang.reflect.UndeclaredThrowableException)10 FileReader (java.io.FileReader)9 Reader (java.io.Reader)9 Compilable (javax.script.Compilable)5 CompiledScript (javax.script.CompiledScript)5 BufferedReader (java.io.BufferedReader)4 HashSet (java.util.HashSet)4 Map (java.util.Map)4 Bindings (javax.script.Bindings)4 ScriptContext (javax.script.ScriptContext)4 Writer (java.io.Writer)3 SimpleScriptContext (javax.script.SimpleScriptContext)3 ValidationResult (org.apache.nifi.components.ValidationResult)3