diff --git a/lib/plugins/informer.js b/lib/plugins/informer.js index c077f55..c14dc80 100644 --- a/lib/plugins/informer.js +++ b/lib/plugins/informer.js @@ -14,13 +14,21 @@ let cfg = { quiet: null, bot: bot } -function block(pos) { - const block = pos ? bot.blockAt(v(pos)) : bot.blockAtCursor() - console.log(block, block && block.getProperties()) + +function isVec3(vec) { + return this.x && this.y && this.z +} + +function block(entity = bot.entity, pos = entity?.position?.offset(0, -1, 0)) { + console.assert(pos || entity) + const block = isVec3(pos) ? bot.blockAt(v(pos)) + : pos + console.log(block, block?.getProperties && block.getProperties()) if (!block) { quiet || bot.chat("empty block") return block } + bot.lookAt(block?.position) let info = [block.type, block.name] if (block.metadata) info.push(Object.entries(block.getProperties())) quiet || bot.chat(info.join(": ")) @@ -89,7 +97,7 @@ function command(message_parts, player) { } else { // TODO dispatch on instance of entity, block, etc.. // TODO have the logic inside the function or with a utility function - block(player.position || player?.entity.position || null) + block() } break; case 1: @@ -106,6 +114,9 @@ function command(message_parts, player) { case "entity": entity() break + case "me": + block(player) + break case "b": case "block": default: @@ -134,7 +145,7 @@ function command(message_parts, player) { case "b": case "block": default: - block(message_parts.slice(1)) + block(undefined, message_parts.slice(1)) break; }