☕
Знакомый
Синтаксис Java с необязательными типами. dyn там, где нужна свобода, int или класс там, где нужна проверка.
Синтаксис Java, лёгкость Lua и песочница под вашим контролем.
// welcome.jmp - хост вызывает onJoin, когда игрок заходит
dyn visits = table();
void onJoin(dyn player) {
visits[player.name()] = (visits[player.name()] || 0) + 1;
player.send("Welcome, " + player.name() + "! Visit " + visits[player.name()]);
server.broadcast(player.name() + " joined");
}// scripts.jma - что скриптам можно трогать
Policy.allowPackage("example.api");
Policy.allowClass("example.api.Player").denyMethod("kick");
Policy.allowPackage("java.util");// хост
Interpreter jumper = new Interpreter()
.access(Access.load(Path.of("scripts.jma")))
.define("server", server);
Script script = jumper.script(Files.readString(Path.of("welcome.jmp")));
script.run();
script.invoke("onJoin", player);