mirror of
https://github.com/Pumpkin-MC/Pumpkin.git
synced 2026-08-30 20:14:23 +00:00
75994f3302fa76078087b9a113130541e4d3fc37
* Add /place template command with BlockPlacer trait and tab-completion support - Add BlockPlacer trait to abstract block placement over ProtoChunk (worldgen) and WorldBlockPlacer (live command), used by place_template() - Implement BlockPlacer for ProtoChunk (pumpkin-world) and WorldBlockPlacer (pumpkin crate) - Add World::queue_block_updates() to insert into unsent_block_changes without triggering full set_block_state callbacks - Generate _generated_all_template_names() at build time from structure assets for use in tab-completion suggestions - Add TemplateNameArgumentType for the new command system with list_suggestions() using all_template_names() - Implement /place template <template> [pos] in the new command system (CommandDispatcher, CommandExecutor, ArgumentBuilder) - Fix borrow-across-await: clone template name to owned String early * feat: add /place structure and /place jigsaw commands Adds /place structure <id> [pos] for all structure types with two placement paths: - Jigsaw structures (ancient_city, bastion_remnant, etc.): fast path using JigsawPlacement::add_pieces directly at the target position - Non-jigsaw structures (desert_pyramid, end_city, etc.): generate pieces via dispatch, place into synthetic ProtoChunks with pre-seeded heightmaps and a stone floor so pieces can detect terrain, then delta-apply only changed blocks to the world via WorldBlockPlacer Also adds /place jigsaw <pool> <target> <depth> [pos] for manual jigsaw template placement. Architecture: - generate_structure_position() extracts the shared generator dispatch from try_generate_structure / lazily_generate_structure (both now delegate to it, eliminating ~150 lines of duplicated match arms) - place_pool_element_templates() extracted from PoolElementStructurePiece for reuse by the command with WorldBlockPlacer - StructureKeys gains from_name()/to_name()/all_names() via codegen - StructureNameArgumentType and PoolNameArgumentType for tab-completion - flat_ocean_floor_height_map made pub in ProtoChunk for heightmap seeding * feat: add /place feature command Adds /place feature <feature> [pos] for placing configured features at a specific position. Resolves the PlacedFeature name via from_name(), resolves the inner ConfiguredFeature from PLACED_FEATURES / CONFIGURED_FEATURES, then calls ConfiguredFeature::generate() directly at the target position -- skipping placement modifiers so the feature appears exactly where specified. Also adds /place structure improvements: - Synthetic chunk terrain fill: stone below surface + grass on top, so pieces that carve through solid terrain (stronghold corridors, etc.) find material to work with. Snapshot/delta ensures only structure blocks reach the world. - Shared snapshot_blocks() and apply_delta() helpers eliminate ~30 lines of duplicated diff logic between structure and feature paths. - ground_y() and chunk_population_seed() helpers replace magic numbers. - Structure success message now reports the structure name instead of the piece count. Infrastructure: - PlacedFeature::all_names() generated via pumpkin-codegen for tab-completion suggestions in PlacedFeatureNameArgumentType. - GenerationCache trait implemented for ProtoChunk (single-chunk delegation) so ConfiguredFeature::generate() works without the full chunk-generation cache system. - flat_ocean_floor_height_map made pub in ProtoChunk for heightmap seeding. - configured_features and feature modules made pub for access from the command crate. * fix(command): use world settings for place * docs(place): clarify synthetic terrain delta behavior
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%
