prismarine-viewer
Web based viewer for servers and bots
Install
npm install prismarine-viewer
Example
const mineflayer = require('mineflayer')
const mineflayerViewer = require('prismarine-viewer').mineflayer
const bot = mineflayer.createBot({
username: 'Bot'
})
bot.once('spawn', () => {
mineflayerViewer(bot, { port: 3000 })
const path = [bot.entity.position.clone()]
bot.on('move', () => {
if (path[path.length - 1].distanceTo(bot.entity.position) > 1) {
path.push(bot.entity.position.clone())
bot.viewer.drawLine('path', path)
}
})
})
More examples:
- First person bot example
- Record view as video file example
- Streaming video to a python script example
- Visualize a world, without a bot example
- Visualize the world coming from a proxy example
- Click to move example
- Use the core api for viewing worlds example
- Create an electron app with viewer example
- Create a fully front end viewer with an in memory world example
- A minecraft web client example, using mineflayer and a websocket proxy example
- Export parts of worlds as screenshot or 3d models example
API
prismarine-viewer
viewer
The core rendering library. It provides Viewer and WorldView which together make it possible to render a minecraft world.
Check its API
mineflayer
Serve a webserver allowing to visualize the bot surrounding, in first or third person. Comes with drawing functionnalities.
const { mineflayer } = require('prismarine-viewer')
Options:
viewDistance
view radius, in chunks, default: 6
firstPerson
is the view first person ? default: false
port
the port for the webserver, default: 3000
example
standalone
Serve a webserver allowing to visualize a world.
const { standalone } = require('prismarine-viewer')
Options:
version
the version to use, default: 1.13.2
generator
a world generator function, default: (x, y, z) => 0
center
a vec3 to center the view on, default: new Vec3(0, 0, 0)
viewDistance
view radius, in chunks, default: 6
port
the port for the webserver, default: 3000
example
headless
Render the bot view and stream it to a file or over TCP.
const { headless } = require('prismarine-viewer')
Options:
viewDistance
view radius, in chunks, default: 6
output
the output file or a host:port
address to stream to, default: output.mp4
frames
number of frames to record, -1
for infinite, default: 200
width
the width of a frame, default: 512
height
the height of a frame, default: 512
example
Drawing (mineflayer mode)
All drawing function have a unique id that can be used to replace or erase the primitive.
bot.viewer.drawLine (id, points, color=0xff0000)
Draw a line passing through all the points
.
bot.viewer.erase (id)
Remove the primitive with the given id from the display.
Tests
node_modules/.bin/jest --verbose --runInBand --forceExit -t "1.16.4"