Skip to content

How it works

castledking edited this page Oct 8, 2026 · 1 revision

How it works

The shape of it

CMB Paperized is two things:

  1. A CraftEngine pack — generated YAML plus a resource pack, containing 996 pieces.
  2. A companion plugin (cmb) — installs the pack into CraftEngine, adds connectivity, water-flow behaviour, the warped nether wart crop, and the /cmb commands.

Players join with a vanilla client. The server sends the resource pack; that is the whole install.

Nothing vanilla changes

Most CraftEngine packs borrow vanilla blockstates that real blocks also use, which is why a barrel or a crafter can suddenly look like something else. This pack never does.

Every block is drawn on a state CraftEngine allocates at load time (auto_state: solid), not on a real blockstate. So:

  • No real blockstate is ever borrowed.
  • CraftEngine remembers what each position was before, and restores it when it unloads. Uninstall the pack and every vanilla block comes back exactly as it was.
  • This costs 368 CraftEngine internal states instead of competing for real blockstates.

Walls are the clearest case for why real blockstates are not borrowable: every vanilla wall blockstate is multipart, and overwriting one strips the multipart rules, leaving thousands of real wall states with no model at all. The build refuses anything it cannot prove is safe.

Why most of the pack is furniture

A CraftEngine block gets its collision from the vanilla blockstate it is drawn on. When there is no safe state to borrow, the piece becomes furniture:

  • a display entity for the model
  • CraftEngine's scaled shulker hitbox for collision

That hitbox is what makes walls, fences, horizontal stairs and vertical slabs usable rather than merely visible:

  • It is invisible and AI-less — pure client packets, so players never see or interact with it as an entity, while collision is a real server-side box.
  • It is scaled, so a hitbox can be shaped rather than being a fixed cube. Walls and fences tile several together, which is how a 2-block-tall wall gets correct collision on every face.
  • You can walk into them, stand on them, build against them and break them.

Furniture is the trade: it is an entity, so it emits no neighbour updates and carries no redstone. The plain blocks, stairs and slabs are always served; the furniture families are opt-in via features in config.yml.

Double slabs

Two matching slabs in one cell become the full block, and breaking it drops 2 slabs back. A doubled slab is one piece with two representations, not two pieces:

  • block — a real block on the solid pool, with its own hardness, mining tags, sounds and loot; takes pistons, shows cracking.
  • furniture — breaks in one hit like the slab it stands in for.

features.vertical-slabs.doubles chooses: block, furniture, or both (default). Both representations ship, which is why the piece counts do not add doubles twice.

Vertical slabs and horizontal stairs

Additions this port makes, not upstream content:

  • Vertical slab — a slab stood on edge. One per material, for CMB and all vanilla materials (oak_vertical, acacia_vertical, …). Placed on the ground or against a wall; collision matches either.
  • Horizontal stair — a stair on its side, an L filling three quarters of the cell at full height. It is the corner piece that joins two vertical slab walls.

Both are furniture, with the same sources and the same disabled list.

The doubled-slab count rule

268 doubled ids appear in both the block tree and the furniture tree. Counting both trees adds them twice, which is how an earlier version of this project arrived at 1,264 pieces. The real figure is 996: 347 blocks plus 649 furniture, with the overlap subtracted once. The build's count check fails on drift, so the docs cannot disagree with the pack.

Clone this wiki locally