{"id":88560,"date":"2026-06-05T04:29:00","date_gmt":"2026-06-05T01:29:00","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/js-runner\/"},"modified":"2026-06-05T04:29:00","modified_gmt":"2026-06-05T01:29:00","slug":"js-runner","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/js-runner\/","title":{"rendered":"JS Runner"},"content":{"rendered":"<p>## Description<br \/>\nThis project was inspired by ScriptCraft. ScriptCraft is a plugin that allows JavaScript files to be ran on a Minecraft server, but sadly ScriptCraft is no longer being updated and only supports 1.8. This plugin aims to bring the function of ScriptCraft back to modern day Minecraft. This project includes custom JavaScript API to interact with the game server. <\/p>\n<p>## Setup<br \/>\nPut the .jar file into the server plugins folder and restart it. A new folder will pop up with the name: &#8220;JSRunner&#8221; and inside that folder will be another folder named: &#8220;scripts.&#8221; You can put .js files into the scripts folder and use the appropriate command to execute it.<\/p>\n<p>## Commands<\/p>\n<p>&#8220;`<br \/>\n\/js run <filename><br \/>\n&#8220;`<br \/>\nruns a Javascript file located in JSRunner\/Scripts<\/p>\n<p>&#8220;`<br \/>\n\/js stop <filename><br \/>\n&#8220;`<br \/>\nstops a Javascript file<\/p>\n<p>&#8220;`<br \/>\n\/js reload<br \/>\n&#8220;`<br \/>\nstops all JavaScript files<\/p>\n<p># JavaScript API<br \/>\n## Server<\/p>\n<p>&#8220;`<br \/>\nserver.log()<br \/>\n&#8220;`<br \/>\nlogs a message to the server console<\/p>\n<p>&#8220;`<br \/>\nserver.command()<br \/>\n&#8220;`<br \/>\nruns a command as the console<br \/>\n## Timers <\/p>\n<p>&#8220;`<br \/>\ntimers.setTimeout(fn, ticks)<br \/>\n&#8220;`<br \/>\nrun fn once after ticks<\/p>\n<p>&#8220;`<br \/>\ntimers.setInterval(fn, ticks)<br \/>\n&#8220;`<br \/>\nrun fn repeatedly every ticks<\/p>\n<p>&#8220;`<br \/>\ntimers.clear(id)<br \/>\n&#8220;`<br \/>\ncancels a timeout\/interval<\/p>\n<p>&#8220;`<br \/>\ntimers.clearAll()<br \/>\n&#8220;`<br \/>\ncancels all timers.<br \/>\n## Events <\/p>\n<p>&#8220;`<br \/>\nevents.on(event, callback)<br \/>\n&#8220;`<br \/>\nlistens for an event<\/p>\n<p>&#8220;`<br \/>\nplayerJoin<br \/>\n&#8220;`<br \/>\nparameter: PlayerWrapper<\/p>\n<p>&#8220;`<br \/>\nplayerQuit<br \/>\n&#8220;`<br \/>\nparameter: PlayerWrapper<\/p>\n<p>&#8220;`<br \/>\nblockBreak<br \/>\n&#8220;`<br \/>\nBlockWrapper<br \/>\n## Block Wrapper<\/p>\n<p>&#8220;`<br \/>\ngetType()<br \/>\n&#8220;`<br \/>\nreturns block type as string<\/p>\n<p>&#8220;`<br \/>\ngetX()<br \/>\n&#8220;`<br \/>\nget X position<br \/>\n&#8220;`<br \/>\ngetY()<br \/>\n&#8220;`<br \/>\nget Y position<br \/>\n&#8220;`<br \/>\ngetZ()<br \/>\n&#8220;`<br \/>\nget Z position<\/p>\n<p>&#8220;`<br \/>\ngetPlayerName()<br \/>\n&#8220;`<br \/>\nname of the player who broke the block<br \/>\n## Player Wrapper<\/p>\n<p>&#8220;`<br \/>\ngetName()<br \/>\n&#8220;`<br \/>\ngets the players name<br \/>\n&#8220;`<br \/>\ngetUUID()<br \/>\n&#8220;`<br \/>\ngets the players UUID<\/p>\n<p>## Sample Code (Requires latest version to work)<br \/>\nThis sample code welcomes a player who joined the server.<\/p>\n<p>&#8220;`<br \/>\nserver.log(&#8220;Hello from JSRunner!&#8221;);<\/p>\n<p>events.on(&#8220;playerJoin&#8221;, function(player) {<br \/>\n    server.log(&#8220;Welcome &#8221; + player.getName());<br \/>\n});<\/p>\n<p>var intervalId = timers.setInterval(function() {<br \/>\n    server.log(&#8220;Repeating message every 100 ticks&#8221;);<br \/>\n}, 100);<br \/>\n&#8220;`<br \/>\nThis sample code clears the invenory of a player who breaks bedrock with their hands (not TNT).<\/p>\n<p>&#8220;`<br \/>\nevents.on(&#8220;blockBreak&#8221;, function(block) {<br \/>\n    if (block.getType() === &#8220;BEDROCK&#8221;) {<br \/>\n        server.command(&#8220;clear &#8221; + block.getPlayerName());<br \/>\n        server.command(&#8220;tell &#8221; + block.getPlayerName() + &#8221; Your inventory was cleared!&#8221;);<br \/>\n    }<br \/>\n});<\/p>\n<p>&#8220;`<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The plugin aims to add the ability to run JavaScript files in a Minecraft server.<\/p>\n","protected":false},"featured_media":88561,"template":"","meta":{"_minecraft_slug":"js-runner","_minecraft_project_id":"gcqjSE77","_minecraft_author":"Bunnyking","_minecraft_license":"CC-BY-SA-4.0","_minecraft_downloads":39,"_minecraft_follows":0,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"js-runner.zip","_minecraft_size_bytes":101484388,"_minecraft_version_count":3,"_minecraft_updated_at":"2026-05-15T21:37:53.990400Z","_minecraft_date_created":"2026-01-05T21:17:36.368368Z","_minecraft_date_modified":"2025-12-31T18:49:11.608595Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/js-runner","_minecraft_icon_attachment_id":88561,"_minecraft_imported_at":"2026-06-05T01:29:01+00:00","_minecraft_import_hash":"b0764bba3287fe8f54669cda15b6f7a3","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[89,873,126,90,127,123,92],"mod_loader":[132],"minecraft_version":[62,37,40,41,73,74,38,78,79,80,81,82],"class_list":["post-88560","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-game-mechanics","mod_category-library","mod_category-management","mod_category-optimization","mod_category-paper","mod_category-technology","mod_category-utility","mod_loader-paper","minecraft_version-1-21","minecraft_version-1-21-1","minecraft_version-1-21-10","minecraft_version-1-21-11","minecraft_version-1-21-2","minecraft_version-1-21-3","minecraft_version-1-21-4","minecraft_version-1-21-5","minecraft_version-1-21-6","minecraft_version-1-21-7","minecraft_version-1-21-8","minecraft_version-1-21-9"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JS Runner - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/js-runner\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JS Runner - Minecraft\" \/>\n<meta property=\"og:description\" content=\"The plugin aims to add the ability to run JavaScript files in a Minecraft server.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/js-runner\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/js-runner\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/js-runner\\\/\",\"name\":\"JS Runner - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/js-runner\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/js-runner\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/js-runner-icon-dba0eb1b136e9798be19c5315140f9faec4ef123_96.webp\",\"datePublished\":\"2026-06-05T01:29:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/js-runner\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/js-runner\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/js-runner\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/js-runner-icon-dba0eb1b136e9798be19c5315140f9faec4ef123_96.webp\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/js-runner-icon-dba0eb1b136e9798be19c5315140f9faec4ef123_96.webp\",\"width\":96,\"height\":96},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/js-runner\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"JS Runner\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JS Runner - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/js-runner\/","og_locale":"en_US","og_type":"article","og_title":"JS Runner - Minecraft","og_description":"The plugin aims to add the ability to run JavaScript files in a Minecraft server.","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/js-runner\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/js-runner\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/js-runner\/","name":"JS Runner - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/js-runner\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/js-runner\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/js-runner-icon-dba0eb1b136e9798be19c5315140f9faec4ef123_96.webp","datePublished":"2026-06-05T01:29:00+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/js-runner\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/js-runner\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/js-runner\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/js-runner-icon-dba0eb1b136e9798be19c5315140f9faec4ef123_96.webp","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/js-runner-icon-dba0eb1b136e9798be19c5315140f9faec4ef123_96.webp","width":96,"height":96},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/js-runner\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"JS Runner"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/88560","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/88561"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=88560"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=88560"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=88560"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=88560"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}