Skip to content

Instantly share code, notes, and snippets.

@ehgoodenough
Created October 13, 2016 22:48
Show Gist options
  • Save ehgoodenough/b4572f1151dce274f05ffc2310c9bc38 to your computer and use it in GitHub Desktop.
Save ehgoodenough/b4572f1151dce274f05ffc2310c9bc38 to your computer and use it in GitHub Desktop.
var blocks = new Object()
/////////////
// Server //
///////////
var minecraftdata = require("minecraft-data")("1.8.9")
var socketio = require("socket.io")()
var yargs = require("yargs")
socketio.on("connection", function(socket) {
console.log("Established a connection.")
for(var key in blocks) {
socket.emit("voxel", {
position: blocks[key].position,
name: blocks[key].name,
})
}
})
var SERVER_PORT = yargs.argv.sockets || 3000
socketio.listen(SERVER_PORT)
console.log("Broadcasting voxels on " + SERVER_PORT + ".")
////////////
// Robot //
//////////
var Mineflayer = require("mineflayer")
var MINECRAFT_PORT = yargs.argv.minecraft || 25565
var bot = Mineflayer.createBot({
username: "cartographer",
host: "localhost",
port: MINECRAFT_PORT,
})
bot.on("blockUpdate", function(oldblock, block) {
// for debug
block.position.x -= 256
block.position.y -= 95
block.position.z -= 256
var key = pos(block.position)
console.log("[" + key + "] " + block.name)
if(block.name == "air") {
delete blocks[key]
} else {
blocks[key] = {
position: block.position,
name: block.name,
}
}
socketio.sockets.emit("voxel", {
position: block.position,
name: block.name,
})
})
bot.on("error", function(error) {
require("fs").appendFile("error.log", "[" + Date.now() + "] " + error + "\n")
})
function pos(position) {
return position.x + "x" + position.y + "x" + position.z
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment