Minecraft web client running in your browser
Find a file
rom1504bot 344f0cacfb
Release 1.6.0 (#364)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-12-31 22:42:39 +01:00
.github Create commands.yml 2023-12-31 17:49:11 +01:00
assets [ImgBot] Optimize images (#348) 2023-07-22 14:55:20 +02:00
extra-textures [ImgBot] Optimize images (#348) 2023-07-22 14:55:20 +02:00
lib Add BossBars (#319) 2023-03-04 19:04:46 +01:00
scripts Should show error screen on error (#350) 2023-09-16 07:30:52 +02:00
test add code 2021-02-27 22:12:11 +00:00
.dockerignore Added docker support, made config dynamic (#108) 2021-03-21 17:14:14 +01:00
.gitignore add .idea to gitignore (#39) 2021-03-02 14:47:40 +01:00
.gitpod remove custom gitpod as the default one is good enough and faster 2021-03-14 22:58:20 +01:00
.npmignore fix package.json 2021-02-27 22:28:08 +00:00
.npmrc Initial commit 2021-02-27 22:27:59 +01:00
config.json Remove incorrect signals + change server. (#361) 2023-12-31 20:48:45 +01:00
Dockerfile Added docker support, made config dynamic (#108) 2021-03-21 17:14:14 +01:00
HISTORY.md Release 1.6.0 (#364) 2023-12-31 22:42:39 +01:00
index.html fix URI (#340) 2023-04-06 09:22:15 +02:00
index.js Remove incorrect signals + change server. (#361) 2023-12-31 20:48:45 +01:00
LICENSE Initial commit 2021-02-27 22:27:59 +01:00
package.json Release 1.6.0 (#364) 2023-12-31 22:42:39 +01:00
README.md fix URI (#340) 2023-04-06 09:22:15 +02:00
README_PT.md fix URI (#340) 2023-04-06 09:22:15 +02:00
README_RU.md fix URI (#340) 2023-04-06 09:22:15 +02:00
screenshot.png [ImgBot] Optimize images (#348) 2023-07-22 14:55:20 +02:00
server.js Added docker support, made config dynamic (#108) 2021-03-21 17:14:14 +01:00
styles.css Mobile controls (#262) 2021-12-25 22:50:40 +01:00
webpack.common.js avoid using @azure/msal-node (#358) 2023-12-31 17:48:10 +01:00
webpack.dev.js Revert "Make dev builds faster (#227)" 2021-11-12 21:04:09 +00:00
webpack.prod.js Revert "Make dev builds faster (#227)" 2021-11-12 21:04:09 +00:00

prismarine-web-client

NPM version Build Status Discord Try it on gitpod

🇺🇸 English 🇷🇺 Russian 🇵🇹 Portuguese

A Minecraft client running in a web page. Live demo at https://prismarinejs.github.io/prismarine-web-client/

How it Works

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!

Screenshot

Screenshot of prismarine-web-client in action

Live Demo

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.

Usage

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.

Features

  • Display mobs and players
  • Display blocks
  • Movement (you can move, and you see entities moving live)
  • Place and break blocks

Roadmap

  • Containers (inventory, chests, etc.)
  • Sounds
  • More world interactions (attacking entities, etc.)
  • Cosmetic rendering features (day night cycle, fog, etc.)

Development

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

Adding stuff to the debugMenu

debugMenu.customEntries['myKey'] = 'myValue' delete debugMenu.customEntries['myKey']

Some debugging examples

In Chrome DevTools:

  • bot.chat('test') allows you to use the chat
  • bot.chat(JSON.stringify(Object.values(bot.players).map(({username, ping}) => ({username, ping})))) display the ping of everyone
  • window.bot.entity.position.y += 5 jumps
  • bot.chat(JSON.stringify(bot.findBlock({matching:(block) => block.name==='diamond_ore', maxDistance:256}).position)) finds the position of a diamond block
  • bot.physics.stepHeight = 2 allows you to walk about blocks
  • bot.physics.sprintSpeed = 5 walks faster
  • bot.loadPlugin(pathfinder.pathfinder) then bot.pathfinder.goto(new pathfinder.goals.GoalXZ(100, 100)) goes to position 100, 100

For more debugging ideas, read the mineflayer doc.