Empowering everyone to host fast and efficient Minecraft servers
Go to file
DaniD3v 17b285081a Refractored read_chunk
Added new error types to indicate a chunk should be generated.
Renamed to `fetch_chunks` to indicate that it no longer just reads chunks (might write to the worldfile in the future)
Take a reference to a slice instead of an owned vector because the data is Copy anyways.

Remove the ChunkCoordinates that are sent over the mpsc Sender.
- The coordinates are stored in ChunkData anyways.
- If there is an Error the coordinates should not matter because the error can't be recovered from.

Moved the reading from file logic to `read_chunk`.
- So that we don't always have to repeat `channel.blocking_send(...); return;`
- To make it clearly distinct from the main program logic.

Replaced some verbose match statements with `Result.map_err()`.
2024-08-28 12:52:26 +02:00
.devcontainer Remove minecraft source decompiler script 2024-08-21 14:44:21 +01:00
.github ci: Separate clippy and build for build release job 2024-08-22 13:58:03 +02:00
pumpkin Refractored read_chunk 2024-08-28 12:52:26 +02:00
pumpkin-core Add Console Colors & Styles 2024-08-21 20:08:14 +01:00
pumpkin-entity Check block distance 2024-08-25 19:16:38 +02:00
pumpkin-inventory better name 2024-08-24 18:12:51 +02:00
pumpkin-macros Update deps 2024-08-26 17:06:15 +02:00
pumpkin-plugin Add pumpkin-plugin 2024-08-27 22:47:21 +02:00
pumpkin-protocol BlockId refactor. 2024-08-28 12:52:19 +02:00
pumpkin-registry Create pumpkin-core, and move pumpkin-text 2024-08-21 16:12:09 +02:00
pumpkin-world Refractored read_chunk 2024-08-28 12:52:26 +02:00
.dockerignore feat: initial docker support 2024-08-20 19:38:46 +02:00
.gitignore Add pumpkin-plugin 2024-08-27 22:47:21 +02:00
Cargo.lock Add pumpkin-plugin 2024-08-27 22:47:21 +02:00
Cargo.toml Add pumpkin-plugin 2024-08-27 22:47:21 +02:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2024-08-02 12:33:51 +02:00
CONTRIBUTING.md Update CONTRIBUTING.md 2024-08-23 12:14:32 +02:00
Dockerfile feat(docker): enable target-cpu=native 2024-08-24 13:28:04 +02:00
LICENSE Create LICENSE 2024-07-31 09:13:08 +02:00
README.md README: Change run command 2024-08-27 16:17:59 +01:00
STRUCTURE.md Create a basic structure guide 2024-08-21 16:30:38 +02:00

Pumpkin

CI Discord License: MIT Current version)

Pumpkin is a Minecraft server built entirely in Rust, offering a fast, efficient, and customizable experience. It prioritizes performance and player enjoyment while adhering to the core mechanics of the game.

image

What Pumpkin wants to achieve

  • Performance: Leveraging multi-threading for maximum speed and efficiency.
  • Compatibility: Supports the latest Minecraft server version and adheres to vanilla game mechanics.
  • Security: Prioritizes security by preventing known exploits.
  • Flexibility: Highly configurable with the ability to disable unnecessary features.
  • Extensibility: Provides a foundation for plugin development.

What Pumpkin will not

  • Provide compatibility with Vanilla or Bukkit servers (including configs and plugins).
  • Function as a framework for building a server from scratch.

Important

Pumpkin is currently under heavy development.

Features (WIP)

  • Configuration (toml)
  • Server Status/Ping
  • Login
  • Player Configuration
    • Registries (biome types, paintings, dimensions)
    • Server Brand
    • Server Links
    • Set Resource Pack
    • Cookies
  • World
    • World Joining
    • Player Tab-list
    • World Loading
    • Entity Spawning
    • Chunk Loading
    • World Generation
    • World Borders
    • World Saving
  • Player
    • Player Skins
    • Player Client brand
    • Player Teleport
    • Player Movement
    • Player Animation
    • Player Inventory
    • Player Combat
  • Server
    • Query
    • RCON
    • Inventories
    • Particles
    • Chat
    • Commands
  • Proxy
    • Velocity

Check out our Github Project to see current progress

How to run

There are currently no release builds, because there was no release :D.

To get Pumpkin running you first have to clone it:

git clone https://github.com/Snowiiii/Pumpkin.git
cd Pumpkin

You also may have to install rust when you don't already have.

For Now, until we don't have own chunk generation. You need to pregenerate the world and place it inside of the Pumpkin/ directory. Make sure to generate chunks close to (0,0) since that is where the player gets spawned by default.

Then run:

Note

This can take a while. Because we enabled heavy optimizations for release builds

To apply further optimizations specfic to your CPU and use your CPU features. You should set the target-cpu=native Rust flag.

cargo run --release

Docker

Experimental Docker support is available. The image is currently not published anywhere, but you can use the following command to build it:

docker build . -t pumpkin

To run it use the following command:

docker run --rm -v "./world:/pumpkin/world" pumpkin

Contributions

Contributions are welcome! See CONTRIBUTING.md

Communication

Consider joining our discord to stay up-to-date on events, updates, and connect with other members.

Thanks

A big thanks to wiki.vg for providing valuable information used in the development of this project.