Brings Cinch's Missing Blocks to Paper servers using CraftEngine, also adds horizontal stairs and vertical slabs!
Cinch's Missing Blocks — Paperized v1.0.0
Highlights
- No client mod — A CraftEngine pack plus the
cmbcompanion plugin. Players join with a vanilla client and are sent the pack from the server. The jar is the whole install: it bundles the generated pack and writes it into CraftEngine on every start. - 996 placeable pieces — 347 blocks and 649 furniture, covering every family the mod has. All 381 of the mod's blocks ship.
- Zero vanilla collateral — Every block state CMB uses is one CraftEngine has already freed. No barrel, crafter or chiseled bookshelf changes appearance, and nothing ships as a datapack.
- Walls, fences and panes — the families the earlier plan deferred. Every vanilla wall and fence blockstate is multipart, and overwriting one strips the multipart rules from thousands of real wall states. So they are furniture instead, with real posts and connection behaviour rather than a borrowed state.
- Vertical slabs and horizontal stairs — a slab stood on edge and a stair on its side, for CMB and vanilla materials, with ground, wall and ceiling placement and real collision.
- Warped nether wart — this port's own addition, a four-age crop with real growth and drops.
- Native drops, recipes, mining tags and creative categories — translated from the mod's own data into CraftEngine config.
Technical Details
Most of it is furniture, on purpose
A CraftEngine block is drawn on a vanilla block state, which is where its collision comes from — and borrowing one is only safe when a real block in that state is pixel-identical. That is a short list, so most of this pack is furniture: a display entity for the model, and CraftEngine's built-in scaled shulker hitbox for collision. Walls, fences, panes, horizontal stairs and vertical slabs are all served this way, which is what makes them usable rather than merely visible.
The trade is real and deliberate: furniture is an entity, so it does not emit neighbour updates
and carries no redstone. For building blocks that is the right trade. Those families are
therefore opt-in — features.vertical-slabs, features.horizontal-stairs and
features.furniture-fallback in plugins/CMB/config.yml. The plain blocks, stairs and slabs
are always on.
What is a real block
347 pieces are real CraftEngine blocks with vanilla collision: 174 vertical-slab doubles (two
stacked vertical slabs make the full block), 94 slab doubles, 61 full cubes, the five nether
brick fences — drawn over vanilla's own, so they connect like the real thing — and 13
pillars rotating on all three axes. Each takes auto_state: solid, a state CraftEngine allocates
at load time on whatever server runs it, so the pack never competes with real blocks for one and
no vanilla block ever changes appearance.
A doubled slab is one piece, not two, and it is a real block: place two in a cell and it becomes
a block on the solid pool with its own hardness, mining tags, sounds and loot. A furniture
representation of the same doubled slab ships alongside it, and the difference is not
cosmetic — the block form mines like a block and takes pistons, the furniture form breaks in one
hit like the slab. features.vertical-slabs.doubles chooses between them, and ships both by
default, so a server can pick.
That is two representations of one piece, which is why the totals do not count the doubles twice: 268 of the ids in the furniture tree are also in the block tree.
Verification
Every release build re-derives these and fails on any that does not hold. CI runs them on every push, so a green run is evidence rather than a claim:
| gate | what it proves |
|---|---|
carrier_eligibility |
no borrowed state is a multipart one, or collision-unsafe |
carrier_invariant |
claimed states are released, lendable and distinct |
block_schema |
every declared variant resolves |
model_references |
every model named by a blockstate exists |
l10n_references |
every translation key referenced is declared |
native_functionality |
drops, recipes and mining tags survive the port |
deferred_references |
nothing emitted names a deferred block |
yaml_sizes |
no generated file is over CraftEngine's limit |
On 26.3 the release build enables 381 of 381 mod blocks, 1,822 items, 1,383 recipes and 368 CraftEngine internal states.
Placement
Pieces replace what vanilla placement replaces — short grass, dead bushes, leaf litter, snow layers, seagrass — and leave the water where the plant was underwater. A vertical slab is double-clickable into a full block, and horizontal stairs are the corner piece for vertical slab walls.
Installing
Drop cmb into plugins/ and start the server. CraftEngine is the only dependency, and CMB
disables itself with a clear message if CraftEngine is absent, because every CMB block is a
CraftEngine block.
/cmb reload all re-reads the config, reinstalls the pack and has CraftEngine rebuild. The
first time an admin joins, CMB sends a short setup summary; /cmb setupmsg brings it back.
Resource pack delivery defaults to CraftEngine. If ResourcePackManager is installed, set
resource-pack.delivery: rspm and CMB switches CraftEngine's own sending off so the packs merge
instead of competing.
Requirements
- Paper 1.21.1 – 26.3
- Java 21 or newer (Paper 26.x itself needs Java 25)
- CraftEngine 26.9 or newer
These apply from the build that follows this release: the 1.0.0 jar first published was built for Paper 26.3 and Java 25 only, and refuses to load on Java 21. The current build is one Java 21 jar for the whole range, booted in CI on 1.21.1, 1.21.11 and 26.3. On a server older than 26.x, vertical slabs and horizontal stairs of vanilla materials it doesn't have (cinnabar, sulfur and poplar; before 1.21.4 also pale oak and resin bricks) are left out automatically.
1.20.x and older, 1.8 included, are not supported, and can't be: CraftEngine's oldest supported
version is 1.20.1, and CraftEngine applies the shulker hitbox scale every CMB furniture piece
collides through only from 1.20.5 (ShulkerFurnitureHitbox, behind
VersionHelper.isOrAbove1_20_5), so below that every piece would collide as a full block.
Known limitations
- Furniture does not emit neighbour updates and carries no redstone.
- Cinch stairs do not form corners with vanilla stairs, in either direction.
- Tinted glass panes are served as furniture, so they take several hits to break and carry no crack animation, like the other furniture families.
- Pieces need CraftEngine's shulker hitbox, so the pack is CraftEngine-specific by design.
- Jade, WorldEdit and similar overlays report the vanilla carrier block, not the CMB piece — Jade saying "Red Mushroom Block" over polished end stone bricks is the design working, not a defect. CMB borrows no real blockstate, so a tool asking the client which vanilla block is at this position gets the carrier. Jade has no CraftEngine integration, and its lookup only accepts a vanilla
Block, so there is nothing to configure. In-world models, collision and breaking are CMB's own.
Full detail on the wiki: Known limitations.
Platforms
Dependencies
- CraftEngine
- GriefPrevention Optional
- GriefPrevention3D Optional