57 lines
1.8 KiB
JavaScript
57 lines
1.8 KiB
JavaScript
/*
|
|
* This example demonstrates how easy it is to change the default movement
|
|
*
|
|
* Below are a few options you can edit in the Movement Class
|
|
* but remember to check out the API documentation to find even more!
|
|
*
|
|
* This bot also follows a player when called called out to it.
|
|
*/
|
|
|
|
const mineflayer = require('mineflayer')
|
|
const { pathfinder, Movements } = require('mineflayer-pathfinder')
|
|
const { GoalNear } = require('mineflayer-pathfinder').goals
|
|
|
|
const bot = mineflayer.createBot({
|
|
host: process.argv[2],
|
|
port: parseInt(process.argv[3]),
|
|
username: process.argv[4] ? process.argv[4] : 'movementsbot',
|
|
password: process.argv[5]
|
|
})
|
|
|
|
bot.loadPlugin(pathfinder)
|
|
|
|
bot.once('spawn', () => {
|
|
/*
|
|
* pathfinder comes with default moves preinitialized (a instance of the movement class)
|
|
* the moves come with default logic, like how much it can fall
|
|
* what blocks are used to scaffold, and what blocks to avoid.
|
|
*/
|
|
|
|
// To get started create a instance of the Movements class
|
|
const customMoves = new Movements(bot)
|
|
// To make changes to the behaviour, customize the properties of the instance
|
|
customMoves.canDig = false
|
|
customMoves.allow1by1towers = false
|
|
customMoves.scafoldingBlocks.push(bot.registry.itemsByName.stone.id)
|
|
// Thing to note scaffoldingBlocks are an array while other namespaces are usually sets
|
|
customMoves.blocksToAvoid.add(bot.registry.blocksByName.carrot.id)
|
|
|
|
// To initialize the new movements use the .setMovements method.
|
|
bot.pathfinder.setMovements(customMoves)
|
|
|
|
bot.on('chat', function (username, message) {
|
|
if (username === bot.username) return
|
|
|
|
if (message === 'come') {
|
|
const target = bot.players[username]?.entity
|
|
if (!target) {
|
|
bot.chat('I don\'t see you !')
|
|
return
|
|
}
|
|
const p = target.position
|
|
|
|
bot.pathfinder.setGoal(new GoalNear(p.x, p.y, p.z, 1))
|
|
}
|
|
})
|
|
})
|