me trying to understand minecraft beta
Find a file
Holly f6abf37f41
Some checks failed
Node.js Build / build (20.x) (push) Failing after 6m35s
items
2024-10-29 00:47:11 +00:00
.github/workflows bump node version in workflow 2024-10-28 09:37:52 +00:00
external Add basic cave generation 2023-04-17 02:05:11 +01:00
server items 2024-10-29 00:47:11 +00:00
tooling convert whole project to use default exports 2024-10-26 14:24:38 +01: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 convert whole project to use default exports 2024-10-26 14:24:38 +01:00
index.ts convert whole project to use default exports 2024-10-26 14:24:38 +01:00
LICENSE Update LICENSE year 2024-10-28 09:46:55 +00:00
nibbleArray.ts convert whole project to use default exports 2024-10-26 14:24:38 +01:00
package-lock.json use funkyarray package 2024-07-08 09:56:03 +01:00
package.json use funkyarray package 2024-07-08 09:56:03 +01: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.