Skip to content

Latest commit

 

History

History
184 lines (153 loc) · 9.58 KB

File metadata and controls

184 lines (153 loc) · 9.58 KB

Billy Boarding — spec

Vision

Small 3D props become sprites, the way DOS-era 3D games drew them. Billy Boarding is a resource pack that swaps the models of cakes, flower pots, anvils, bells, brewing stands, cactus, crops and fire for flat cross geometry textured with sprites. Mode 13h then billboards them: each sprite turns to face the camera.

Principles

  • Opinionated. One look, no variants or options.
  • Vanilla JSON only. Blockstates, item definitions (1.21.4+), block models and textures. No OptiFine CEM/CTM, no mod-only features beyond the render_type hint (ADR 0002).
  • Item icons as sprites. Reuse the vanilla item icon when it reads well; draw new art only where no icon fits (cake bites, candle cakes, anvils, pot layers).
  • Still usable without the shader. Without Mode 13h the blocks are plain crossed sprites, like vanilla flowers. Nothing goes invisible or garbled.

Compatibility

Target Status
Minecraft 1.20.1 (pack_format 15) Main target; the base assets/
Minecraft 1.21.1 (34) Main target; same files as 1.20.1
Other releases, 1.20.2 to 26.3 (18–97.1) Best effort, checked offline; from 1.21.4 overlays add item definitions and newer pots (ADR 0008)
Newer than 26.3 Marked incompatible until max_format is raised
Mode 13h with BILLY_BOARDING on, via Iris or Oculus Billboards
Vanilla, or any shader without the contract Static crossed sprites
Forge/NeoForge render_type honored
Fabric, vanilla render_type ignored; the block's own render layer applies

Coverage

Covered

Block Model Sprite
Cake, bites 0–6 cross new art, one per bite
Candle cake, all colors, lit/unlit cross new art; every color shows the plain candle for now
Flower pot, empty cross, lowered 3px vanilla item/flower_pot
34 potted plants three crosses: back, plant, front, 0.05px apart in depth (ADR 0007) pot layers are new art; plant is the vanilla plant texture (fern tinted, bamboo uses item/bamboo, cactus block/cactus_side for now)
Potted pale oak sapling, closed and open eyeblossom (1.21.4+) as the other pots, in overlay_1_21_4 vanilla plant textures; the open eyeblossom adds its emissive layer at light 15
Potted golden dandelion (26.1+) as the other pots, in overlay_26_1 vanilla plant texture
Potted poplar sapling (26.3+) as the other pots, in overlay_26_3 vanilla plant texture
Anvil, chipped, damaged cross; item model flat too (1.21.4+ via overlay_1_21_4/…/items/) new art (item/*_anvil_flat)
Bell, floor/ceiling cross (floor adds a legs cross) vanilla item/bell; legs are new art
Bell, single/double wall flat plate in front of a stem plate, not billboarded (ADR 0007) vanilla item/bell; stems are new art
Bell block entity hidden transparent entity/bell/*
Brewing stand cross base + one cross per bottle vanilla item/brewing_stand; bottles are new art
Cactus cross vanilla block/cactus_side
Wheat, carrots, potatoes, beetroots, nether wart cross, via the block/crop parent vanilla crop textures
Fire, soul fire (floor) cross vanilla fire textures
Torchflower crop vanilla cross, no file here vanilla textures
Pitcher crop, ages 1–4 3D bulb box + billboarded cross (ADR 0007); age 0 and top ages 0–2 stay vanilla vanilla textures

Waiting for art

To do once damikdevv's art lands (see Art needed). Until then they keep their vanilla models and stay out of 10990. Each becomes layered crosses (ADR 0006, depths per ADR 0007):

  • Candles, 1–4, plain and all 16 colors, lit and unlit.
  • Candle cakes, every color (now all show the plain candle).
  • Sea pickles, 1–4, alive and dead.
  • Turtle eggs, 1–4, hatch 0–2.
  • Sniffer egg, hatch 0–2.
  • Dragon egg.
  • Campfire and soul campfire, lit and unlit.
  • Heavy core (1.20.5+).
  • Dried ghast, hydration 0–3 (1.21.6+); facing ignored.

Out of scope

  • Signs: the Flatter Signs mod handles them (Mode 13h ID 10956).
  • Copper golem statue: a block entity drawn with the mob's texture, so it can't be hidden the way the bell is.
  • Shelf mushroom: wall-mounted.
  • Leaf litter, wildflowers, resin clump: already flat.
  • New cross flora (red shrub, golden dandelion, poplar sapling, pale hanging moss…): already crosses; billboarding them is Mode 13h's 10950 list.

Flower pot files are generated by tools/gen_flower_pots.sh (ADR 0004).

Mode 13h contract

ADR 0003. The shader side lives in mode-13h: shaders/block.properties and shaders/gbuffers_terrain.vsh.

  • Every billboarded block is listed under ID 10990 in Mode 13h's block.properties, gated by its BILLY_BOARDING option (default off).
  • Its model must be vanilla block/cross geometry: two vertical planes from 0.8 to 15.2, rotated 45° around y with rescale. The shader keeps the face whose normal points to (+x, +z), drops the other diagonal faces, and rotates it to face the camera.
  • Flat faces (ADR 0007): faces with axis-aligned or vertical normals are drawn as they are, not billboarded, but still get the 10990 alpha discard. This is how wall bells and the pitcher bulb live in 10990.
  • Layer depth (ADR 0007): a cross face pushed d along its own normal draws in front of the depth 0 cross from every side, shaders on or off. Mode 13h reads d in whole 0.05 px steps (integer ranks). Layers that overlap get different depths (pot layers ±0.05), unless they have identical geometry (brewing stand bottles), which draws in multipart order.
  • The shader finds the quad center from UVs, so each face maps the full sprite (uv 0–16) and sprites are 16×16. Vertical offsets are fine (pots).
  • Every bell state is in 10990: floor and ceiling bells as crosses, wall bells as flat faces.
  • Changing which blocks have cross models means changing the 10990 list in the same session. Renumbering 10990 is a breaking change on both sides.

Known gaps

  • Anvils. item/*_anvil_flat are identical black placeholder silhouettes until the art lands.
  • Colored candle cakes. Every color uses the plain candle cake sprite until the layered candles land (ADR 0006).
  • Potted cactus. The plant layer is block/cactus_side, a full-width green square, until potted_cactus.png lands.
  • Candles, sea pickles, turtle eggs, sniffer egg, dragon egg, campfires. Vanilla until their art lands (Waiting for art).
  • Fabric render layers. Fabric ignores render_type, so blocks that vanilla draws in the solid layer (cakes, candle cakes, anvils, bells, later the eggs) show the sprite's transparent pixels as black or brown. Mode 13h fixes this with an alpha discard on 10990; without the shader they stay that way. Verified in game on 1.20.1 Fabric + Iris.
  • Moving blocks. Blocks moved by pistons are drawn through the block entity path, so they stay static crosses while moving.
  • Pale oak pot on 1.21.2–1.21.3. Stays vanilla: pale oak was experimental there, and its pot lives in overlay_1_21_4.
  • Versions after 1.20.1. Checked offline against each version's vanilla file list (tools/check.sh); tested in game only on 1.20.1 so far.

Roadmap

Each item gets an ADR if it decides something new.

  • R1 — Close the gaps above as the art in Art needed lands, one block family per task: cross models here, the 10990 entry in Mode 13h.
  • R2 — 1.21.1 and newer: done. One zip for 1.20.1 to 26.3 with overlays (ADR 0008).
  • R3 — First Modrinth release: done. 1.0.0, published by tools/release.sh (ADR 0009).

Art needed

For damikdevv. Every sprite is 16×16 with a transparent background, drawn standing on the bottom edge (the ground line of a full-width cross). Files go in assets/minecraft/textures/block/ unless noted. Layers stack as in ADR 0006.

Block Files Count Notes
Candles candle_<n>.png, <color>_candle_<n>.png, n = 1..4 68 Candles only, no flame. Colors may be palette swaps of one drawing.
Candle flames candle_flame_<n>.png, n = 1..4 4 Lit overlay. Flame positions match the candle sprites of the same n.
Candle cakes none new 0 cake_bites0 + <color>_candle_1 + (lit) candle_flame_1, raised to the top of the cake.
Sea pickle sea_pickle_<n>.png, dead_sea_pickle_<n>.png, n = 1..4 8 Waterlogged = alive.
Turtle egg turtle_egg_<n>_<hatch>.png, n = 1..4, hatch = 0..2 12
Sniffer egg sniffer_egg_<hatch>.png, hatch = 0..2 3 Hatch 0 may reuse item/sniffer_egg.
Dragon egg dragon_egg.png 1
Campfire campfire_logs.png, campfire_logs_lit.png, soul_campfire_logs_lit.png 3 The fire layer reuses the animated vanilla block/campfire_fire and block/soul_campfire_fire.
Potted cactus potted_cactus.png 1 A narrow cactus; becomes the plant layer.
Anvils textures/item/{anvil,chipped_anvil,damaged_anvil}_flat.png 3 Replace the placeholders; same file names.
Heavy core heavy_core.png 1 1.20.5+.
Dried ghast dried_ghast_hydration_<n>.png, n = 0..3 4 1.21.6+. One sprite per hydration level; facing is ignored.

Once the candle cakes are layered, candle_cake_plain_{lit,unlit}.png are unused and get deleted.

Non-goals

OptiFine CEM/CTM, mod-specific models or blocks, 3D or voxel models, options or variants of the look.

Distribution