|
|
async function givePlacedItemBack(bot, name, position) { |
|
|
await bot.chat("/gamerule doTileDrops false"); |
|
|
|
|
|
const history = []; |
|
|
for (let i = 0; i < name.length; i++) { |
|
|
await givePlacedItemBackSingle(bot, name[i], position[i]); |
|
|
} |
|
|
await bot.chat("/gamerule doTileDrops true"); |
|
|
|
|
|
async function givePlacedItemBackSingle(bot, name, position) { |
|
|
bot.chat(`/give bot ${name} 1`); |
|
|
const x = Math.floor(position.x); |
|
|
const y = Math.floor(position.y); |
|
|
const z = Math.floor(position.z); |
|
|
|
|
|
const size = 3; |
|
|
for (let dx = -size; dx <= size; dx++) { |
|
|
for (let dy = -size; dy <= size; dy++) { |
|
|
for (let dz = -size; dz <= size; dz++) { |
|
|
const block = bot.blockAt(new Vec3(x + dx, y + dy, z + dz)); |
|
|
if ( |
|
|
block?.name === name && |
|
|
!history.includes(block.position) |
|
|
) { |
|
|
await bot.chat( |
|
|
`/setblock ${x + dx} ${y + dy} ${ |
|
|
z + dz |
|
|
} air destroy` |
|
|
); |
|
|
history.push(block.position); |
|
|
await bot.waitForTicks(20); |
|
|
return; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|