[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/InfinityStudio/SimpleAPI/master/src/test/java/EngineTest.java [Back]  [Original]

import net.simpleAPI.item.ItemCreate;
import net.simpleAPI.item.ItemUpdate;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

/**
 * @author ci010
 */
public class EngineTest
{
	String pre = "var ItemBlockDestroy = Java.type('ItemBlockDestroy');\n" +
			"var ItemBlockInteract = Java.type('ItemBlockInteract');\n" +
			"var ItemCreate = Java.type('ItemCreate');\n" +
			"var ItemEntityHandler = Java.type('ItemEntityHandler');\n" +
			"var ItemUpdate = Java.type('ItemUpdate');\n" +
			"var ItemUsing = Java.type('ItemUsing');";

	public void test() throws ScriptException, NoSuchMethodException
	{
		ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
		engine.eval(pre);
		Object eval = engine.eval(
				" type = Java.extend(ItemUpdate, ItemCreate);" +
						" inst = new type() {\n" +
						"   onUpdate: function(stack, world, entity, slot, isSelect) {print('update');},\n" +
						"	onCreated: function(stack, world, player){print('create');}" +
						"};"
		);

		System.out.println(eval);
		System.out.println(eval.getClass());
		ItemCreate eval1 = (ItemCreate) eval;
		eval1.onCreated(null, null, null);
		ItemUpdate eval2 = (ItemUpdate) eval;
		eval2.onUpdate(null, null, null, 0, false);

		Object sec = engine.eval(
				" type = Java.extend(ItemUpdate, ItemCreate);" +
						" inst = new type() {\n" +
						"   onUpdate: function(stack, world, entity, slot, isSelect) {print('update2');},\n" +
						"	onCreated: function(stack, world, player){print('create2');}" +
						"};"
		);

		eval1 = (ItemCreate) sec;
		eval1.onCreated(null, null, null);
		eval2 = (ItemUpdate) sec;
		eval2.onUpdate(null, null, null, 0, false);
	}
}

Web Proxy Viewer  |  New URL  |  Original Page