lua parser and vendor count fix
parent
fa5cf693c3
commit
ab8edda173
8
pom.xml
8
pom.xml
|
@ -111,6 +111,14 @@
|
|||
<version>25.0-jre</version>
|
||||
</dependency>
|
||||
|
||||
<!-- lua parser -->
|
||||
|
||||
<dependency>
|
||||
<groupId>org.luaj</groupId>
|
||||
<artifactId>luaj-jse</artifactId>
|
||||
<version>3.0.1</version>
|
||||
</dependency>
|
||||
|
||||
<!-- xml bind -->
|
||||
|
||||
<dependency>
|
||||
|
|
|
@ -7,7 +7,9 @@ import io.rudin.minetest.tileserver.parser.Inventory;
|
|||
import io.rudin.minetest.tileserver.parser.Item;
|
||||
import io.rudin.minetest.tileserver.parser.Metadata;
|
||||
import io.rudin.minetest.tileserver.service.EventBus;
|
||||
import io.rudin.minetest.tileserver.util.LuaParser;
|
||||
import org.jooq.DSLContext;
|
||||
import org.luaj.vm2.LuaTable;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.Map;
|
||||
|
@ -78,14 +80,17 @@ main={size=90}
|
|||
Inventory give = inv.get("given_item");
|
||||
Inventory main = inv.get("main");
|
||||
|
||||
String settings = map.get("settings");
|
||||
LuaTable settingsTable = LuaParser.parseMap(settings);
|
||||
|
||||
if (pay.items.isEmpty() || give.items.isEmpty())
|
||||
return;
|
||||
|
||||
String in_item = pay.items.get(0).name;
|
||||
int in_count = Math.max(1, pay.items.get(0).count);
|
||||
int in_count = Math.max(1, settingsTable.get("input_item_qty").toint());
|
||||
|
||||
String out_item = give.items.get(0).name;
|
||||
int out_count = Math.max(1, give.items.get(0).count);
|
||||
int out_count = Math.max(1, settingsTable.get("output_item_qty").toint());
|
||||
|
||||
if (in_item == null || out_item == null)
|
||||
//Nothing to sell yet
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
package io.rudin.minetest.tileserver.util;
|
||||
|
||||
import org.luaj.vm2.LuaTable;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.script.ScriptEngine;
|
||||
import javax.script.ScriptEngineManager;
|
||||
import javax.script.ScriptException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class LuaParser {
|
||||
|
||||
private static ScriptEngineManager mgr = new ScriptEngineManager();
|
||||
private static ScriptEngine engine = mgr.getEngineByName("luaj");
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(LuaParser.class);
|
||||
|
||||
public static LuaTable parseMap(String str) {
|
||||
try {
|
||||
Object result = engine.eval(str);
|
||||
|
||||
if (result instanceof LuaTable) {
|
||||
return (LuaTable) result;
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
} catch (ScriptException e){
|
||||
throw new IllegalArgumentException("parseMap", e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package io.rudin.minetest.tileserver;
|
||||
|
||||
import io.rudin.minetest.tileserver.util.LuaParser;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.luaj.vm2.LuaTable;
|
||||
|
||||
import javax.script.ScriptException;
|
||||
import java.util.Map;
|
||||
|
||||
public class LuaParserTest {
|
||||
|
||||
|
||||
static final String MAP_STR = "return {[\"admin_vendor\"] = true, [\"depositor\"] = false, [\"split_incoming_stacks\"] = false,\n" +
|
||||
" [\"output_item\"] = \"currency:minegeld\", [\"quit\"] = true, [\"accept_worn_input\"] = true, [\"digiline_channel\"] = \"\", [\"output_item_qty\"] = 1,\n" +
|
||||
" [\"auto_sort\"] = false, [\"input_item\"] = \"default:coal_lump\", [\"currency_eject\"] = false, [\"accept_output_only\"] = false, [\"co_sellers\"] = \"\",\n" +
|
||||
" [\"accept_worn_output\"] = true, [\"banned_buyers\"] = \"\", [\"input_item_qty\"] = 1, [\"inactive_force\"] = false}";
|
||||
|
||||
@Test
|
||||
public void testMap() throws ScriptException {
|
||||
|
||||
LuaTable map = LuaParser.parseMap(MAP_STR);
|
||||
|
||||
Assert.assertNotNull(map);
|
||||
Assert.assertEquals(true, map.get("admin_vendor").checkboolean());
|
||||
Assert.assertEquals("currency:minegeld", map.get("output_item").tojstring());
|
||||
Assert.assertEquals(1, map.get("output_item_qty").toint());
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue