Repository navigation
Releases: Conman1533/PEX
Release list
PEX 1.2.1
PEX 1.2.1 fixes a crash in 1.2.0: a mistyped command containing non-ASCII text, such as /tp "玩家一号" 玩家一号, panicked while building the error message and shut down the whole server. Any player could trigger it from chat. The error now shows the last ten characters before the mistake, like vanilla. Upgrading is recommended. It runs Minecraft 26.3 (protocol 777).
Built from commit 83642d3.
Downloads
| File | For |
|---|---|
pumpkin-X64-Linux |
Linux x86-64 (glibc 2.35 or newer). Loads native plugins. |
pumpkin-X64-Linux-musl |
Static Linux x86-64 build. Can't load native plugins. |
pumpkin-plugins-X64-Linux.zip |
WorldPumpkin, PEXGuard and PEXProtect for pumpkin-X64-Linux |
Replace your plugin files too. Native plugins only work with the exact build they came from, so the 1.2.0 plugin files won't work with this server. Unzip pumpkin-plugins-X64-Linux.zip into plugins/, overwriting the old files. Your plugin data in plugins/data/ is kept.
These files were built outside GitHub Actions, which is currently disabled for this repository. They were built with rustc 1.99.1 in a Debian 12 container using the same cargo build --release steps as the release workflow. ARM64 Linux, Windows and Android builds aren't included. Until they're added, use 1.2.0 on those platforms and avoid the crashing commands.
Checksums are in SHA256SUMS.
PEX 1.2.0
PEX 1.2 adds three native plugins built with the server (WorldPumpkin, PEXGuard and PEXProtect), merges 22 upstream Pumpkin changes including the new region IO and the Pump world format, and updates world saves to 26.3. It runs Minecraft 26.3 (protocol 777).
Built from commit e3b1966.
Native plugins
Each release now has a pumpkin-plugins-<arch>-<os>.zip next to the server binary:
| Plugin | What it does | Commands |
|---|---|---|
| WorldPumpkin | World editing: selections, fill with block patterns, replace, walls, move, undo and redo. A native port of WorldPumpkin by NicDevTV. | //pos1 //pos2 //hpos1 //hpos2 //chunk //expand //set //replace //walls //move //undo //redo /wp |
| PEXGuard | Region protection: build, interact, chest access, PvP, mob damage and spawning, explosions, fire, liquid flow, pistons, entry, greetings. | /rg (/region) |
| PEXProtect | Block logging with inspect, lookup, rollback and restore. | /co (/coreprotect) |
To install, unzip the plugins you want into the server's plugins/ folder. Each plugin writes its config to plugins/data/<plugin>/.
Use plugin files from the same release as the server. Native plugins only work with the exact build they came from: a file from another build loads without an error and then misbehaves or crashes. The static musl build can't load native plugins, so use pumpkin-X64-Linux if you want them.
native-plugins/PORTING_GUIDE.md covers writing your own plugin. Start from native-plugins/template/.
World storage
- Pump is the default chunk format for new servers. It's Pumpkin's own region format (
.pumpfiles). Existing servers keep the format set in theirpumpkin.toml. - Automatic conversion. When a world's region files don't match the configured
[world.chunk] type, they're converted when the server starts, and the old files are deleted. You can also convert ahead of time with./pumpkin --convert-world pump(oranvilorlinear). Converting our 56,000-chunk test world took 8 seconds. - Pump files are bigger than Anvil with ZLib: the test world grew from 351 MB to 531 MB.
- New region IO from upstream (Pumpkin-MC#4062). Region files stay open and only changed chunks are written. It replaces PEX's
write_in_placeoption, which is now ignored and can be removed frompumpkin.toml. - Saves use the 26.3 world data version (Pumpkin-MC#4094). Failures to replace
level.datare now reported (Pumpkin-MC#3526). - Player chunk tickets are released from the same place they were added (Pumpkin-MC#4103).
Gameplay fixes from upstream
- Wither skeletons apply Wither, burning skeletons shoot flaming arrows, and mobs respect their effect immunities (Pumpkin-MC#4038).
- Crops need light level 9 to grow (Pumpkin-MC#4100).
- Blocks can be placed against redstone ore (Pumpkin-MC#4025).
- Items with a
use_remainder(such as honey bottles and soups) leave it behind when you finish using them (Pumpkin-MC#3977). - Blocks placed by
/fillrun their placement callbacks, like blocks placed any other way (Pumpkin-MC#3964). - Copper chests play the right sound for each oxidation stage (Pumpkin-MC#4071).
- Each structure is counted once when terrain adapts around structures (Pumpkin-MC#4037).
- Mob spawners compute spawn distance correctly (Pumpkin-MC#3891).
- Flat worlds are flagged as flat to Java clients, so the horizon renders right (Pumpkin-MC#4102).
- Block loot tables come from block data instead of being built from the block name (Pumpkin-MC#3997).
Performance and internals
- Startup computes stronghold rings in the background and skips the key fetch for unsigned plugins (Pumpkin-MC#3764).
- Block properties and structure processor tags are typed enums instead of strings.
- WASM plugins get the async v0.2 plugin ABI (Pumpkin-MC#3713). v0.1 plugins still load.
- More built-in GameTests.
Downloads
| File | Platform |
|---|---|
pumpkin-X64-Linux |
Linux x86-64, glibc 2.35+ (Ubuntu 22.04+, Debian 12+) |
pumpkin-X64-Linux-musl |
Linux x86-64, static: runs on any distribution, including Alpine. Can't load native plugins |
pumpkin-ARM64-Linux |
Linux ARM64, glibc 2.35+ (Raspberry Pi OS 12+, Ubuntu 22.04+ on ARM) |
pumpkin-X64-Windows.exe |
Windows 10/11 x86-64 |
pumpkin-plugins-X64-Linux.zip |
Native plugins for pumpkin-X64-Linux |
pumpkin-plugins-ARM64-Linux.zip |
Native plugins for pumpkin-ARM64-Linux |
pumpkin-plugins-X64-Windows.zip |
Native plugins for pumpkin-X64-Windows.exe |
SHA256SUMS lists the checksums. Everything was built with full release optimisation (fat LTO). Both x86-64 Linux builds were started on a fresh world and on a 1.1 world before release, and the three plugins were loaded into pumpkin-X64-Linux. The ARM64 and Windows builds and their plugins were cross-compiled and weren't run on real hardware.
Upgrading
Replace the binary. Worlds and pumpkin.toml from 1.1 work as they are.
- A
pumpkin.tomlwritten by PEX 1.0 or 1.1 setstype = "anvil"under[world.chunk], so your world stays in Anvil format. If you removed that line, or you switch it topump, the world is converted on the next start and the Anvil files are deleted. Back up the world first.--convert-world anvilconverts back. - Worlds saved by 1.2 use the 26.3 data version. Going back to 1.1 afterwards hasn't been tested, so keep a backup if you might downgrade.
Known issues
- Carried over from 1.1: template features place only their first palette, higher network use than Paper, spiky 95th-percentile ticks, occasional rejected block placements at some spots, and the
pumpkin:summon_command_regressionGameTest fixture.
Thanks to everyone who play-tested alpha.baconmc.net.
Full changelog: v1.1.0...v1.2.0
PEX 1.1.0
PEX 1.1 brings the sculk and creaking mechanics to life, places more of vanilla's world generation features, and gives passive mobs vanilla behaviour. It runs Minecraft 26.3 (protocol 777) and is a drop-in upgrade from 1.0.
Built from commit 2009aa6.
Sculk and creaking
- Vibrations. A port of vanilla's vibration system: game events travel to sculk sensors, calibrated sculk sensors, shriekers, wardens and allays, with vanilla listener ranges, frequencies, travel time and occlusion by
#minecraft:dampens_vibrationsblocks (wool, and wool-carrying item entities). - Game events are now emitted for steps and swimming, landing, placing and breaking blocks, eating and drinking, projectiles, containers, doors, trapdoors and fence gates, equipping, splashing, damage and death, explosions, fluids, note blocks, jukeboxes, shearing, goat horns and elytra gliding.
- Ancient cities work. Sensors activate shriekers, shriekers warn the player who caused the vibration, and the fourth warning summons a warden. Calibrated sensors filter by the frequency on their input side, and amethyst resonance is in.
- Warden: listens for vibrations, builds anger like vanilla (+35 per disturbance, +10 for repeated projectiles), investigates disturbances, shivers its tendrils and applies the darkness aura. Anger is saved with the warden.
- Allay: binds to a note block it hears for 30 seconds and dances near a playing jukebox.
- Creaking heart: spawns its creaking protector at night near survival and adventure players, despawns it at dawn or when it strays, spreads resin when the creaking is hurt, gives a comparator signal, switches between dormant, awake and uprooted, and drops 20–24 XP when a natural heart is broken. The creaking now stays in place while it can't move.
- Vibration listener state is saved in the vanilla
listenerNBT on sensors, shriekers, wardens and allays.
World generation
- Template features (desert wells, sulfur springs and others) with fluid filling and shape updates after placement. The hard-coded desert well is replaced by the data-driven one.
sequencefeatures,volume_match,cuboid,random_chanceandrandomly_selectedplacement, matching vanilla 26.3.- Geodes and end spikes are seeded from the world seed, and omitted geode fields use vanilla's defaults.
- Dappled forest features are placed in vanilla biome order.
- Generated sculk sensors, shriekers, catalysts and creaking hearts get their block entities, and chunks saved without them get them back on load.
Mobs
- Breeding, tempting and feeding with each animal's vanilla item tags.
- Vanilla goal lists and priorities for horses, llamas and the other animals. Tamable pets sit, leap and hunt.
- Panic goal variants, ambient sounds, and a water-avoiding random stroll for land animals.
- Baby hoglins grow up, and the entity tick counter is separate from age.
- Pathfinding: closed nodes stay closed, neighbour path types are checked in vanilla order, random targets are filtered by path type, and the extra stuck check is gone. Mobs only jump out of fluids when there's headroom.
- Drowned sink instead of floating. Naturally spawned mobs and portal-spawned zombified piglins get their equipment.
- The monster spawn light check darkens sky light by time of day, like vanilla.
Other fixes
forceloadnow gives chunks a ticket, so they load without a player nearby.- Loot tables check the
is_babyflag and vehicle type inentity_properties. - Jump detection on combined position and rotation packets uses the on-ground flag, like vanilla.
Downloads
| File | Platform |
|---|---|
pumpkin-X64-Linux |
Linux x86-64, glibc 2.35+ (Ubuntu 22.04+, Debian 12+) |
pumpkin-X64-Linux-musl |
Linux x86-64, static: runs on any distribution, including Alpine |
pumpkin-ARM64-Linux |
Linux ARM64, glibc 2.35+ (Raspberry Pi OS 12+, Ubuntu 22.04+ on ARM) |
pumpkin-X64-Windows.exe |
Windows 10/11 x86-64 |
SHA256SUMS lists the checksums. All four were built with full release optimisation (fat LTO). The x86-64 builds were started and checked before release; the ARM64 and Windows builds were cross-compiled and weren't run on real hardware.
Upgrading
Replace the binary. Worlds and pumpkin.toml from 1.0 work as they are.
Known issues
- Template features place only their first palette (every current vanilla template has one), and shape updates after placement cover only the blocks those templates use.
- Carried over from 1.0: higher network use than Paper, spiky 95th-percentile ticks, occasional rejected block placements at some spots, and the
pumpkin:summon_command_regressionGameTest fixture.
Thanks to Neon Swan and everyone who play-tested alpha.baconmc.net.
Full changelog: v1.0.0...v1.1.0
PEX 1.0.0
PEX 1.0 is the first stable release of PEX, an experimental fork of Pumpkin, the Minecraft Java Edition server written in Rust. It runs Minecraft 26.3 (protocol 777) and includes everything in upstream Pumpkin as of 14 October 2026, plus about 140 PEX changes focused on reliability, vanilla parity and resource use.
Built from commit 74d1a6a.
Performance
Measured with the open gameplay benchmark: the same world and the same bot players (builders, miners, AFK players and explorers, with farms running) on both servers, each with 4 CPU cores and 8 GB.
| Against Paper 26.3 (JVM) | Paper | PEX 1.0 |
|---|---|---|
| Tick time, 8 players | 12.4 ms | 6.3 ms |
| Tick time, 24 players | 20.5 ms | 12.0 ms |
| Busiest thread, 24 players | 42% of a core | 23% |
| Memory (average) | 1,607 MiB | 582 MiB |
| Startup | 42 s | 0.5 s |
In a 2-hour run against upstream Pumpkin, PEX wrote 214 MiB to disk where Pumpkin wrote 13,352 MiB, for worlds of the same size.
Highlights
Storage and reliability
- Region files are written like vanilla's
RegionFile: only changed chunks are rewritten, in place, with zlib compression. That cuts disk writes by up to 98% and keeps worlds fully vanilla-compatible. - Keeps running when the disk is full, and keeps unsaved chunks instead of dropping them. Failed region writes are retried on every save and their sectors freed.
- Corrupt or truncated region data (a cut-off chunk header, a chunk too big for the header) is refused with an error instead of panicking or corrupting the file.
- Block entities (chests, hoppers, furnaces) are saved before
stopunloads their chunks. - Loads worlds saved by vanilla 26.3.
- Overdue scheduled ticks run when an inactive chunk becomes active again.
Performance
- Entity lookups use vanilla's per-section entity storage, and the entity tracker and natural-spawn mob counts run in parallel.
- Smaller memory footprint: compact palettes for small block palettes, uniform light sections without arrays, no preallocated pathfinding heaps. On the glibc builds, freed memory is returned to the OS once a minute.
- zlib via zlib-rs for chunk storage and network compression.
- Optional per-tick and per-minute metrics, configured in
pumpkin.toml.
Gameplay parity with vanilla
- Mobs: vanilla despawning, peaceful-mode discarding, fish and squid swimming, suffocation only in blocks vanilla suffocates in, leads dropped on death and kept across chunk reloads, skeleton weapon goals, chicken eggs laid at the chicken.
- Fishing: a complete fishing bobber (throwing, hooking blocks, mobs and players, bites, catches and events).
- Hoppers: eject in the direction they face after a reload, correct cooldown chaining, whole-stack pickup.
- Items and inventories: bundles (merging, weights, clicks, quick move), consumable items consumed only when their use ends, recipe book placement limits, off-hand pickup merging, chest boat inventories that save their contents and loot table.
- Blocks: big dripleaf, sea pickles, crops and stems, sugar cane, farmland trampling, scaffolding, banners on walls, snow and fire updates, observer timing.
- Merchants: the out-of-stock flag on offers is applied.
Packaging
- Default MOTD "PEX, an experimental fork of Pumpkin", and "Pumpkin Experimental" in the F3 screen.
- A Pelican/Pterodactyl egg (
egg-pex.json).
Downloads
| File | Platform |
|---|---|
pumpkin-X64-Linux |
Linux x86-64, glibc 2.35+ (Ubuntu 22.04+, Debian 12+). Built from the same code as the benchmarked build. |
pumpkin-X64-Linux-musl |
Linux x86-64, static: runs on any distribution, including Alpine |
pumpkin-ARM64-Linux |
Linux ARM64, glibc 2.35+ (Raspberry Pi OS 12+, Ubuntu 22.04+ on ARM) |
pumpkin-X64-Windows.exe |
Windows 10/11 x86-64 |
SHA256SUMS lists the checksums. All four were built with full release optimisation (fat LTO). The x86-64 builds were run and tested before release. The ARM64 and Windows builds were cross-compiled and their dependencies checked, but they weren't run on real hardware for this release. macOS, Android, ARM64 Windows and ARM64 musl builds will follow from the nightly workflow.
Compatibility
- From Pumpkin: drop the binary in place. Existing worlds and
pumpkin.tomlwork. Missing settings are added with their defaults. Chunks Pumpkin saved with LZ4 are rewritten with zlib the next time they're saved. - From vanilla or Paper: worlds load as they are, and PEX saves them in the vanilla format.
- Plugins: Pumpkin plugins work as they do on Pumpkin. Bukkit, Paper, Fabric and Forge plugins are not supported.
Known issues
- PEX sends about 45% more network data to players than Paper under the same load.
- PEX's slowest ticks (95th percentile) are about as slow as Paper's, even though its average tick is half as long.
- At some building spots, block placements are occasionally rejected for a minute or more.
- The embedded GameTest
pumpkin:summon_command_regressioncan't run: its structure file fails to load ("Palette entry 0 is missing 'Name'"). forceloaddoesn't load chunks unless a player is near them.
PEX Alpha Build
Alpha build of the alpha branch for testing before it is merged into master.
From commit: d6615b1
Built on: 2026-10-15 19:56 UTC, release profile (fat LTO)
Only one binary: x86-64 Linux, glibc 2.35 or newer (Ubuntu 22.04+, Debian 12+). For other platforms use the nightly or canary build.
Changes since master
- feat(config): configure the tick metrics in pumpkin.toml
- fix(entity): match vanilla fish flop, squid idle stop and chicken egg pitch
- fix(entity): queue the skeleton weapon reassessment for the next tick
- refactor(entity): match FishingHook.tick's hooked and gravity checks
- fix(entity): save the chest boat inventory and loot table like the minecart
- fix(entity): discard mobs that are not allowed in peaceful
- perf(world): keep indexed palette storage until the palette shrinks to 8
- fix(world): test the nibble palette layout and warn once per section
- fix(world): retry failed region writes on every save and free their sectors
- fix(world): refuse a chunk whose sector count overflows the region header
- fix(world): run overdue scheduled ticks once an inactive chunk ticks again
- refactor(block): encode the eyeblossom trail particle through the protocol
- fix(block): compare hopper ticked game time when chaining cooldowns
- fix(protocol): apply the merchant offer out-of-stock flag when decoding
- fix(item): merge a bundle insert into any matching stack
- chore(repo): point the README, CI and Dockerfile at PEX
- fix(entity): drop the lead when a leashed mob dies
- fix(entity): only consume items with a consumable component when their use ends
- fix(world): reject a region chunk header cut off by the end of the file
Canary Build
From commit: bbc4cd0
Generated on: 2026-10-14 19:42 UTC
Canary build of master for testing, built without LTO. The fully optimized daily build is the Nightly Build release.