0.2.1 Release Notes
🚨 Highlights & Breaking Changes
- MSMP Replaced RCON (Breaking): Legacy RCON has been removed from the server core and replaced with the modern Minecraft Server Management Protocol (MSMP) over JSON-RPC. Server configuration has migrated from
rcontomanagement. - Pump Default Chunk Storage (Breaking / Migration):
pumpis now the default chunk storage format for world saving and loading, replacing Anvil for higher throughput and reduced disk footprint. A built-in chunk converter and CLI migration tool have been added to convert existing Anvil worlds. - Server Crate Architecture Split: Refactored the core monolithic server crate into modular crates:
pumpkin-core,pumpkin-wasm-host(-common,-v0_1,-v0_2), and the standalonepumpkinbinary (#3824) by @Phoenixxo. Master release builds now use optimized Thin LTO, while full Fat-LTO binaries are generated nightly. - PatchBukkit Integration Support: Exposed critical low-level plugin APIs (
Context,PluginManager.handlers, world/player event hooks,#[repr(C)]layouts) to support PatchBukkit running headless Paper and real NMS plugins on Pumpkin. - Mob AI Foundation Overhaul: Completely reworked entity AI execution flow (#4092) by @MegalithOfficial. Decoupled brain state from behavior execution, routed mob navigation through movement controls, and preserved path searches across tick steps.
- Async v0.2 Plugin ABI: Branched and stabilized the new asynchronous v0.2 WebAssembly plugin ABI (#3713, #3766, #3852) by @Phoenixxo and @QuantumSegfault, alongside upgrading Wasmtime to 50.0.0 with sequential engine isolation for v0.1 plugins (#4098).
Bedrock Edition Parity
- Resource Pack Streaming: Streamed resource packs dynamically to connecting Bedrock clients by @Snowiiii
- Block Actor Sync & Signs: Synchronized block actor data and added interactive sign editing support for Bedrock players by @Snowiiii
- StartGame Block Properties: Implemented block property serialization in the Bedrock
StartGamenetwork packet by @Snowiiii - Mob Metadata Abstraction: Abstracted entity metadata synchronization across Java and Bedrock clients by @Snowiiii
- Packet Codec Refactoring: Derived enum packet codecs and corrected Bedrock protocol naming (#3423) by @xRookieFight
Mobs & Entities
- Allay Gameplay: Implemented full Allay behaviors including item collection, delivery to players/note blocks, target chunk loading retention, path corner validation, and dancing to jukeboxes (#4174) by @MegalithOfficial & @AdmerPRO
- Cod Parity: Added full water animal and fish base state, vanilla swimming physics, schooling AI goals, and bucket pickup/placement (#4284) by @MegalithOfficial
- Sheep Parity: Synchronized wool colors and shearing states, fired shearing events, implemented dye interaction sounds, lamb growth from grass eating, mixed parental breeding wool colors, and water avoidance (#4173) by @MegalithOfficial
- Chicken Parity: Ported falling slow-fall travel mechanics, restricted egg laying to living adults with audio, saved chicken jockeys, preserved spawn variants, and allowed water pathing while keeping strolling out of water (#4175) by @MegalithOfficial
- Cow Parity: Added milk bucket item interaction on milking, variant propagation across calves, fluid ledge climb-out mechanics, and water-avoiding random strolls (#4171) by @MegalithOfficial
- Wither Skeleton Parity: Added Wither effect infliction on melee attack, burning arrow attacks, and status effect immunity (#4038) by @MegalithOfficial
- Iron Golem Animation: Added attack swing animation packets for Iron Golems (#3967) by @denys-shatin
- Neutral Mob AI: Corrected
NeutralMobanger persistence, target selection, and daylight sunburn triggers (#3568) by @zinedinp - Dimensions & Suffocation: Used entity dimensions for dynamic poses and eye heights (#4043) by @MegalithOfficial, and adopted vanilla suffocation predicates to prevent leaves from suffocating mobs (#4049) by @SplashGG
- Falling Blocks: Prevented falling blocks from replacing incompatible ground blocks on landing (#3864) by @ydw1904
- TNT Mechanics: Aligned TNT fuse times, gravity/drag acceleration, and priming velocities with vanilla (#3419) by @zinedinp
- Mob Spawners: Evaluated spawn potential distance in 64-bit float precision (#3891) by @Rennex07
- Tracker Resync: Resynced non-default entity data and metadata via
sendChangesduring dimension travel and respawn (#3401) by @zinedinp
Blocks, Items & Mechanics
- Block Behavior:
- Implemented full Conduit block behaviors, activation range calculations, and surrounding frame validation (#4018) by @MegalithOfficial
- Added Dragon Egg fall delay countdowns (#3882) and broadcast world event teleport particles (#3883) by @tom-devv
- Added unique oxidation stage sound variants for copper chests (#4071) by @sluhtie
- Aligned copper chain placement with clicked surface axes (#3870) by @Kron5620
- Enforced light level 9 minimum for crop growth (#4100) by @Kacperon
- Hydrated farmland during rain (#3932) by @saranxzi, and corrected stem growth and farmland moisture updates (#4013) by @MegalithOfficial
- Corrected sea pickle bonemeal spread (#4012) by @MegalithOfficial
- Matched vanilla daylight detector solar angle and signal calculations (#3786) by @Sandvoxel
- Scaled weighted pressure plate signals with entity count (#3877) by @Kron5620
- Allowed block placement against redstone ore (#4025) by @SplashGG
- Allowed player and mob heads to be placed directly on top of note blocks (#3966) by @DylanClouden28
- Wrote nether portal frame updates without unnecessary neighbour shape cascade updates (#3842) by @meaningg
- Broadcast client block break notifications when blocks self-destruct (#3722) by @gitKBDL
- Suppressed block break particles when leaves decay (#3828) by @tom-devv
- Added
BlockBehaviour::attackhook for dig initiation events (#3884) by @tom-devv
- Player & Inventory Mechanics:
- Centered player sleeping coordinates and skipped in-wall suffocation damage while asleep (#4097) by @SplashGG
- Corrected off-hand item pickup handling and inventory synchronization (#4104) by @0neRain
- Consistently respawned hardcore players in spectator mode (#4041) by @MegalithOfficial
- Prevented spectators from opening unrolled loot chests (#4016) by @The-Hypnos
- Decoded 26.3 spectator actions as optional entity IDs (#3705) by @Missing_Love
- Applied
use_remainderitem components upon finishing item consumption (#3977) by @SplashGG - Restricted signed book opening to server-verified packets (#3570) by @matheustavarestrindade
- Ported vanilla dropped item merging and tag-based entity damage absorption (#3711) by @zinedinp
- Required a mace weapon when triggering the "Over-overkill" advancement (#3825) by @tom-devv
- Loot Tables:
- Preserved full loot table JSON structure, conditions, and modifier ordering (#4186) by @MegalithOfficial
- Automatically cooked mob drop items when entities die while on fire or to Fire Aspect (#4040) by @MegalithOfficial
- Replaced manual block loot format strings with the generated
Block.loot_tableproperty (#3997) by @xSlime
World Generation & Storage
- Region File Optimization: Maintained open region file descriptors and wrote only dirty/modified chunk records to disk (#4062) by @MegalithOfficial
- Proto Chunk Memory: Restricted proto-chunk block allocation up to the highest non-air chunk section (#3710) by @MegalithOfficial
- Upgraded Chunks Without yPos: Added fallback to lowest numeric section Y when loading older upgraded chunks lacking
yPostags (#3488) by @matheustavarestrindade - Chunk Tickets: Safely released player chunk loading tickets at their original allocation coordinates (#4103) by @qhashofficial
- Recursive Block Updates: Guarded against recursive block change stack overflows (#3924) by @Phoenixxo
- Beardifier Blending: Counted each structure only once in terrain beardifier blending passes (#4037) by @The-Hypnos
- Top Layer Freezing: Gated snow top layer freezing on solid face support and ambient light levels (#3438) by @Kurenaiiiii
- World Schema & Flat Flags: Updated world generation schema format to 26.3 (#4094) by @MidnightDoes, and sent flat world generation tags to Java clients (#4102) by @noël Hagestein
- Disk Integrity: Handled
level.datreplacement disk write failures cleanly (#3526) by @Thijs226, and validated chunk payload lengths against corrupted region headers (#3916) by @CompileRider
Commands, Networking & Protocol
- Tick Flush & Timing: Implemented 50ms batch tick flushes for Java packet dispatch and vanilla 20 TPS timing (#3249) by @zinedinp
- Protocol Safety:
- Rejected VarInt/VarLong encodings containing overflowing terminal bits (#3536) by @GoatTech-42
- Sent variant data components with vanilla-aligned network IDs (#4285) by @MegalithOfficial
- Tagged partial game profile components as false (#3731) by @GFoniX
- Logged play packet decoding errors with their own dedicated error severity (#3850) by @Kron5620
- Gated network state transitions on fully completed logins (#3912) by @CompileRider
- Commands:
- Parsed item components matching vanilla syntax rules by @MegalithOfficial
- Triggered placement callbacks for blocks set via
/fill(#3964) by @SplashGG - Resolved
/locate structuresearches per target structure (#3862) by @ydw1904 - Implemented
/scoreboard playerssubcommands (#3595) and accepted score holders in/execute if score(#3596) by @matheustavarestrindade - Accepted namespaced function names and function tags in
/function(#3597) by @matheustavarestrindade - Enforced permission checks on registered command aliases (#3801) by @Sandvoxel
- Relocated
/contributorsand/sponsorsunder/pumpkinsubcommands by @Snowiiii - Rendered console and RCON output with standard Java translations (#3709) by @matheustavarestrindade
Plugins & WASM Host
- Inventory & GUI Sync: Corrected GUI slot mapping, container windows, and slot update broadcasting for plugins (#4157) by @MegalithOfficial
- Plugin Events: Provided world context and block coordinates to
BlockBurnEvent(#3857) and supported blocking round-trips forBlockDamageAbortEvent(#3898) by @meaningg - Plugin Lifecycle: Handled shutdown store cleanup races (#3727) by @Phoenixxo, and stopped plugin hot-reload filesystem watchers on server termination (#3670) by @yAstrosss
- Resource Cleanup: Unified WASM resource disposal and runtime cleanup (#3258) by @PigTurtle
- Scheduling: Added stackless global domain scheduling (#3453) by @Phoenixxo
Core Server, Build & Codegen
- Fast Startup: Calculated stronghold generation rings in background Rayon threads during boot (#3764) by @zinedinp
- Build Optimization: Reduced fat-LTO release link memory usage by 24% (#3866) by @Sandvoxel, and eliminated redundant rebuild triggers (#3746) by @Rennex07
- Data Representation: Replaced runtime string comparisons for block properties and structure processor tags with typed enums by @Snowiiii
- Structure Lookup: Optimized structure template metadata queries with compile-time perfect hash functions (
phf) (#3787) by @UMCEKO - Codegen & WIT: Generated block transformer rules (#3982) by @SplashGG, cleaned up Rust-to-WIT code generation (#4074) by @QuantumSegfault, and added GameTest WIT definitions (#3770) by @KyleDavis
- Config Compatibility: Accepted standard vanilla ops field names in configuration files (#3736) by @Rennex07, and enforced hardcore difficulty consistency (#3501) by @Kurenaiiiii
- Docker & Packaging: Fixed data persistence issues in Docker containers (#3692) by @Phoenixxo, and enabled vanilla jar fetching for sandboxed Nix builds (#3892) by @xnacly
- Guidelines: Added
AGENTS.mdspecifying development and parity rules for coding agents (#3714) by @MegalithOfficial
New Contributors
- @yAstrosss made their first contribution in #3670
- @GoatTech-42 made their first contribution in #3536
- @GFoniX made their first contribution in #3731
- @gitKBDL made their first contribution in #3722
- @Rennex07 made their first contribution in #3736
- @Kron5620 made their first contribution in #3850
- @Sandvoxel made their first contribution in #3801
- @meaningg made their first contribution in #3842
- @xnacly made their first contribution in #3892
- @UMCEKO made their first contribution in #3787
- @DylanClouden28 made their first contribution in #3966
- @saranxzi made their first contribution in #3932
- @The-Hypnos made their first contribution in #4016
- @SplashGG made their first contribution in #4049
- @qhashofficial made their first contribution in #4103
- @Kacperon made their first contribution in #4100
- @sluhtie made their first contribution in #4071
- @0neRain made their first contribution in #4104
Full Changelog: 0.2.0+26.3-26.51...0.2.1+26.3-26.51