[{"data":1,"prerenderedAt":407},["ShallowReactive",2],{"navigation_docs":3,"-how-to-connect-an-agent":148,"-how-to-connect-an-agent-surround":402},[4,21,62,108],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":20},"Tutorials","i-lucide-graduation-cap","\u002Ftutorials","1.tutorials",[10,15],{"title":11,"path":12,"stem":13,"icon":14},"Your first texture","\u002Ftutorials\u002Ffirst-texture","1.tutorials\u002F1.first-texture","i-lucide-sprout",{"title":16,"path":17,"stem":18,"icon":19},"Grow a crop through its stages","\u002Ftutorials\u002Fgrowth-stages","1.tutorials\u002F2.growth-stages","i-lucide-wheat",false,{"title":22,"icon":23,"path":24,"stem":25,"children":26,"page":20},"How-to guides","i-lucide-wrench","\u002Fhow-to","2.how-to",[27,32,37,42,47,52,57],{"title":28,"path":29,"stem":30,"icon":31},"Install TextureScript","\u002Fhow-to\u002Finstall","2.how-to\u002F1.install","i-lucide-download",{"title":33,"path":34,"stem":35,"icon":36},"Compare a crop with vanilla","\u002Fhow-to\u002Fcompare-with-vanilla","2.how-to\u002F2.compare-with-vanilla","i-lucide-columns-2",{"title":38,"path":39,"stem":40,"icon":41},"Connect an agent","\u002Fhow-to\u002Fconnect-an-agent","2.how-to\u002F3.connect-an-agent","i-lucide-bot",{"title":43,"path":44,"stem":45,"icon":46},"Hand-edit a growth stage","\u002Fhow-to\u002Fhand-edit-a-stage","2.how-to\u002F4.hand-edit-a-stage","i-lucide-pencil",{"title":48,"path":49,"stem":50,"icon":51},"Turn a PNG into a grid","\u002Fhow-to\u002Fimport-a-png","2.how-to\u002F5.import-a-png","i-lucide-file-image",{"title":53,"path":54,"stem":55,"icon":56},"Prove a fix stayed in its region","\u002Fhow-to\u002Fprove-a-fix","2.how-to\u002F6.prove-a-fix","i-lucide-diff",{"title":58,"path":59,"stem":60,"icon":61},"Keep game assets out of git","\u002Fhow-to\u002Fkeep-game-assets-out","2.how-to\u002F7.keep-game-assets-out","i-lucide-shield-check",{"title":63,"icon":64,"path":65,"stem":66,"children":67,"page":20},"Reference","i-lucide-book-open","\u002Freference","3.reference",[68,73,78,83,88,93,98,103],{"title":69,"path":70,"stem":71,"icon":72},"Commands","\u002Freference\u002Fcommands","3.reference\u002F1.commands","i-lucide-terminal",{"title":74,"path":75,"stem":76,"icon":77},"Palette files","\u002Freference\u002Fpalette-files","3.reference\u002F2.palette-files","i-lucide-palette",{"title":79,"path":80,"stem":81,"icon":82},"Grid files","\u002Freference\u002Fgrid-files","3.reference\u002F3.grid-files","i-lucide-grid-3x3",{"title":84,"path":85,"stem":86,"icon":87},"Stages files","\u002Freference\u002Fstages-files","3.reference\u002F4.stages-files","i-lucide-layers",{"title":89,"path":90,"stem":91,"icon":92},"Scene files","\u002Freference\u002Fscene-files","3.reference\u002F5.scene-files","i-lucide-box",{"title":94,"path":95,"stem":96,"icon":97},"Lint rules","\u002Freference\u002Flint-rules","3.reference\u002F6.lint-rules","i-lucide-list-checks",{"title":99,"path":100,"stem":101,"icon":102},"MCP server","\u002Freference\u002Fmcp-server","3.reference\u002F7.mcp-server","i-lucide-plug",{"title":104,"path":105,"stem":106,"icon":107},"Environment","\u002Freference\u002Fenvironment","3.reference\u002F8.environment","i-lucide-settings",{"title":109,"icon":110,"path":111,"stem":112,"children":113,"page":20},"Explanation","i-lucide-lightbulb","\u002Fexplanation","4.explanation",[114,119,123,128,133,138,143],{"title":115,"path":116,"stem":117,"icon":118},"Textures as text","\u002Fexplanation\u002Ftextures-as-text","4.explanation\u002F1.textures-as-text","i-lucide-type",{"title":120,"path":121,"stem":122,"icon":77},"Colour from two anchors","\u002Fexplanation\u002Fcolour","4.explanation\u002F2.colour",{"title":124,"path":125,"stem":126,"icon":127},"Measured conventions","\u002Fexplanation\u002Fmeasured-conventions","4.explanation\u002F3.measured-conventions","i-lucide-ruler",{"title":129,"path":130,"stem":131,"icon":132},"Growth stages as maps","\u002Fexplanation\u002Fgrowth-stages","4.explanation\u002F4.growth-stages","i-lucide-chart-no-axes-column-increasing",{"title":134,"path":135,"stem":136,"icon":137},"The 3D view","\u002Fexplanation\u002Fthe-3d-view","4.explanation\u002F5.the-3d-view","i-lucide-rotate-3d",{"title":139,"path":140,"stem":141,"icon":142},"No game assets","\u002Fexplanation\u002Fno-game-assets","4.explanation\u002F6.no-game-assets","i-lucide-shield",{"title":144,"path":145,"stem":146,"icon":147},"Architecture","\u002Fexplanation\u002Farchitecture","4.explanation\u002F7.architecture","i-lucide-boxes",{"id":149,"title":38,"body":150,"description":395,"extension":396,"links":397,"meta":398,"navigation":399,"path":39,"seo":400,"stem":40,"__hash__":401},"docs\u002F2.how-to\u002F3.connect-an-agent.md",{"type":151,"value":152,"toc":389},"minimark",[153,166,171,174,191,194,203,209,221,227,231,242,246,249,258,261,351,380,385],[154,155,156,157,161,162,165],"p",{},"TextureScript is built so that an agent can draw textures with it. An agent needs two things: the\n",[158,159,160],"strong",{},"authoring skill",", which teaches it how to draw vanilla-style textures, and the ",[158,163,164],{},"tools",",\neither through a shell or over MCP.",[167,168,170],"h2",{"id":169},"give-it-the-skill","Give it the skill",[154,172,173],{},"Export the skill to a folder the agent can read:",[175,176,181],"pre",{"className":177,"code":178,"language":179,"meta":180,"style":180},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","texturescript skill my-skill\n","sh","",[182,183,184],"code",{"__ignoreMap":180},[185,186,189],"span",{"class":187,"line":188},"line",1,[185,190,178],{},[154,192,193],{},"Then extract the vanilla reference textures it mentions from your own Minecraft jar:",[175,195,197],{"className":177,"code":196,"language":179,"meta":180,"style":180},"texturescript fetch --skill my-skill\n",[182,198,199],{"__ignoreMap":180},[185,200,201],{"class":187,"line":188},[185,202,196],{},[154,204,205,208],{},[182,206,207],{},"fetch --check --skill my-skill"," reports missing or changed references without writing. If no\njar is available, the agent can still use the authored corn example; it should say that the\nvanilla comparison was unavailable.",[210,211,212,213,216,217,220],"warning",{},"The fetched references are game textures. ",[182,214,215],{},"fetch"," refuses to write them where git would track\nthem. Do not commit or publish them. See ",[218,219,58],"a",{"href":59},".",[154,222,223,224,220],{},"For Claude Code, put the exported folder where your skills live, for example\n",[182,225,226],{},".claude\u002Fskills\u002Ftexturescript\u002F",[167,228,230],{"id":229},"give-it-the-tools-over-a-shell","Give it the tools over a shell",[154,232,233,234,237,238,241],{},"An agent with a shell runs ",[182,235,236],{},"texturescript"," like you do. Most commands take ",[182,239,240],{},"--json"," for output\nthat is easier to parse.",[167,243,245],{"id":244},"give-it-the-tools-over-mcp","Give it the tools over MCP",[154,247,248],{},"An agent without a shell can use the MCP server, which speaks MCP on stdio:",[175,250,252],{"className":177,"code":251,"language":179,"meta":180,"style":180},"claude mcp add texturescript -- texturescript mcp\n",[182,253,254],{"__ignoreMap":180},[185,255,256],{"class":187,"line":188},[185,257,251],{},[154,259,260],{},"Other clients take the same command:",[175,262,266],{"className":263,"code":264,"language":265,"meta":180,"style":180},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{ \"mcpServers\": { \"texturescript\": { \"command\": \"texturescript\", \"args\": [\"mcp\"] } } }\n","json",[182,267,268],{"__ignoreMap":180},[185,269,270,274,277,281,284,287,290,292,295,297,299,301,303,307,309,311,313,316,318,321,323,326,328,330,333,335,338,340,343,346,348],{"class":187,"line":188},[185,271,273],{"class":272},"sMK4o","{",[185,275,276],{"class":272}," \"",[185,278,280],{"class":279},"spNyl","mcpServers",[185,282,283],{"class":272},"\"",[185,285,286],{"class":272},":",[185,288,289],{"class":272}," {",[185,291,276],{"class":272},[185,293,236],{"class":294},"sBMFI",[185,296,283],{"class":272},[185,298,286],{"class":272},[185,300,289],{"class":272},[185,302,276],{"class":272},[185,304,306],{"class":305},"sbssI","command",[185,308,283],{"class":272},[185,310,286],{"class":272},[185,312,276],{"class":272},[185,314,236],{"class":315},"sfazB",[185,317,283],{"class":272},[185,319,320],{"class":272},",",[185,322,276],{"class":272},[185,324,325],{"class":305},"args",[185,327,283],{"class":272},[185,329,286],{"class":272},[185,331,332],{"class":272}," [",[185,334,283],{"class":272},[185,336,337],{"class":315},"mcp",[185,339,283],{"class":272},[185,341,342],{"class":272},"]",[185,344,345],{"class":272}," }",[185,347,345],{"class":272},[185,349,350],{"class":272}," }\n",[154,352,353,354,357,358,361,362,365,366,369,370,373,374,377,378,220],{},"The server offers ",[182,355,356],{},"render",", ",[182,359,360],{},"lint"," and ",[182,363,364],{},"shoot",", and returns their pictures as images the agent\ncan look at. It also serves the skill as resources, starting at ",[182,367,368],{},"texturescript:\u002F\u002Fskill\u002FSKILL.md",".\nRelative paths are relative to the directory the server starts in, so start it in your project.\nPass ",[182,371,372],{},"--jar PATH"," or ",[182,375,376],{},"--no-jar"," to choose the vanilla blocks for ",[182,379,364],{},[154,381,382,383,220],{},"The tools and their parameters are listed in ",[218,384,99],{"href":100},[386,387,388],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":180,"searchDepth":390,"depth":390,"links":391},2,[392,393,394],{"id":169,"depth":390,"text":170},{"id":229,"depth":390,"text":230},{"id":244,"depth":390,"text":245},"Give an AI agent the authoring skill, the vanilla references and the MCP tools.","md",null,{},{"icon":41},{"title":38,"description":395},"nIgsqtuDXom3_7H7HnGhULEYEWGWtcPZEjQYjvDb7Qg",[403,405],{"title":33,"path":34,"stem":35,"description":404,"icon":36,"children":-1},"Write a scene that plants your crop beside vanilla blocks, then view it live or screenshot it.",{"title":43,"path":44,"stem":45,"description":406,"icon":46,"children":-1},"Redraw one generated stage when a pixel has to move, and keep your edit when you regenerate.",1791722218306]