docs/BLOCKS.md

Blocks

1504 words · ~7 min read

One section per family / decor set (concept §4.2), filled in by the family issues.

Relic cache and relic artifact

Data preservation: nothing from the old world disappears silently.

  • Relic cache (tinfoil:relic_cache): a sealed coffer stamped CLASSIFIED that stands in for a block entity the port couldn't map. Breaking it releases its Items: stacks whose item still exists are upgraded from 1.20.1 with Minecraft's data fixers (enchantments, damage, names survive); the rest become relic artifacts.
  • Relic artifact (tinfoil:relic_artifact): an item that remembers the original id and NBT (tooltip "Relic of "; F3+H shows the tag count and data version).
  • /tinfoil relic inspect (look at a cache or hold an artifact) prints the stored origin; /tinfoil relic list [chunkRadius] counts caches in loaded chunks.

Block-entity format written by the porter (porter remap)

{ id: "tinfoil:relic_cache",
  tinfoil_origin: { id: "ironchests:iron_chest", state: "ironchests:iron_chest[facing=north]",
                    data: { …original block-entity NBT, incl. Items… }, data_version: 3465 } }

The block itself is tinfoil:relic_cache (no properties). x, y, z are set; data is the untouched 1.20.1 NBT (id, position and Items included). A cache is written for every relic_cache row of block_entities.csv whose BE carries something (items, text, fluids, owners; bare numbers don't count), for converts the porter can't express (e.g. iron chests with contents, stoves with more than three stacks, paintings that would overlap), and for kept BEs whose block the table maps to air or a Tinfoil block.

Relic artifacts written by the porter

Items that items.csv maps to tinfoil:relic_artifact come in two shapes, depending on whether Minecraft's DataFixer will upgrade the container they sit in:

  • 1.20.1 stacks (vanilla containers, entities, player data; the DataFixer upgrades them on load): {id: "tinfoil:relic_artifact", Count: n, tag: {tinfoil_origin: {id, state: "", data: <original stack NBT>, data_version: 3465}}}. The DataFixer moves the unknown tag into minecraft:custom_data, so the mod converts custom_data.tinfoil_origin into the tinfoil:relic_origin component (RelicArtifactItem.migrate, done; was a follow-up in mod/).
  • 1.21 stacks (modded containers the DataFixer skips, e.g. handcrafted:container): {id: "tinfoil:relic_artifact", count: n, components: {"tinfoil:relic_origin": {id, state: "", data, data_version: 3465}}}.

Block families

Generated from porter/mappings/tinfoil_blocks.csv (the porter decides what exists). Textures: tools/art/stone-textures.mjs, tools/art/material-textures.mjs; sheets in docs/art/MOODBOARD.md. Every block has a recipe: one crafting entry per family from vanilla materials, the rest from the stonecutter (slabs ×2).

familyblocksreplaces (blocks in the transfer zones)
ancient_shinglesancient_shingle_slab, ancient_shingle_stairs, ancient_shingles1,702
atlantean_marbleatlantean_marble, atlantean_marble_brick_slab, atlantean_marble_brick_stairs, atlantean_marble_brick_wall, atlantean_marble_bricks, atlantean_marble_button, atlantean_marble_lines, atlantean_marble_pillar, atlantean_marble_slab, atlantean_marble_stairs, atlantean_marble_tile_wall, atlantean_marble_tiles, atlantean_marble_wall, chiseled_atlantean_marble, chiseled_atlantean_marble_pillar, polished_atlantean_marble, polished_atlantean_marble_slab, polished_atlantean_marble_stairs, small_atlantean_marble_brick_stairs, small_atlantean_marble_bricks9,162
bermuda_stonebermuda_stone, bermuda_stone_brick_stairs, bermuda_stone_bricks, bermuda_stone_button, bermuda_stone_lines, bermuda_stone_pillar, bermuda_stone_slab, bermuda_stone_stairs, bermuda_stone_tile_slab, bermuda_stone_tile_stairs, bermuda_stone_tiles, bermuda_stone_wall, chiseled_bermuda_stone, polished_bermuda_stone, small_bermuda_stone_brick_slab, small_bermuda_stone_bricks4,857
crop_circle_mosaicacacia_crop_circle_mosaic, acacia_crop_circle_mosaic_slab, birch_crop_circle_mosaic, birch_crop_circle_mosaic_slab, blue_crop_circle_mosaic, blue_crop_circle_mosaic_slab, brown_crop_circle_mosaic, brown_crop_circle_mosaic_slab, cherry_crop_circle_mosaic, cherry_crop_circle_mosaic_slab, green_crop_circle_mosaic, green_crop_circle_mosaic_slab, jungle_crop_circle_mosaic, jungle_crop_circle_mosaic_slab, oak_crop_circle_mosaic, oak_crop_circle_mosaic_slab, red_crop_circle_mosaic, red_crop_circle_mosaic_slab, white_crop_circle_mosaic, white_crop_circle_mosaic_slab, yellow_crop_circle_mosaic, yellow_crop_circle_mosaic_slab6,395
crop_thatchcrop_circle_bale, crop_thatch, crop_thatch_slab2,549
gantrygantry_bars, gantry_mesh_fence, gantry_railing, gantry_support, timber_support1,113
hangar_alloyhangar_alloy, hangar_alloy_casing, hangar_alloy_plating, hangar_alloy_slab, hangar_alloy_stairs, hangar_tarmac, olive_hangar_tarmac, olive_hangar_tarmac_slab1,526
herringbone_stonedark_herringbone_stone, herringbone_stone582
ley_tileschiseled_ley_tiles207
megalith_limestonechiseled_megalith_limestone, megalith_limestone, megalith_limestone_bricks, megalith_limestone_lines, megalith_limestone_pillar, megalith_limestone_stairs, megalith_limestone_tile_slab, megalith_limestone_tile_wall, megalith_limestone_tiles, megalith_limestone_wall, polished_megalith_limestone, polished_megalith_limestone_slab, polished_megalith_limestone_stairs, small_megalith_limestone_brick_stairs, small_megalith_limestone_brick_wall, small_megalith_limestone_bricks2,976
polygonal_masonrypolygonal_masonry54
pyramid_sandstonepyramid_sandstone_brick_slab, pyramid_sandstone_brick_stairs, pyramid_sandstone_brick_wall, pyramid_sandstone_bricks, pyramid_sandstone_pillar, small_pyramid_sandstone_brick_slab, small_pyramid_sandstone_brick_stairs, small_pyramid_sandstone_brick_wall, small_pyramid_sandstone_bricks12,310
tartarian_brickcracked_tartarian_bricks, mixed_tartarian_bricks, mossy_tartarian_brick_slab, mossy_tartarian_brick_stairs, mossy_tartarian_bricks, tartarian_brick_pillar, tartarian_brick_slab, tartarian_brick_stairs, tartarian_brick_wall, tartarian_bricks, tartarian_column20,274
tunguska_brickchiseled_tunguska_brick, cracked_tunguska_brick_stairs, cracked_tunguska_brick_wall, cracked_tunguska_bricks, dark_tunguska_brick_pillar, polished_tunguska_brick, polished_tunguska_brick_button, polished_tunguska_brick_slab, polished_tunguska_brick_stairs, tunguska_brick_pillar, tunguska_brick_slab, tunguska_brick_stairs, tunguska_brick_wall, tunguska_bricks10,211

Shapes: cube, pillar, slab, stairs, wall, button, pane (gantry_bars), fence, and three Blockbench models: tartarian_column (8×8 px column), gantry_support/timber_support (ceiling beam along an axis), gantry_railing (catwalk edge). All three are waterloggable.

Decor

34 pieces, one Blockbench model each (art/blockbench/), facing the player, waterloggable, all from the stonecutter (cut from the material they're carved or cast from):

setpieces
Bunker & temple furnitureagency chair, agency desk, saucer parasol (light 10), temple trellis
Out-of-place artifactsamphora, amphora rack, crystal skull, gear mechanism, glyph decal, ley spout, offering bowl, star map tablet, weather balloon crate
Ley lightshazard lamp (13), ley brazier (15), ley lamp (15), sandstone/stone glyph lanterns (12), signal lantern (12), tall ley torch (15)
Effigies & cryptidsbigfoot, grey visitor, lake serpent, lizard, moai, mothman (red eyes glow), stone sphere
Ancient maglevmaglev track (glowing rails)
Dormant devicesantenna array, dormant machine, monolith terminal, numbers station radio, specimen tank, tesla coil

Ruin & anomaly pieces

Procedural and deterministic in a seed (logic/ruin/RuinBuilder), placed by the fold passes, the native Ancient Islands and /tinfoil ruin place <piece> [scheme] [seed]:

fallen column · wall fragment (ragged top, trapezoid doorway, glyph band) · rubble pile · half-buried monolith (glow line) · moai head (buried to the chin) · stone sphere · saucer wreck (tilted, glowing ring, scattered plates) · antenna mast · bunker hatch · crop circle · geoglyph.

  • Materials: ruin schemes in data/<ns>/tinfoil/ruin_schemes/*.json (statue-scheme format plus optional metal, metal_dark, rubble, mark): atlantean, bermuda, megalith, pyramid, tartarian, hangar wreck, crop circle, geoglyph.
  • Patterns: data/<ns>/tinfoil/patterns/*.json {kind: crop_circle|geoglyph, rows: ["..#.."]}; our own designs.
  • Crop circles and geoglyphs only press into natural ground (dirt, grass, sand, farmland, terracotta, gravel) and clear the plants above; they never cut into builds or water.
  • New block: Rubble (1–8 layers like snow, never melts; 8 from cobblestone in the stonecutter).

ruin pieces
ruin pieces

Conspiracy board

A cork board that hangs on a wall (place it against one). Right-click with an item to pin it in the quadrant you clicked (one item; it's shown flat on the cork); an empty hand takes it back. Use string on a pinned slot, then on another pinned slot up to 16 blocks away (same or another board): a red string connects them. Unpinning cuts the strings of that slot. Two boards from 8 sticks around a plank. The renderer (items + strings) is client-side and was checked only by compiling; look at it in the dry run.