{"id":5246,"date":"2026-08-30T12:00:37","date_gmt":"2026-08-30T03:00:37","guid":{"rendered":"https:\/\/donguri3.net\/server-tech\/minecraft-education-agent-java-turbowarp-plugin-2\/"},"modified":"2026-08-30T12:00:38","modified_gmt":"2026-08-30T03:00:38","slug":"minecraft-education-agent-java-turbowarp-plugin","status":"publish","type":"post","link":"https:\/\/donguri3.net\/en\/server-tech\/minecraft\/minecraft-education-agent-java-turbowarp-plugin\/","title":{"rendered":"Programming with Agents in Java Edition Minecraft: Reproduction Steps Using twbridge"},"content":{"rendered":"<p>In our previous article, &quot;<a href=\"https:\/\/donguri3.net\/server-tech\/makecode-free-alt-java-scratch-turbowarp-mcpq\/\">Reproducing the Minecraft: Education Edition &#8220;Block Coding \u00d7 Agent (Working Robot)&#8221; Experience in Java Edition Minecraft<\/a>,&quot; we outlined a concept to recreate the Education Edition&#8217;s block-coding and agent experience using a TurboWarp + WebSocket configuration.<\/p>\n<p>In this article, based on that concept, we actually implemented it as a Paper plugin.<br \/>\nThe plugin is named twbridge (TurboWarp Bridge). As the name suggests, it is a plugin that bridges TurboWarp and the Paper server.<\/p>\n<h2>The Goal: Java Edition with Agent Control via Code Blocks<\/h2>\n<p>Our objective is to allow children to experience &#8220;controlling a working robot (Agent) using block coding&#8221;\u2014which they enjoyed in Minecraft: Education Edition\u2014for &#8220;free&#8221; in the Java Edition (Paper) as well. To make it usable without installing mods on the client side, we adopted TurboWarp (a high-speed environment compatible with Scratch) and WebSockets. Commands are sent from TurboWarp&#8217;s extension blocks, received by the server-side plugin, and executed.<\/p>\n<h2>What Was Implemented This Time<\/h2>\n<p>In the current version, we have implemented the following blocks:<\/p>\n<ul>\n<li>WebSocket connection \/ disconnection<\/li>\n<li>Minecraft command sending (e.g., \/say, etc.)<\/li>\n<li>Agent spawning \/ despawning<\/li>\n<\/ul>\n<p>These can be loaded into TurboWarp as a custom extension (.js) served from the web server embedded within the plugin.<\/p>\n<p><a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/11\/92bda6afe8c85dde9fc4b3fbf9de5f99.png\"><img decoding=\"async\" class=\"aligncenter size-large wp-image-2340\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/11\/92bda6afe8c85dde9fc4b3fbf9de5f99-1024x641.png\" alt=\"custom js\" width=\"1024\" height=\"641\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/11\/92bda6afe8c85dde9fc4b3fbf9de5f99-1024x641.png 1024w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/11\/92bda6afe8c85dde9fc4b3fbf9de5f99-300x188.png 300w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/11\/92bda6afe8c85dde9fc4b3fbf9de5f99-768x481.png 768w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/11\/92bda6afe8c85dde9fc4b3fbf9de5f99-530x332.png 530w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/11\/92bda6afe8c85dde9fc4b3fbf9de5f99-565x354.png 565w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/11\/92bda6afe8c85dde9fc4b3fbf9de5f99-710x445.png 710w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/11\/92bda6afe8c85dde9fc4b3fbf9de5f99-725x454.png 725w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/11\/92bda6afe8c85dde9fc4b3fbf9de5f99.png 1266w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p>When you place twbridge.jar into your Paper server and start it up, the extension URL is displayed in the console. By specifying that URL on the TurboWarp side, the blocks become available. Once \/say Hello from twbridge! is reflected on the server, you can experience firsthand that it is being controlled via the blocks.<\/p>\n<h2>Creating an Environment to Drive the PDCA Cycle Through &#8220;Blocks&#8221;<\/h2>\n<p>The ultimate goal of this project is to build an environment where children can learn the &#8220;PDCA cycle&#8221; within Minecraft.<br \/>\nChildren assemble blocks to give instructions to the agent, observe the results, and make adjustments.<br \/>\nThis directly corresponds to the Plan \u2192 Do \u2192 Check \u2192 Act cycle.<\/p>\n<ul>\n<li>Plan: Formulate an action plan using blocks<\/li>\n<li>Do: The agent executes it<\/li>\n<li>Check: Observe the results in the world<\/li>\n<li>Act: Modify the blocks and try again<\/li>\n<\/ul>\n<p>We believe that by repeating this flow many times in a short period using &#8220;Block Coding \u00d7 Agent,&#8221; learners can naturally acquire the mindset of continuous improvement.<\/p>\n<h2>Future Challenges<\/h2>\n<p>Implementing this also revealed several challenges.<\/p>\n<ol>\n<li>Identification of multiple players<br \/>\nWhen multiple people are connected to the same server, it is necessary to specify which player&#8217;s agent is being controlled.<br \/>\nCurrently, player names are registered and identified upon connection, but we want to implement more robust UUID management.<\/li>\n<li>Command execution timing<br \/>\nBecause TurboWarp evaluates blocks all at once, commands can sometimes get backlogged on the Minecraft side.<br \/>\nIn the future, we would like to introduce queue processing to execute commands at regular intervals.<\/li>\n<li>Security and permission management<br \/>\nGiven that a WebSocket is opened, we are carefully considering the extent of permissions to grant.<br \/>\nFor now, we are assuming operation in a closed environment such as a local network classroom.<\/li>\n<\/ol>\n<h2>Everything Handled Entirely on the Plugin Side<\/h2>\n<p>Based on these challenges, our design policy is to &#8220;keep everything self-contained within the Paper plugin.&#8221;<br \/>\nThere is no need to set up an external server or Node.js; introducing a single twbridge plugin ensures all of the following components are ready:<\/p>\n<ul>\n<li>WebSocket server (reception endpoint for commands from TurboWarp)<\/li>\n<li>Hosting of extension (.js) files<\/li>\n<li>Command execution and agent management within the Paper server<\/li>\n<\/ul>\n<p>This has kept the setup to an absolute minimum.<br \/>\nSimply drop twbridge.jar into Paper&#8217;s plugins\/ directory and restart. The TurboWarp extension URL will appear in the console, and you are ready to go by specifying that URL in TurboWarp&#8217;s &#8220;Add Extension&#8221; menu.<\/p>\n<p><a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/11\/5caee340509a124d4bc58cfdebb64dc4.jpg\"><img decoding=\"async\" class=\"aligncenter size-large wp-image-2339\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/11\/5caee340509a124d4bc58cfdebb64dc4-1024x547.jpg\" alt=\"turbowarp and agent for Minecraft Paper\" width=\"1024\" height=\"547\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/11\/5caee340509a124d4bc58cfdebb64dc4-1024x547.jpg 1024w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/11\/5caee340509a124d4bc58cfdebb64dc4-300x160.jpg 300w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/11\/5caee340509a124d4bc58cfdebb64dc4-768x410.jpg 768w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/11\/5caee340509a124d4bc58cfdebb64dc4-1536x820.jpg 1536w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/11\/5caee340509a124d4bc58cfdebb64dc4-530x283.jpg 530w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/11\/5caee340509a124d4bc58cfdebb64dc4-565x302.jpg 565w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/11\/5caee340509a124d4bc58cfdebb64dc4-710x379.jpg 710w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/11\/5caee340509a124d4bc58cfdebb64dc4-725x387.jpg 725w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/11\/5caee340509a124d4bc58cfdebb64dc4.jpg 1917w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<h2>Future Expansion Plans<\/h2>\n<p>As our next steps, we plan to add the following blocks:<\/p>\n<ul>\n<li>Movement (forward, backward, vertical movement)<\/li>\n<li>Turning (turn right, turn left, 180\u00b0 turn)<\/li>\n<li>Block manipulation (place \/ break)<\/li>\n<li>Conditionals and loops<\/li>\n<li>Block detection (ahead \/ below)<\/li>\n<\/ul>\n<p>By implementing these step-by-step, we ultimately aim to achieve an operational feel close to MakeCode&#8217;s agent control blocks.<br \/>\nFurthermore, we are also conceptualizing &#8220;two-way communication&#8221; to send agent status back to the TurboWarp side via WebSockets.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In our previous article, &quot;Reproducing the Minecraft: Education Edition &#8220;Block Coding \u00d7 Agent (Worki [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":2339,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"en_US","_original_post":"https:\/\/donguri3.net\/?p=2338","footnotes":""},"categories":[1168],"tags":[387,935,915,836,876,881,918,917,930,931,10,310,179,106,934,933],"class_list":["post-5246","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-minecraft","tag-java","tag-javaminecraft","tag-makecode","tag-minecraft","tag-papermc","tag-pdca","tag-scratch","tag-turbowarp","tag-websocket","tag-931","tag-server","tag-310","tag-179","tag-106","tag-934","tag-ict","en-US"],"_links":{"self":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts\/5246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/comments?post=5246"}],"version-history":[{"count":1,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts\/5246\/revisions"}],"predecessor-version":[{"id":5249,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts\/5246\/revisions\/5249"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/media\/2339"}],"wp:attachment":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/media?parent=5246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/categories?post=5246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/tags?post=5246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}