An implementation of the Carpet Accurate Block Placement Protocol for Spigot/Paper-based servers. Adds support for FlexibleBlockPlacement from Tweakeroo and easyPlace from Litematica. Never place pistons, observers, or stairs wrong again!
Uses ProtocolLib and is compatible with Paper (and Spigot) 1.20 and newer. A single jar works across
every supported version — the plugin contains no NMS/version-specific code: block placement is handled
through the Bukkit API, block-placement packets are read via ProtocolLib, and the carpet:hello
handshake is carried over Bukkit Plugin Messaging.
Compatibility notes (verified against Litematica 1.20.1 → 26.2 and fabric-carpet sources):
- The easyPlace protocol V2 encoding is identical across all these versions, so placement decoding needs no per-version handling.
- Litematica detects a "carpet server" purely by seeing any packet on the
carpet:hellochannel (it never reads the payload), so easyPlaceProtocolVersion "Auto" resolves to Version 2 automatically; setting it to "Version 2" manually works too. - On 1.20.2+ the plugin sends the handshake in carpet's NBT format (the wire format changed in fabric-carpet 1.20.2). Players who have the Carpet mod installed client-side are handled correctly — the old varint-format handshake would disconnect them.
First of all make sure to install ProtocolLib: https://www.spigotmc.org/resources/protocollib.1997/
Then just download the plugin and drop it in your "plugins" folder, no configuration needed. https://github.com/shou692199/SpigotEasyPlaceProtocol/releases
For Litematica: Make sure easyPlaceProtocolVersion is set to "Version 2", then build with easyPlace like normal.
For Tweakeroo: Make sure carpetAccuratePlacementProtocol is set to "true", you can then enable and use Flexible Block Placement.