mirror of
https://github.com/Pumpkin-MC/Pumpkin.git
synced 2026-08-30 20:14:23 +00:00
fe0c442a02f905c55f2383879c78fd15e6eabfa8
Vanilla Player#attack ends its successful-hit branch with causeFoodExhaustion(0.1F), and Block#playerDestroy calls player.causeFoodExhaustion(0.005F) for every block destroyed. Pumpkin never called add_exhaustion from either path: the only callers were the Hunger status effect in entity/living.rs and jump/sprint movement in entity/player.rs. Combat and mining were therefore free, so the hunger bar was effectively cosmetic for a player who was not sprinting. Player::attack now adds 0.1 exhaustion at the end of the hit path, after the damage_with_context early-return, so only hits that actually deal damage cost hunger. The Java and Bedrock block-break handlers now add MINE_BLOCK_EXHAUSTION (0.005) per block broken. Mining exhaustion is gated exactly where vanilla gates Block#playerDestroy: ServerPlayerGameMode#destroyBlock skips it in creative and when the block was broken without a tool that can harvest it, so the call sites reuse the existing can_harvest / block_drop checks rather than adding new conditions. Creative and spectator players are additionally covered by the existing abilities.invulnerable guard in Player::add_exhaustion, which mirrors vanilla Player#causeFoodExhaustion. Limitation: swimming exhaustion (0.01 per metre) is still missing. Player::progress_motion only implements the onGround branch of vanilla ServerPlayer#checkMovementStatistics; adding the swimming and in-water branches requires the whole else-if chain plus movement-state plumbing (Player::is_swimming is itself still an inferred approximation carrying a TODO), so it is deliberately left out of this change.
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%
