| | 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; |
| | } |
| | } |
| | } |
| | } |
| | } |
| | } |
| |
|