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()`. |
||
|---|---|---|
| .devcontainer | ||
| .github | ||
| pumpkin | ||
| pumpkin-core | ||
| pumpkin-entity | ||
| pumpkin-inventory | ||
| pumpkin-macros | ||
| pumpkin-plugin | ||
| pumpkin-protocol | ||
| pumpkin-registry | ||
| pumpkin-world | ||
| .dockerignore | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTING.md | ||
| Dockerfile | ||
| LICENSE | ||
| README.md | ||
| STRUCTURE.md | ||
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.
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.