Skip to content

PEX 1.2.0

Choose a tag to compare

@Conman1533 Conman1533 released this 19 Oct 19:13
e3b1966

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 (.pump files). Existing servers keep the format set in their pumpkin.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 (or anvil or linear). 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_place option, which is now ignored and can be removed from pumpkin.toml.
  • Saves use the 26.3 world data version (Pumpkin-MC#4094). Failures to replace level.dat are 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 /fill run 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.toml written by PEX 1.0 or 1.1 sets type = "anvil" under [world.chunk], so your world stays in Anvil format. If you removed that line, or you switch it to pump, the world is converted on the next start and the Anvil files are deleted. Back up the world first. --convert-world anvil converts 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_regression GameTest fixture.

Thanks to everyone who play-tested alpha.baconmc.net.

Full changelog: v1.1.0...v1.2.0