me trying to understand minecraft beta
Find a file
Holly 63333a04aa Implement AABB collision and add EntityItem properly.
The items are fully functional apart from picking them up, they are commented out in the MPClient breakBlock function if you want to play with them.
2023-11-09 16:30:40 +00:00
.github/workflows Artifacts attempt 2 2023-11-02 10:54:36 +00:00
external Add basic cave generation 2023-04-17 02:05:11 +01:00
server Implement AABB collision and add EntityItem properly. 2023-11-09 16:30:40 +00:00
tooling Swap smasher out for @vercel/ncc 2023-11-02 10:40:46 +00:00
.gitignore ignore config file 2023-09-04 01:42:36 +01:00
.gitmodules Migrate to bufferstuff module 2023-06-22 12:43:28 +01:00
config.example.json improve the readme 2023-06-26 16:47:39 +01:00
config.ts lighting sort of works 2023-06-19 18:29:16 +01:00
funkyArray.ts maintenance 2023-08-20 01:18:05 +01:00
index.ts Switch to hsconsole package & add proper shutdown procedure 2023-08-15 10:00:12 +01:00
LICENSE Update LICENSE 2023-04-08 20:55:05 +01:00
nibbleArray.ts Block getting 2023-11-02 08:31:43 +00:00
package-lock.json Read multiple packets per chunk 2023-11-07 01:50:35 +00:00
package.json Read multiple packets per chunk 2023-11-07 01:50:35 +00:00
README.md Update README.md 2023-11-05 01:08:01 +00:00
tsconfig.json Switch to hsconsole package & add proper shutdown procedure 2023-08-15 10:00:12 +01:00

mc-beta-server CodeFactor Node.js CI

me trying to understand minecraft beta's protocol


Minecraft landscape with trees, caves, flowers, shrubs and an ocean. WIP Minecraft Nether with very simple terrain.

Goals:

  • Make this as fast as possible on a single thread.
  • Only use thread pools if absolutely neccesary.
  • Build the server in a way where it should be easy to multithread it.

Implemented:

  • Basic flat terrain generation
  • Basic (top to bottom, no spread) Lighting
  • "Decent" terrain generation using OpenSimplex Noise
  • Multi-World support
  • Chunk management (loading / unloading)
  • Cross chunk structure generation (trees, buildings, etc...)
  • World/Chunk saving to disk
  • Block breaking
  • Player Inventory

WIP:

  • Entities:
    • Players
  • Dimensions:
    • Nether
  • Inventories (containers, etc...)

To Implement:

  • Block placement
  • Entities:
    • Items
    • Mobs
  • Saving inventories
  • Sleeping in beds
  • Tile entities
  • Probably a bunch more things that i'm forgetting

Running the server

Heads Up! This server is under pretty heavy development with most likley breaking changes, I will try my best to keep compatibility in the save formats (or provide migration paths) with updates but cannot guarentee it.

To use the server either grab a release or build it yourself.

Running from a release

When using a release all you need to do is run the executable you get from the download.

Building yourself

To build the server yourself clone the repo and run

npm i
npm run build

This will automatically build the server and pack it into a single js file, you'll find your resulting js file in the ./build folder.

Setting up for development

To run the server simply clone the repo, and run:

npm i

Copy the config.example.json to config.json and edit how you want it, then run:

npm run dev:run

You are now running a server locally! When running the server with npm run dev:run it is running with nodemon, this means that the server will auto restart as you edit.