Agent Wall
Agent builds a wall @showdialog
Instruct your 🤖 Agent 🤖 to build a wall protecting your land from monsters.
On chat command
Change the ||player:on chat command||
block on the workspace from “run” to “wall”
player.onChat("wall", function () {
})
Position the Agent
The first thing we should do is teleport our Agent to our player. And then we can move the Agent a few paces away from our player to start building the wall.
From the ||agent:Agent||
category, drag out an ||agent:agent teleport to player||
block and drop into the ||player:on chat command||
block. Then drag an ||agent:agent move forward||
block out of the Toolbox and drop after the ||agent:agent teleport to player||
block. In the ||agent:agent move forward||
block, change the number of blocks from 1 to 4.
player.onChat("wall", function () {
agent.teleportToPlayer()
agent.move(FORWARD, 4)
})
Set Agent properties
Now we need to set some ⚡ properties ⚡ for our Agent so they will place blocks when they move, and also automatically destroy any obstacles that might be in their way.
From the ||agent:Agent||
category, drag out an ||agent:agent place on move||
block and drop into the end of the ||player:on chat command||
block. Then click on the off switch to turn it to on.
Drag out another ||agent:agent place on move||
block from the Toolbox and drop after the previous one. In this one, click on the ||agent:place on move||
drop-down menu and select ||agent:destroy obstacles||
. Then click on the off switch to turn it to on.
player.onChat("wall", function () {
agent.teleportToPlayer()
agent.move(FORWARD, 4)
agent.setAssist(PLACE_ON_MOVE, true)
agent.setAssist(DESTROY_OBSTACLES, true)
})
Give the Agent blocks
We need to give our Agent some building 🧱 materials 🧱 to build the wall with.
From the ||agent:Agent||
category, drag out an ||agent:agent set block or item||
block and drop it at the end of our code in the ||player:on chat command||
block.
In the ||agent:agent set block or item||
block, click on the Grass Block drop-down menu and select a block to build the wall with (like Mossy Stone Bricks). And then change the count from 1 to 4, just to give us enough blocks for a row.
player.onChat("wall", function () {
agent.teleportToPlayer()
agent.move(FORWARD, 4)
agent.setAssist(PLACE_ON_MOVE, true)
agent.setAssist(DESTROY_OBSTACLES, true)
agent.setItem(MOSSY_STONE_BRICKS, 4, 1)
})
Move and Build
Now let’s move our Agent to place blocks while they go.
From the ||agent:Agent||
category, drag out an ||agent:agent move forward||
block and drop it at the end of our code. In the ||agent:agent move forward||
block, change the number of blocks from 1 to 3.
player.onChat("wall", function () {
agent.teleportToPlayer()
agent.move(FORWARD, 4)
agent.setAssist(PLACE_ON_MOVE, true)
agent.setAssist(DESTROY_OBSTACLES, true)
agent.setItem(MOSSY_STONE_BRICKS, 4, 1)
agent.move(FORWARD, 3)
})
Move to the next row
At the end of the row, let’s move our Agent ↑ up to be ready to build the next row.
From the ||agent:Agent||
category, drag out another ||agent:agent move forward||
block and drop it after the previous one. In this block, click on the ||agent:forward||
drop-down menu and select ||agent:up||
. This will move our Agent up by one and place the last block completing our row.
player.onChat("wall", function () {
agent.teleportToPlayer()
agent.move(FORWARD, 4)
agent.setAssist(PLACE_ON_MOVE, true)
agent.setAssist(DESTROY_OBSTACLES, true)
agent.setItem(MOSSY_STONE_BRICKS, 4, 1)
agent.move(FORWARD, 3)
agent.move(UP, 1)
})
Test our code
Let’s test our code! Press the 🟩 green 🟩 play button to run your code. Move to a flat area in the world and press “t” to open the chat window in Minecraft and type “wall” to start your Agent building a wall. How did it work?
Make the wall higher!
The first thing you may have noticed, is that our wall is only 1 block high! Let’s add some additional rows. And we can do this with a ⭮ Repeat ⭮ loop to make our code more efficient.
From the ||loops:Loops||
category, drag a ||loops:repeat 4 times||
block out and drop it into the ||player:on chat command||
block, right after the ||agent:agent destroy obstacles||
block, so that the ||agent:agent set block||
block and the two ||agent:agent move||
blocks are inside the ||loops:repeat||
loop.
player.onChat("wall", function () {
agent.teleportToPlayer()
agent.move(FORWARD, 4)
agent.setAssist(PLACE_ON_MOVE, true)
agent.setAssist(DESTROY_OBSTACLES, true)
for (let index = 0; index < 4; index++) {
agent.setItem(MOSSY_STONE_BRICKS, 4, 1)
agent.move(FORWARD, 3)
agent.move(UP, 1)
}
})
Turn the Agent
We also need to make sure our Agent is facing the right direction to build the next row in our wall.
From the ||agent:Agent||
Toolbox drawer, drag 2 ||agent:agent turn left||
blocks out and drop them into the ||loops:repeat||
block at the end after the ||agent:agent move up||
block.
player.onChat("wall", function () {
agent.teleportToPlayer()
agent.move(FORWARD, 4)
agent.setAssist(PLACE_ON_MOVE, true)
agent.setAssist(DESTROY_OBSTACLES, true)
for (let index = 0; index < 4; index++) {
agent.setItem(MOSSY_STONE_BRICKS, 4, 1)
agent.move(FORWARD, 3)
agent.move(UP, 1)
agent.turn(LEFT_TURN)
agent.turn(LEFT_TURN)
}
})
Run our code
Let’s test our code again! Press the 🟩 green 🟩 play button to run your code. Move to a flat area in the world and press “t” to open the chat window and type “wall” to start your Agent building a wall.
Support different wall dimensions
You should have seen your Agent building a wall 4 blocks wide and 4 blocks high. Great job! But what if you want a wall 6 blocks wide and 10 blocks high? Or some other dimension? Let’s add some code that will support different widths and heights.
In the ||player:on chat command wall||
block, press the plus (+) icon twice to expand the block to show two numbers. Click on the drop-down num1 menu and select Rename variable… Type width as the new variable name. This will represent how wide we want our wall to be.
Then click on the drop-down num2 menu and select Rename variable… Type height as the new variable name. This will represent how high we want our wall.
player.onChat("wall", function (width, height) {
agent.teleportToPlayer()
agent.move(FORWARD, 4)
agent.setAssist(PLACE_ON_MOVE, true)
agent.setAssist(DESTROY_OBSTACLES, true)
for (let index = 0; index < 4; index++) {
agent.setItem(MOSSY_STONE_BRICKS, 4, 1)
agent.move(FORWARD, 3)
agent.move(UP, 1)
agent.turn(LEFT_TURN)
agent.turn(LEFT_TURN)
}
})
Set width number of blocks
From the ||variables:Variables||
category, drag out a ||variables:width||
variable block and drop it into the ||agent:agent set block or item||
block in the count field replacing 4. This will give our agent enough blocks to build the width of our wall.
player.onChat("wall", function (width, height) {
agent.teleportToPlayer()
agent.move(FORWARD, 4)
agent.setAssist(PLACE_ON_MOVE, true)
agent.setAssist(DESTROY_OBSTACLES, true)
for (let index = 0; index < 4; index++) {
agent.setItem(MOSSY_STONE_BRICKS, width, 1)
agent.move(FORWARD, 3)
agent.move(UP, 1)
agent.turn(LEFT_TURN)
agent.turn(LEFT_TURN)
}
})
Move Agent forward
Now we need to move the Agent forward one less than the full width of our wall - because remember, we move up one at the end of the row.
From the ||math:Math||
Toolbox drawer, drag a ||math:(0 - 0)||
block out and drop into the ||agent:agent move forward||
block in our ||loops:repeat||
loop, replacing the 3.
From the ||variables:Variables||
category, drag out another ||variables:width||
variable block and drop it into the first field of the ||math:(0 - 0)||
block replacing the 0. In the second field, type a 1 replacing the second 0.
player.onChat("wall", function (width, height) {
agent.teleportToPlayer()
agent.move(FORWARD, 4)
agent.setAssist(PLACE_ON_MOVE, true)
agent.setAssist(DESTROY_OBSTACLES, true)
for (let index = 0; index < 4; index++) {
agent.setItem(MOSSY_STONE_BRICKS, width, 1)
agent.move(FORWARD, width - 1)
agent.move(UP, 1)
agent.turn(LEFT_TURN)
agent.turn(LEFT_TURN)
}
})
Set the height
Finally we just need to set the number of times our Agent will build a row in our wall.
From the ||variables:Variables||
category, drag out a ||variables:height||
variable block and drop it into the ||loops:repeat||
block replacing the 4.
player.onChat("wall", function (width, height) {
agent.teleportToPlayer()
agent.move(FORWARD, 4)
agent.setAssist(PLACE_ON_MOVE, true)
agent.setAssist(DESTROY_OBSTACLES, true)
for (let index = 0; index < height; index++) {
agent.setItem(MOSSY_STONE_BRICKS, width, 1)
agent.move(FORWARD, width - 1)
agent.move(UP, 1)
agent.turn(LEFT_TURN)
agent.turn(LEFT_TURN)
}
})
Run your code
Press the 🟩 green 🟩 play button to run your code. Press “t” to open the chat window in Minecraft, move to a flat location where you want your Agent to start building a wall, and type “wall 6 10” (or use different numbers) to start your Agent building a wall 6 blocks wide by 10 blocks high (or whatever dimensions you specify).
⭐ Great job!! ⭐ How big of a wall can your Agent build?