Minecraft – How to use the /fill command to fill multiple areas

minecraft-commandsminecraft-java-edition

How do you use the /fill command to fill multiple things? For example, how do you use the /fill command to fill stone and cobblestone, all in random places inside where you set the coordinates? I'm making a prison game where there is a mine which refills itself with random ores and stone and stuff when you hit a button.

Best Answer

What you are asking for isn't a simple /fill, but a system that can generate a cube of stone filled with ores. Imagine the cube just being a bunch of stacked layers that each have been randomly filled with ores.

Summon an armorstand in the bottom corner at the -x -z side of the mine and name it `Layer

/summon ArmorStand x y z {CustomName:Layer,NoGravity:1,Invisible:1,Marker:1}

This will be the pointer of the current layer.
We will also need some armorstands to mark the ores

/execute @e[type=ArmorStand,name=Layer] ~ ~ ~ summon ArmorStand ~ ~ ~ {CustomName:Ore,NoGravity:1,Invisible:1,Marker:1}

You can name some of the armorstands GoldOre or DiamondOre ect for diffrent ores (The more armorstands summoned, the more ores per layer)
We will first of all fill the layer with stone. (our mine will be 11*11 in this example)

/execute @e[type=ArmorStand,name=Layer] ~ ~ ~ fill ~ ~ ~ ~10 ~ ~10 stone


now spread the armorstands randomly along the layer

/execute @e[type=ArmorStand,name=Layer] ~ ~ ~ spreadplayers ~5.5 ~5.5 0 5 false @e[type=ArmorStand,r=2,name=!Layer]

make the Ore armorstands place some ores below them (do this for all ore types)

/execute @e[type=ArmorStand,name=Ore] ~ ~ ~ setblock ~ ~-1 ~ coal_ore

Tp The ore armorstands to Layer

/tp @e[type=ArmorStand,name=Ore] @e[type=ArmorStand,name=Layer]

and finally tp Layer one block up and repeat

/tp @e[type=ArmorStand,name=Layer] ~ ~1 ~