From 8e4eb7748fb9831ec45302c6f848e9ff7051b424 Mon Sep 17 00:00:00 2001 From: jay Date: Thu, 24 Dec 2020 09:33:08 +0500 Subject: [PATCH] style: :wheelchair: fix crlf to lf --- .vscode/launch.json | 56 +++++------ lib/plugins/eater.js | 224 +++++++++++++++++++++---------------------- lib/plugins/mover.js | 188 ++++++++++++++++++------------------ 3 files changed, 234 insertions(+), 234 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index f031871..d8105a1 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,29 +1,29 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "type": "node", - "request": "launch", - "name": "protospace", - "skipFiles": [ - "/**" - ], - "program": "${workspaceFolder}/lib/index.js", - "args": ["games.protospace.ca"] - }, - { - "type": "node", - "request": "launch", - "name": "Launch Program", - "skipFiles": [ - "/**" - ], - "program": "${workspaceFolder}/lib/index.js", - // port may need to be changed for each session - "args": ["localhost", "56901"] - } - ] +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "protospace", + "skipFiles": [ + "/**" + ], + "program": "${workspaceFolder}/lib/index.js", + "args": ["games.protospace.ca"] + }, + { + "type": "node", + "request": "launch", + "name": "Launch Program", + "skipFiles": [ + "/**" + ], + "program": "${workspaceFolder}/lib/index.js", + // port may need to be changed for each session + "args": ["localhost", "56901"] + } + ] } \ No newline at end of file diff --git a/lib/plugins/eater.js b/lib/plugins/eater.js index 225dcff..8347e7b 100644 --- a/lib/plugins/eater.js +++ b/lib/plugins/eater.js @@ -1,113 +1,113 @@ -let cfg = {} -let bot = {} -let isEating = false - -function callbackHandle(err) { - if (err) console.error(err) -} - -function eat(callback) { - isEating = true - - const foodNames = require('minecraft-data')(bot.version).foodsArray.map((item) => item.name) - - let available_food = bot.inventory - .items() - .filter((item) => foodNames.includes(item.name)) - - if (available_food.length === 0 || !available_food) { - isEating = false - return callback(new Error('No food found.')) - } - - if (cfg.eat.bannedFood.length > 0) { - available_food = available_food.filter( - (item) => !cfg.eat.bannedFood.includes(item.name) - ) - } - let priority = cfg.eat.priority - let best_food = available_food.reduce((prev, current) => (prev[priority] > current[priority]) ? prev : current) - - if (!best_food) { - isEating = false - return callback(new Error('No best food has been found.')) - } - - bot.emit('eat_start') - - bot.equip(best_food, 'hand', function (error) { - if (error) { - console.error(error) - isEating = false - bot.emit('eat_stop') - } else { - bot.consume(function (err) { - if (err) { - console.error(err) - isEating = false - bot.emit('eat_stop') - return callback(err) - } else { - isEating = false - bot.emit('eat_stop') - callback(null) - if (!bot.food === 20) eat(callbackHandle) - } - }) - } - }) -} - -function checkFood() { - console.info("eater: " - // , " status: ", !isEating - , cfg.eat.auto && "auto" - , bot.food < cfg.eat.startAt && "hungry" - , "hunger:", bot.food - , "at:", cfg.eat.startAt) - if ( - !isEating - && cfg.eat.auto - && bot.food < cfg.eat.startAt - ) { - if ( - (bot.pathfinder - && !(bot.pathfinder.isMining() || bot.pathfinder.isBuilding()) - // TODO implement better idle state - ) || true // idle most likely - ) { - eat(callbackHandle) - } - } -} - -function resetEat(value) { - // to prevent the plugin from breaking if the bot gets killed while eating btw - isEating = !!value // false -} - -const load = (config) => { - cfg = config - bot = cfg.bot - cfg.eat = { - priority: 'saturation', //'foodPoints', // - // startAt: 19, //anarchy - // startAt: 18, - startAt: 14, - bannedFood: [ - "enchanted_golden_apple", "golden_apple", "pufferfish", "chorus_fruit" - ], - auto: true - } - - bot.on('health', checkFood) - bot.on('spawn', resetEat) - -} - -const unload = () => { - bot.off('health', checkFood) - bot.off('spawn', resetEat) -} - +let cfg = {} +let bot = {} +let isEating = false + +function callbackHandle(err) { + if (err) console.error(err) +} + +function eat(callback) { + isEating = true + + const foodNames = require('minecraft-data')(bot.version).foodsArray.map((item) => item.name) + + let available_food = bot.inventory + .items() + .filter((item) => foodNames.includes(item.name)) + + if (available_food.length === 0 || !available_food) { + isEating = false + return callback(new Error('No food found.')) + } + + if (cfg.eat.bannedFood.length > 0) { + available_food = available_food.filter( + (item) => !cfg.eat.bannedFood.includes(item.name) + ) + } + let priority = cfg.eat.priority + let best_food = available_food.reduce((prev, current) => (prev[priority] > current[priority]) ? prev : current) + + if (!best_food) { + isEating = false + return callback(new Error('No best food has been found.')) + } + + bot.emit('eat_start') + + bot.equip(best_food, 'hand', function (error) { + if (error) { + console.error(error) + isEating = false + bot.emit('eat_stop') + } else { + bot.consume(function (err) { + if (err) { + console.error(err) + isEating = false + bot.emit('eat_stop') + return callback(err) + } else { + isEating = false + bot.emit('eat_stop') + callback(null) + if (!bot.food === 20) eat(callbackHandle) + } + }) + } + }) +} + +function checkFood() { + console.info("eater: " + // , " status: ", !isEating + , cfg.eat.auto && "auto" + , bot.food < cfg.eat.startAt && "hungry" + , "hunger:", bot.food + , "at:", cfg.eat.startAt) + if ( + !isEating + && cfg.eat.auto + && bot.food < cfg.eat.startAt + ) { + if ( + (bot.pathfinder + && !(bot.pathfinder.isMining() || bot.pathfinder.isBuilding()) + // TODO implement better idle state + ) || true // idle most likely + ) { + eat(callbackHandle) + } + } +} + +function resetEat(value) { + // to prevent the plugin from breaking if the bot gets killed while eating btw + isEating = !!value // false +} + +const load = (config) => { + cfg = config + bot = cfg.bot + cfg.eat = { + priority: 'saturation', //'foodPoints', // + // startAt: 19, //anarchy + // startAt: 18, + startAt: 14, + bannedFood: [ + "enchanted_golden_apple", "golden_apple", "pufferfish", "chorus_fruit" + ], + auto: true + } + + bot.on('health', checkFood) + bot.on('spawn', resetEat) + +} + +const unload = () => { + bot.off('health', checkFood) + bot.off('spawn', resetEat) +} + module.exports = { load, unload, eat, resetEat } \ No newline at end of file diff --git a/lib/plugins/mover.js b/lib/plugins/mover.js index 90057ed..6fa5fef 100644 --- a/lib/plugins/mover.js +++ b/lib/plugins/mover.js @@ -1,95 +1,95 @@ -// import { EntityFilters } from "mineflayer-statemachine" -// import v from "vec3" - -// import { Movements } from "mineflayer-pathfinder" - -// const mineflayer = require('mineflayer') -const { Movements } = require('mineflayer-pathfinder') -// const { GoalBLah } = require('mineflayer-pathfinder').goals -const v = require('vec3') - -let cfg = {} -let bot = {} -// let moving -let pathfinder -let movements = [] - - -function initMoves(bot = bot, mcData = require('minecraft-data')(bot.version)) { - let defaultMove = new Movements(bot, mcData) - defaultMove.canDig = false - defaultMove.scafoldingBlocks.push(mcData.blocksByName.slime_block.id) - // defaultMove.blocksCantBreak.add(mcData.blocksByName.glass.id) - // defaultMove.blocksToAvoid.add(mcData.blocksByName.magma.id) - movements.defaultMove = defaultMove - - bot.pathfinder.setMovements(defaultMove) -} - - -function moveNear(pos, distance = 3) { - const { GoalNear } = require('mineflayer-pathfinder').goals - cfg.quiet || bot.chat(`moving to ${pos}`) - - pos = v(pos) - bot.pathfinder.setMovements(movements.defaultMove) - bot.pathfinder.setGoal(new GoalNear(pos.x, pos.y, pos.z, distance)) -} - -function follow(entity, dynamic = true) { - console.assert(entity) - const { GoalFollow } = require('mineflayer-pathfinder').goals - - - - cfg.quiet && console.log(entity) - || bot.chat( - `following ${entity.type - }: ${entity.username || entity.displayName - }${dynamic ? "" : " once"}` - ) - - entity = entity.entity ? entity.entity : entity - - // console.log(entity) - - bot.pathfinder.setMovements(movements.defaultMove) - bot.pathfinder.setGoal(new GoalFollow(entity, 3), dynamic) -} - -function hit(blockOrEntity) { - bot.chat(`hitting ${entity.name || entity.type}`) -} - -function stop() { - bot.pathfinder.setGoal(null) - bot.stopDigging() -} - -const load = (config) => { - cfg = config - bot = cfg.bot - cfg.move = { - // auto: true, - canDig: false, - // list: ["hello", "wassup"], - quiet: !!cfg.quiet, - movements: [] - } - - pathfinder = bot.pathfinder || bot.loadPlugin(require('mineflayer-pathfinder').pathfinder) - - // initMoves(bot, mcData) - setTimeout(initMoves, 500, bot) - - // bot.loadPlugin(pathfinder) - - // bot.on('time', hello) - -} - -const unload = () => { - // TODO stop pathfinding maybe? -} - +// import { EntityFilters } from "mineflayer-statemachine" +// import v from "vec3" + +// import { Movements } from "mineflayer-pathfinder" + +// const mineflayer = require('mineflayer') +const { Movements } = require('mineflayer-pathfinder') +// const { GoalBLah } = require('mineflayer-pathfinder').goals +const v = require('vec3') + +let cfg = {} +let bot = {} +// let moving +let pathfinder +let movements = [] + + +function initMoves(bot = bot, mcData = require('minecraft-data')(bot.version)) { + let defaultMove = new Movements(bot, mcData) + defaultMove.canDig = false + defaultMove.scafoldingBlocks.push(mcData.blocksByName.slime_block.id) + // defaultMove.blocksCantBreak.add(mcData.blocksByName.glass.id) + // defaultMove.blocksToAvoid.add(mcData.blocksByName.magma.id) + movements.defaultMove = defaultMove + + bot.pathfinder.setMovements(defaultMove) +} + + +function moveNear(pos, distance = 3) { + const { GoalNear } = require('mineflayer-pathfinder').goals + cfg.quiet || bot.chat(`moving to ${pos}`) + + pos = v(pos) + bot.pathfinder.setMovements(movements.defaultMove) + bot.pathfinder.setGoal(new GoalNear(pos.x, pos.y, pos.z, distance)) +} + +function follow(entity, dynamic = true) { + console.assert(entity) + const { GoalFollow } = require('mineflayer-pathfinder').goals + + + + cfg.quiet && console.log(entity) + || bot.chat( + `following ${entity.type + }: ${entity.username || entity.displayName + }${dynamic ? "" : " once"}` + ) + + entity = entity.entity ? entity.entity : entity + + // console.log(entity) + + bot.pathfinder.setMovements(movements.defaultMove) + bot.pathfinder.setGoal(new GoalFollow(entity, 3), dynamic) +} + +function hit(blockOrEntity) { + bot.chat(`hitting ${entity.name || entity.type}`) +} + +function stop() { + bot.pathfinder.setGoal(null) + bot.stopDigging() +} + +const load = (config) => { + cfg = config + bot = cfg.bot + cfg.move = { + // auto: true, + canDig: false, + // list: ["hello", "wassup"], + quiet: !!cfg.quiet, + movements: [] + } + + pathfinder = bot.pathfinder || bot.loadPlugin(require('mineflayer-pathfinder').pathfinder) + + // initMoves(bot, mcData) + setTimeout(initMoves, 500, bot) + + // bot.loadPlugin(pathfinder) + + // bot.on('time', hello) + +} + +const unload = () => { + // TODO stop pathfinding maybe? +} + module.exports = { load, unload, stop, initMoves, moveNear, follow } \ No newline at end of file