Agent Wall

Agent builds a wall @showdialog

Instruct your Agent to build a wall protecting your land from monsters. Agent wall

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 lets 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, lets 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

Lets 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! Lets 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

Lets 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? Lets 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?