CraftBook Build #4949

This is not a stable download!

We recommend the use of released versions whenever possible.

View Stable Downloads
ProjectCraftBook
StatusSUCCESS
Branchmaster
Number#4949-88df757
Date4 days ago
Artifacts

Sponsor
Apex Hosting
Changes
IDSummaryCommitterDate
88df7572
  • Treat shelves as containers in pipes (#1376)
    • Treat shelves as containers in pipes and inventory checks The shelf block entity implements Container, so vanilla hoppers insert into and extract from its three slots. This lets pipes do the same: wooden_shelves joins the container check and the pipe pull list, and insertion goes through the ordinary inventory path.
    • Collapse the duplicated container family into one predicate Adding shelves meant editing the same generic-container list in two places, the pipe pull check and doesBlockHaveInventory, which is how the two drift. hasGenericInventory now owns the family (plain item slots, safe to insert or pull generically); doesBlockHaveInventory is that family plus the four role-slot blocks whose callers route them through dedicated branches. The next container type lands in one place.
    • Detach pulled stacks from their slot, and resync shelf displays Two findings from testing shelves on a live 26.2 server. Some containers hand out a mirror of the slot from getContents, so removing the slot contents also empties the stack the pipe is carrying and the pull delivers air; pulled stacks are cloned before removal. And shelves render their contents but vanilla only resyncs the display on player interaction, so pipe mutations leave clients showing stale items until the chunk reloads; a state captured after the mutation is written back for shelf pulls and inserts. Capture order matters: updating a state from before the removals writes the old contents back into the world.
    • One sync point for display containers, and it fixes chiseled bookshelves Comparing the shelf handling against its nearest neighbour showed the same bug class has been sitting in chiseled bookshelves: a pipe edit lands in the inventory but the slot_X_occupied blockstate never moves, so the shelf renders wrong and the comparator signal lies. The two publish mechanisms differ (bookshelves use blockstate properties, shelves block-entity data), so syncDisp...
59487370+rasmuskd@users.noreply.github.com4 days ago