Skip to content

Art and Visuals

github-actions[bot] edited this page Jul 12, 2026 · 1 revision

Art and Visuals

NeroAgriculture ships a cohesive "hydroponics lab" look: bright white/light-grey composite housing with a bio-green accent (keyed to the mod logo), soil and foliage organics for beds and crops, and the five essence tiers coloured from the material catalog. Every block, item and crop has a hand-tuned procedural texture — no vanilla placeholders remain.

Texture pipeline

All textures and their model/blockstate/item-model JSON are produced by a single deterministic generator, so the art and the models can never drift apart:

  • tools/gen_textures.py — 32×32 pixel-art painters in the shared Neroland family style (cf. ../nerotech/tools/gen_textures.py): a lab-white composite base with a 2px bevel and corner rivets, recessed screens, green status LEDs, and a per-name deterministic seed so a re-run is byte-stable.
  • Run python3 tools/gen_textures.py to fill in any missing assets, or --force to repaint the whole set. The tool is additive by default and never clobbers an existing PNG without --force.
  • It writes textures/block/*, textures/item/*, textures/gui/* and the matching models/block/*, models/item/*, blockstates/* under common/src/main/resources/assets/neroagriculture.

Essence tier colours

The five essence tiers (Terran, Industrial, Orbital, Colonial, Deepvoid) are coloured straight from catalog/BuiltinMaterials.java: each tier's colour is the mean of its materials' catalog colours, so changing a catalog colour and re-running the generator repaints the tier's essence item, compacted block and grow bed to match. The current derived colours are:

Tier Colour Source materials (catalog)
Terran #343434 coal
Industrial #AB897E copper, iron, gold, redstone, lapis, quartz, nero alloy
Orbital #53D6B8 diamond, emerald, plasma glass
Colonial #DDEEFF nether star
Deepvoid #6D7394 echo shard, void crystal, starsteel

Crop growth

Resource, engineered-food and alien crops each have eight distinct growth sprites (age 0–7) drawn as cross models, so growth reads at a glance: resource crops sprout crystalline nodes near maturity, food crops raise golden grain heads, and alien crops swell into glowing purple pods. The blockstate maps each age to its stage model.

Machine GUI

The four foundation machines (Essence Extractor, Essence Infuser, Seed Synthesizer, Seed Research Bench) share one container menu, and the screen renders a light lab hull entirely with fills (no GUI texture asset, matching NeroTech's screen recipe). It dispatches a bespoke per-machine layout from the synced machine kind — each gets its own accent colour, header rule and a small input → process → output diagram (extractor funnel, infuser rings, synthesizer capsule, research-bench magnifier). Slot wells are drawn from the live menu slot list, and the energy gauge, work-progress bar and blocked-state readout are shared. The Research Bench keeps its clickable "discover" action.

Block models — layered, occlusion-safe

Machines, grow beds and the pollination beacon use multi-element models (not flat cubes), in the same style as NeroTech/NeroSpace: a machine is a plinth + inset body + raised console + four corner posts; a grow bed is a plinth + four raised walls + a recessed soil tray; the beacon is a plinth + tapered column + glowing lens. These are regenerated by tools/gen_models_layered.py (textures are unchanged). Because they are not full cubes, the corresponding blocks are registered noOcclusion so they never cull neighbours as if solid. Essence blocks, greenhouse/tower frames and decor stay full cube_all blocks.

Greenhouse glass is a dedicated GreenhouseGlassBlock that is noOcclusion and skips the shared faces between adjacent glass (like vanilla glass), fixing the "transparent model on a solid block" render artefact so a glazed wall reads as one clean surface.

Demonstration farm

/neroagriculture gallery builds a working farm: a 3×2 grid of tier grow beds, each powered (Creative Battery) and nutrient-filled, with a fully grown ore crop on top (Coal on Terran; Iron, Copper, Gold on Industrial; Diamond, Emerald on Orbital), flanked by a Planter and Harvester. Every crop is at max age, so right-clicking a grown crop harvests its essence and leaves the crop planted (age resets to 0). Higher-tier ores still need their Core progression gate open to harvest — intended behaviour. Note: a freshly placed crop block with no material variant (e.g. from the block-grid showcase) is not harvestable; plant a seed or use the farm.

Regenerating art

The generator is safe to re-run at any time. To add art for a new block or item, add a painter and a catalogue entry in tools/gen_textures.py, then run it; the coverage summary at the end reports the block/item/GUI texture counts. Keep this page and the generator in step when the visual language changes.

Clone this wiki locally