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 }) // Start the viewing server on port 3000
// Draw the path followed by the bot
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
Projects using prismarine-viewer
- prismarine-web-client A minecraft client in your browser
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
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
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 ahost: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
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.
bot.viewer.close ()
Stop the server and disconnect users.
Tests
node_modules/.bin/jest --verbose --runInBand --forceExit -t "1.16.4"