mirror of
https://github.com/Pumpkin-MC/Pumpkin.git
synced 2026-08-30 20:14:23 +00:00
0d348892e55b1a8e411ecd7ab501d3c6e4b3ac6d
* fix(protocol): accept BungeeCord-forwarded handshake addresses `SHandShake::read` bounded `server_address` at 255 characters, the limit a vanilla client observes. `bungeecord_login`, however, expects that same field to carry the host, the client's IP, its UUID and its signed profile properties separated by NUL bytes, exactly as documented on that function. With `ip_forward` enabled the signed properties alone run past a thousand characters, so the read failed with "too large: string" before `handle_handshake` ever ran: the connection state never advanced, `server_address` stayed empty and the proxy login path could not be reached. The same struct already writes this field with `write_string`, which bounds it at `i16::MAX`, so the reader was stricter than the writer. Read it with that same bound, as Spigot does. Closes #1293 * test(proxy): cover a BungeeCord login from the wire up Encodes a handshake the way BungeeCord puts it on the wire with `ip_forward` enabled, decodes it with the real packet reader, and hands the resulting address to `bungeecord_login`, asserting the forwarded IP, the forwarded UUID and the signed skin all survive the trip. Without the widened bound on `server_address` this fails inside `SHandShake::read`, so `bungeecord_login` is never reached at all.
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.
Goals
- Performance: Leveraging multi-threading for maximum speed and efficiency.
- Compatibility: Supports the latest Java & Bedrock Minecraft server version while adhering 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.
Important
Pumpkin is currently under heavy development.
Features
- Configuration (toml)
- Tracking: Protocol
- Server Status/Ping
- Encryption
- Packet Compression
- Java Edition
- Bedrock Edition (W.I.P)
- ...
- Tracking: World
- Player Tab-list
- Scoreboard
- World Loading
- World Time
- World Borders
- World Saving
- Lighting
- Entity Spawning
- Bossbar
- Chunk Loading (Vanilla, Linear, Pump)
- Chunk Generation
- Chunk Saving (Vanilla, Linear, Pump)
- Redstone
- Liquid Physics
- ...
- Tracking: Player
- Skins
- Teleport
- Movement
- Animation
- Inventory
- Combat
- Experience
- Hunger
- Off Hand
- Advancements (W.I.P)
- Eating
- ...
- Entities
- Non-Living (Minecart, Eggs...) (W.I.P)
- Entity Effects
- Players
- Mobs (W.I.P)
- Animals (W.I.P)
- Entity AI
- Boss (W.I.P)
- Villagers (W.I.P)
- Entity Saving
- Server
- Proxy
- Bungeecord
- Velocity
How to run
See our Quick Start guide to get Pumpkin running.
Contributions
Contributions are welcome! See CONTRIBUTING.md
Docs
Pumpkin's documentation can be found at https://pumpkinmc.org/
Communication
Consider joining our Discord server 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 the Donation Page.
Description
Empowering everyone to host fast and efficient Minecraft servers.
dockergame-servergamedevminecraftminecraft-bedrock-editionminecraft-protocolminecraft-servernetworkingrustserver
Readme
GPL-3.0
250 MiB
Languages
Rust
100%
