* Implement get_player_by_uuid for server & world Similar to the existing functions named get_player_by_name, these functions will search for a player with a matching Uuid. This implementation is asynchronous and thus better suits being combined with #176, which makes get_player_by_name asynchronous too. * make get_player_by_name async, rename old fn to get_player_by_name_blocking Currently, the existing commands system is all that requires the existing blocking version of get_player_by_name function. After discussing in the Discord, it seems renaming the old blocking method with a suffix of _blocking in addition to adding an async version under the original (unmodified) name of get_player_by_name. * Implement duplicate profile protections * fmt client_packet.rs * use hashmap search for players by uuid; move duplicate uuid check I've confirmed this commit compiles and runs, my client is able to play normally. However, I haven't confirmed it prevents duplicate usernames or UUIDs as of yet. * client_packet: check auth before duplications; check uuid offline too
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 security exploits.
- Flexibility: Highly configurable, with the ability to disable unnecessary features.
- Extensibility: Provides a foundation for plugin development.
What Pumpkin will not
- Be compatible with plugins or mods for other servers
- 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
- Lighting
- Entity Spawning
- Chunk Loading
- Chunk Generation
- Scoreboard
- World Borders
- World Saving
- Player
- Player Skins
- Player Client brand
- Player Teleport
- Player Movement
- Player Animation
- Player Inventory
- Player Combat
- Server
- Plugins
- Query
- RCON
- Inventories
- Particles
- Chat
- Commands
- Proxy
- Bungeecord
- Velocity
Check out our Github Project to see current progress
How to run
See our Quick Start Guide to get Pumpkin running
Contributions
Contributions are welcome! See CONTRIBUTING.md
Docs
The Documentation of Pumpkin can be found at https://snowiiii.github.io/Pumpkin/
Communication
Consider joining our discord to stay up-to-date on events, updates, and connect with other members.
Funding
If you want to fund me and help the project, Check out my GitHub sponsors or my PayPal
Thanks
A big thanks to wiki.vg for providing valuable information used in the development of this project.