Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
module.exports.entity = function (entity, serv, { version }) {
const blocks = require('minecraft-data')(version).blocks
entity.calculatePhysics = async (delta) => {
if (entity.gravity) {
addGravity(entity, 'x', delta)
addGravity(entity, 'y', delta)
addGravity(entity, 'z', delta)
}
const vSign = getSign(entity.velocity)
const sizeSigned = new Vec3(vSign.x * entity.size.x, vSign.y * entity.size.y, vSign.z * entity.size.z)
const xVec = entity.position.offset(entity.velocity.x * delta + sizeSigned.x / 2, 0, 0)
const yVec = entity.position.offset(0, entity.velocity.y * delta + sizeSigned.y / 2, 0)
const zVec = entity.position.offset(0, 0, entity.velocity.z * delta + sizeSigned.z / 2)
// Get block for each (x/y/z)Vec, check to avoid duplicate getBlockTypes
module.exports = {
//vec3: require('vec3'), // not really needed
createBot: createBot,
Block: require('mineflayer/lib/block'),
Location: require('mineflayer/lib/location'),
Biome: require('mineflayer/lib/biome'),
Entity: require('mineflayer/lib/entity'),
Painting: require('mineflayer/lib/painting'),
Item: require('mineflayer/lib/item'),
Recipe: require('mineflayer/lib/recipe'),
windows: require('mineflayer/lib/windows'),
Chest: require('mineflayer/lib/chest'),
Furnace: require('mineflayer/lib/furnace'),
Dispenser: require('mineflayer/lib/dispenser'),
EnchantmentTable: require('mineflayer/lib/enchantment_table'),
blocks: mcData.blocks,
biomes: mcData.biomes,
items: mcData.items,
recipes: mcData.recipes,
instruments: mcData.instruments,
materials: mcData.materials,
};
function createBot(options) {
options.username = options.username || 'Player';
if (!options.stream) throw new Error('createBot requires options.stream');
var bot = new Bot();
bot.connect(options);
return bot;
}
function generation ({ version }) {
const Chunk = require('prismarine-chunk')(version)
const blocks = require('minecraft-data')(version).blocks
function generateSimpleChunk () {
const chunk = new Chunk()
let i = 2
for (let x = 0; x < 16; x++) {
for (let z = 0; z < 16; z++) {
let y
for (y = 47; y <= 50; y++) {
chunk.setBlockType(new Vec3(x, y, z), i)
i = (i + 1) % Object.keys(blocks).length
}
for (y = 0; y < 256; y++) {
chunk.setSkyLight(new Vec3(x, y, z), 15)
}
}
module.exports.player = function (player, serv, { version }) {
const blocks = require('minecraft-data')(version).blocks
player._client.on('block_place', ({ direction, location } = {}) => {
const heldItem = player.inventory.slots[36 + player.heldItemSlot]
if (direction === -1 || heldItem.type === -1 || !blocks[heldItem.type]) return
const referencePosition = new Vec3(location.x, location.y, location.z)
const directionVector = directionToVector[direction]
const placedPosition = referencePosition.plus(directionVector)
player.behavior('placeBlock', {
direction: directionVector,
heldItem: heldItem,
id: heldItem.type,
damage: heldItem.metadata,
position: placedPosition,
reference: referencePosition,
playSound: true,
sound: 'dig.' + (materialToSound[blocks[heldItem.type].material] || 'stone')