refactor(mover): 🚚 move commands inside mover plugin itself
This reduces the code inside the command plugin. Most of the logic was only relevant to moving anyway. Command aliases like `come` and `follow` still remain in command plugin.
This commit is contained in:
		| @@ -219,100 +219,7 @@ function command(username, message) { | ||||
|                     break; | ||||
|                 case "move": | ||||
|                 case "go": | ||||
|                     // TODO move most of the subcommands into mover.js? | ||||
|                     const message_parts2 = message_parts.slice(2) | ||||
|                     switch (message_parts[1]) { | ||||
|                         case "init": | ||||
|                             cfg.plugins.mover.initMoves() | ||||
|                             break | ||||
|                         case "near": | ||||
|                             // message_parts2 = message_parts.slice(2) | ||||
|                             switch (message_parts2.length) { | ||||
|                                 case 0: | ||||
|                                     cfg.plugins.mover.moveNear(bot.nearestEntity().position) | ||||
|                                     break | ||||
|                                 case 1: | ||||
|                                     switch (message_parts2[0]) { | ||||
|                                         case "me": | ||||
|                                             if (player) { | ||||
|                                                 cfg.plugins.mover.moveNear(player.position) | ||||
|                                             } else { | ||||
|                                                 cfg.quiet || bot.chat("can't see you") | ||||
|                                             } | ||||
|                                             break; | ||||
|  | ||||
|                                         default: | ||||
|                                             const aPlayer = bot.players[message_parts[2]] ? bot.players[message_parts[2]].entity : null | ||||
|                                             if (aPlayer) { | ||||
|                                                 cfg.plugins.mover.moveNear(aPlayer.position) | ||||
|                                             } else { | ||||
|                                                 cfg.quiet || bot.chat(`can't see ${message_parts[2]}`) | ||||
|                                             } | ||||
|                                             break; | ||||
|                                     } | ||||
|                                     break | ||||
|                                 case 2: | ||||
|                                     //TODO this isn't near | ||||
|                                     cfg.plugins.mover.moveXZ(message_parts2) | ||||
|                                     break | ||||
|                                 case 3: | ||||
|                                     //TODO more checks | ||||
|                                     cfg.plugins.mover.moveNear(message_parts2) | ||||
|                                     break | ||||
|                                 default: | ||||
|                                     break | ||||
|                             } | ||||
|                             break | ||||
|  | ||||
|                         case "follow": | ||||
|                             // message_parts2 = message_parts.slice(2) | ||||
|                             switch (message_parts2.length) { | ||||
|                                 case 0: | ||||
|                                     cfg.plugins.mover.follow(bot.nearestEntity()) | ||||
|                                     break | ||||
|                                 case 1: | ||||
|                                     let dist = 3 | ||||
|                                     switch (message_parts2[0]) { | ||||
|                                         case "close": | ||||
|                                             dist = 1 | ||||
|                                         case "me": | ||||
|                                         case "once": | ||||
|                                             if (player) { | ||||
|                                                 cfg.plugins.mover.follow(player, message_parts2[0] === "me", dist) | ||||
|                                             } else { | ||||
|                                                 cfg.quiet || bot.chat("can't see you") | ||||
|                                             } | ||||
|                                             break; | ||||
|  | ||||
|                                         default: | ||||
|                                             const aPlayer = bot.players[message_parts[2]] ? bot.players[message_parts[2]].entity : null | ||||
|                                             if (aPlayer) { | ||||
|                                                 cfg.plugins.mover.follow(aPlayer) | ||||
|                                             } else { | ||||
|                                                 cfg.quiet || bot.chat(`can't see ${message_parts[2]}`) | ||||
|                                             } | ||||
|                                             break; | ||||
|                                     } | ||||
|                                     break | ||||
|                                 // case 2: | ||||
|                                 // bot.lookAt({}) goalxz? | ||||
|                                 // break | ||||
|                                 // case 3: | ||||
|                                 //TODO more checks | ||||
|                                 // cfg.plugins.mover.moveNear(message_parts2) | ||||
|                                 // break | ||||
|                                 default: | ||||
|                                     todo() | ||||
|                                     break | ||||
|                             } | ||||
|                             break | ||||
|                         case "stop": | ||||
|                             cfg.plugins.mover.stop() | ||||
|                             break | ||||
|                         default: | ||||
|                             return todo() | ||||
|                             break; | ||||
|                     } | ||||
|                     cfg.plugins.mover.command(message_parts.slice(1), player) | ||||
|                     break; | ||||
|  | ||||
|                 case "attack": | ||||
|   | ||||
| @@ -108,6 +108,101 @@ function stop() { | ||||
|     bot.stopDigging() | ||||
| } | ||||
|  | ||||
| function command(message_parts, player) { | ||||
|     const message_parts2 = message_parts.slice(1) | ||||
|     switch (message_parts[0]) { | ||||
|         case "init": | ||||
|             initMoves() | ||||
|             break | ||||
|         case "near": | ||||
|             switch (message_parts2.length) { | ||||
|                 case 0: | ||||
|                     moveNear(bot.nearestEntity().position) | ||||
|                     break | ||||
|                 case 1: | ||||
|                     switch (message_parts2[0]) { | ||||
|                         case "me": | ||||
|                             if (player) { | ||||
|                                 moveNear(player.position) | ||||
|                             } else { | ||||
|                                 cfg.quiet || bot.chat("can't see you") | ||||
|                             } | ||||
|                             break; | ||||
|  | ||||
|                         default: | ||||
|                             const aPlayer = bot.players[message_parts2[0]] ? bot.players[message_parts2[0]].entity : null | ||||
|                             if (aPlayer) { | ||||
|                                 moveNear(aPlayer.position) | ||||
|                             } else { | ||||
|                                 cfg.quiet || bot.chat(`can't see ${message_parts2[0]}`) | ||||
|                             } | ||||
|                             break; | ||||
|                     } | ||||
|                     break | ||||
|                 case 2: | ||||
|                     //TODO this isn't near | ||||
|                     moveXZ(message_parts2) | ||||
|                     break | ||||
|                 case 3: | ||||
|                     //TODO more checks | ||||
|                     moveNear(message_parts2) | ||||
|                     break | ||||
|                 default: | ||||
|                     break | ||||
|             } | ||||
|             break | ||||
|  | ||||
|         case "follow": | ||||
|             // message_parts2 = message_parts.slice(2) | ||||
|             switch (message_parts2.length) { | ||||
|                 case 0: | ||||
|                     follow(bot.nearestEntity()) | ||||
|                     break | ||||
|                 case 1: | ||||
|                     let dist = 3 | ||||
|                     switch (message_parts2[0]) { | ||||
|                         case "close": | ||||
|                             dist = 1 | ||||
|                         case "me": | ||||
|                         case "once": | ||||
|                             if (player) { | ||||
|                                 follow(player, message_parts2[0] === "me", dist) | ||||
|                             } else { | ||||
|                                 cfg.quiet || bot.chat("can't see you") | ||||
|                             } | ||||
|                             break; | ||||
|  | ||||
|                         default: | ||||
|                             const aPlayer = bot.players[message_parts2[0]] ? bot.players[message_parts2[0]].entity : null | ||||
|                             if (aPlayer) { | ||||
|                                 follow(aPlayer) | ||||
|                             } else { | ||||
|                                 cfg.quiet || bot.chat(`can't see ${message_parts2[0]}`) | ||||
|                             } | ||||
|                             break; | ||||
|                     } | ||||
|                     break | ||||
|                 // case 2: | ||||
|                 // bot.lookAt({}) goalxz? | ||||
|                 // break | ||||
|                 // case 3: | ||||
|                 //TODO more checks | ||||
|                 // moveNear(message_parts2) | ||||
|                 // break | ||||
|                 default: | ||||
|                     cfg.quiet || bot.chat("unknown or bad command") | ||||
|                     break | ||||
|             } | ||||
|             break | ||||
|         case "stop": | ||||
|             stop() | ||||
|             break | ||||
|         default: | ||||
|             return cfg.quiet || bot.chat(`unknown command ${message_parts[0]}`) | ||||
|             break; | ||||
|     } | ||||
| } | ||||
|  | ||||
| const load = (config) => { | ||||
|     cfg = config | ||||
|     bot = cfg.bot | ||||
| @@ -133,4 +228,4 @@ const unload = () => { | ||||
|     bot.off('goal_reached', goalReached) | ||||
| } | ||||
|  | ||||
| module.exports = { load, unload, stop, initMoves, moveNear, moveXZ, moveY, follow } | ||||
| module.exports = { load, unload, command, stop, initMoves, moveNear, moveXZ, moveY, follow } | ||||
		Reference in New Issue
	
	Block a user