๐บ๐ธ English | ๐ท๐บ Russian | ๐ต๐น Portuguese |
---|
A Minecraft client running in a web page. Live demo at https://prismarinejs.github.io/prismarine-web-client/
prismarine-web-client runs mineflayer and prismarine-viewer in the browser, which connects over WebSocket to a proxy which translates the WebSocket connection into TCP to connect to normal Minecraft servers. Prismarine-web-client is based on:
Check these modules if you want to understand more how it works and contribute!
Click on this link to open it in your browser, no installation necessary: https://prismarinejs.github.io/prismarine-web-client/
Tested on Chrome & Firefox for desktop platforms.
To host it yourself, run these commands in bash:
$ npm install -g prismarine-web-client
$ prismarine-web-client
Finally, open http://localhost:8080
in your browser.
If you're contributing/making changes, you need to install it differently.
First, clone the repo.
Then, set your working directory to that of the repo. For example:
$ cd ~/prismarine-web-client/
Finally, run
$ npm install
$ npm start
This will start express and webpack in development mode; whenever you save a file, the build will be redone (it takes 5s), and you can refresh the page to get the new result.
Connect to http://localhost:8080 in your browser.
You may want to disable auto saving in your IDE to avoid constant rebuilding; see https://webpack.js.org/guides/development/#adjusting-your-text-editor.
To check the production build (will take a minute to build), you can run npm run build-start
.
If you're interested in contributing, you can check projects at https://github.com/PrismarineJS/prismarine-web-client/projects.
Some variables are exposed in the global window
object for debugging:
bot
viewer
mcData
worldView
Vec3
pathfinder
debugMenu
debugMenu.customEntries['myKey'] = 'myValue' delete debugMenu.customEntries['myKey']
In Chrome DevTools:
bot.chat('test')
allows you to use the chatbot.chat(JSON.stringify(Object.values(bot.players).map(({username, ping}) => ({username, ping}))))
display the ping of everyonewindow.bot.entity.position.y += 5
jumpsbot.chat(JSON.stringify(bot.findBlock({matching:(block) => block.name==='diamond_ore', maxDistance:256}).position))
finds the position of a diamond blockbot.physics.stepHeight = 2
allows you to walk about blocksbot.physics.sprintSpeed = 5
walks fasterbot.loadPlugin(pathfinder.pathfinder)
then bot.pathfinder.goto(new pathfinder.goals.GoalXZ(100, 100))
goes to position 100, 100For more debugging ideas, read the mineflayer doc.