feat(informer): ✨ various improvements and fixes
Feat: - Letter aliases for subcommands. - Most recent command when no input. - Start player relative info stub. Fix: - Player username not shown.
This commit is contained in:
		| @@ -331,7 +331,7 @@ function command(username, message) { | ||||
|                     } | ||||
|                     break | ||||
|                 case "info": | ||||
|                     cfg.plugins.informer.command(message_parts.splice(1)) | ||||
|                     cfg.plugins.informer.command(message_parts.splice(1), player) | ||||
|                     break | ||||
|                 // case "use": | ||||
|                 //     bot.useOn(bot.nearestEntity()) | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| let cfg | ||||
| let bot | ||||
| let mcData | ||||
| // import v from 'vec3' | ||||
| const v = require('vec3') | ||||
|  | ||||
| function block(pos) { | ||||
| @@ -51,34 +52,47 @@ function item( | ||||
| } | ||||
|  | ||||
| function entity(name) { | ||||
|     const entity = bot.nearestEntity((entity) => { | ||||
|     const entity = typeof name === "string" ? bot.nearestEntity((entity) => { | ||||
|         const ename = entity.name || entity.username | ||||
|         return name && ename ? ename == name : true | ||||
|     }) | ||||
|     }) : entity | ||||
|     console.log(entity) | ||||
|     if (!entity) { | ||||
|         cfg.quiet || bot.chat("no entity") | ||||
|         return entity | ||||
|     } | ||||
|     let info = [entity.type, entity.name || entity.username] | ||||
|     let info = [entity.type, entity.username || entity.name] | ||||
|     // TODO various info depending on the type of entity; player, villager, etc | ||||
|     if (entity.metadata) info.push("len: " + entity.metadata.length) | ||||
|     cfg.quiet || bot.chat(info.join("; ")) | ||||
|     return entity | ||||
| } | ||||
|  | ||||
| function command(message_parts) { | ||||
| function command(message_parts, player) { | ||||
|     if (message_parts.length > 0) { | ||||
|         cfg.info.recentCommand = message_parts | ||||
|     } | ||||
|     switch (message_parts.length) { | ||||
|         case 0: | ||||
|             // TODO most recent command? | ||||
|             block() | ||||
|             if (cfg.info.recentCommand) { | ||||
|                 command(cfg.info.recentCommand, 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) | ||||
|             } | ||||
|             break; | ||||
|         case 1: | ||||
|             switch (message_parts[0]) { | ||||
|                 case "i": | ||||
|                 case "item": | ||||
|                     item() | ||||
|                     break | ||||
|                 case "e": | ||||
|                 case "entity": | ||||
|                     entity() | ||||
|                     break | ||||
|                 case "b": | ||||
|                 case "block": | ||||
|                 default: | ||||
|                     block() | ||||
| @@ -89,9 +103,11 @@ function command(message_parts) { | ||||
|  | ||||
|         case 2: | ||||
|             switch (message_parts[0]) { | ||||
|                 case "i": | ||||
|                 case "item": | ||||
|                     item(message_parts[1]) | ||||
|                     break | ||||
|                 case "e": | ||||
|                 case "entity": | ||||
|                 default: | ||||
|                     entity(message_parts[1]) | ||||
| @@ -101,6 +117,7 @@ function command(message_parts) { | ||||
|  | ||||
|         case 4: | ||||
|             switch (message_parts[0]) { | ||||
|                 case "b": | ||||
|                 case "block": | ||||
|                 default: | ||||
|                     block(message_parts.slice(1)) | ||||
| @@ -110,6 +127,7 @@ function command(message_parts) { | ||||
|             break; | ||||
|  | ||||
|         default: | ||||
|             cfg.quiet || bot.chat("info: unknown command") | ||||
|             break; | ||||
|     } | ||||
| } | ||||
| @@ -119,6 +137,7 @@ const load = (config) => { | ||||
|     bot = cfg.bot | ||||
|     cfg.info = { | ||||
|         quiet: cfg.quiet, | ||||
|         recentCommand: null, | ||||
|     } | ||||
|     mcData = bot.mcData || (bot.mcData = require('minecraft-data')(bot.version)) | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user