Survey
This page defines the formal boundary of the survey layer. Survey must be split into two stages: early discovery handles clues, materials, and environmental teaching; formal survey handles ruin instances, the world ledger, and pending activation references. Those two stages cannot be merged. If they are, early nodes start carrying teaching, location, persistence, and activation preconditions all at once.
Phase Definitions
| Phase | Input | Output | Does not do |
|---|---|---|---|
| early discovery | environmental carriers, brush interaction, explicit signal nodes | clues, fragments, materials, tooltip information, detector progress, general archaeology progress | does not create SiteRef, does not write SiteLedgerSavedData, does not enter activation |
| formal survey | host structure, author marker or explicit host, submit action | DiscoveredSiteRecord, SiteRef, pending activation reference | does not replace environmental teaching, does not create live runtime directly |
Early discovery answers "is this place worth further commitment?" Formal survey answers "has this become one formal ruin instance yet?" Those are different questions with different inputs, outputs, and data layers.
Core Objects
| Object | Role |
|---|---|
CivilizationShellDefinition | defines which readable signals a civilization shell leaves during early discovery |
EarlyExcavationNodeDefinition | defines one early archaeology node type, its carrier, interaction, output, and exhausted state |
SiteTypeDefinition | defines host rules, activation rules, runtime parameters, and resonance config for one ruin type |
SiteRef | points to one concrete ruin instance, not to a ruin type |
DiscoveredSiteRecord | the formal ruin record inside the world ledger |
SiteLedgerSavedData | the formal ruin ledger for one ServerLevel |
Early Discovery Nodes
Early discovery nodes do not instantiate ruins. They only convert environmental civilization traces into readable clues, then exhaust after one interaction. Early discovery must not depend on the world ledger and must not require world-data participation to prove an instance.
Carrier Types
| Carrier | Use | Constraint |
|---|---|---|
| environmental carrier | the main carrier for natural environments, outer host areas, and low-intensity distribution points | must be a dedicated worldgen carrier; cannot depend on placement-time tags |
| explicit node | high-signal positions, guidance points, anomaly markers | may use BlockEntity, but density must stay low and it cannot replace environmental carriers |
Environmental carriers provide broad distribution. Explicit nodes provide clarity at important positions. Neither enters the formal ledger.
Unified Interaction
Early discovery uses one fixed interaction: brush reveal -> extraction -> exhausted return.
- The player brushes the node continuously.
- The node enters its revealed state.
- The player performs one extraction interaction.
- The node turns into a normal world state and permanently loses archaeology eligibility.
Fixed three-state sequence:
hidden archaeology block -> revealed archaeology block -> normal terrain blockThis split keeps revelation and extraction as two separate actions, which gives us clean hook points for hints, audiovisual feedback, and exhaustion.
Recommended Node Definition
public record EarlyExcavationNodeDefinition(
ResourceLocation id,
ResourceLocation shellId,
CarrierType carrierType,
ResourceLocation brushLootTable,
BlockState revealedState,
BlockState exhaustedState
) {}These fields only define the early interaction:
shellIdsays which civilization trace family the node belongs to,brushLootTableonly handles early-discovery output,revealedStateandexhaustedStatedefine the interaction state machine,- the definition does not carry formal ruin lifecycle, ledger keys, or
SiteRef.
Anti-Automation Rules
Early discovery nodes may only come from:
- dedicated world-generated archaeology carriers,
- dedicated archaeology carriers pre-placed by structure authors,
- a small, controlled set of explicit signal nodes.
The following are never valid archaeology targets:
- ordinary blocks that machines can place and recover in bulk,
- objects that redstone can mass-produce,
- objects that industrial chains can craft, copy, or farm,
- objects that trading or mob farms can feed back into the world at scale.
Machines may process archaeology later, but archaeology targets themselves cannot come from mass-producible sources. Otherwise the player can industrialize archaeology and bypass world distribution and exploration entirely.
Formal Survey
Formal survey is the only entry point for SiteRef. It turns one valid submit into one formal ruin record and passes the stable instance reference to activation. If the content has not entered a formal record yet, it still belongs to early discovery.
Type And Instance Must Stay Separate
| Layer | Stores | Design role |
|---|---|---|
| civilization shell | clue style, material families, outer traces, readable signals | organizes early discovery, not formal instances |
| ruin type | host rules, activation rules, runtime parameters, resonance config | rule template for one kind of ruin |
| ruin instance | dimension, anchor, covered chunks, lifecycle | authority object used by activation, runtime, and recovery |
If type and instance collapse into one layer, same-type ruins cannot coexist and activation or recovery can no longer point at one stable ruin.
Fixed Priority For Formal Survey
Formal survey always resolves in this order:
- author markers or explicit hosts first,
- host structure decides whether the location even qualifies,
- anchor resolution turns the current position into one stable instance center,
- biome only applies a type adjustment and does not define the instance key,
- ledger lookup or creation produces
DiscoveredSiteRecord, - the stage returns
SiteRefas the pending activation reference.
The order is fixed: host and anchor first, instance after that. Only then can activation and recovery point at something stable.
Recommended Formal Record
public record SiteRef(
String siteTypeId,
long primaryChunkKey,
int serial
) {}
public record DiscoveredSiteRecord(
SiteRef ref,
BlockPos anchor,
String siteTypeId,
Set<Long> coveredChunkKeys,
SiteLifecycle lifecycle
) {}SiteRef is the cross-stage handoff reference. anchor, together with dimension, becomes the stable coordinate truth inside the ledger.
coveredChunkKeys is reserved for:
- chunk sync,
- local cache support,
- runtime coverage checks.
It does not flow back into early discovery and it does not replace player short markers.
Registration Rules For New Content
New content must declare a complete definition up front. We do not assemble ruin behavior from scattered conditions.
Required Fields For New Early Discovery Nodes
| Field | Required | Role |
|---|---|---|
| node id | yes | stable key |
| shell id | yes | says which civilization trace family owns the node |
| carrier type | yes | distinguishes environmental carriers from explicit nodes |
| brush output | yes | early-discovery drop and progress content |
| revealed state | yes | state after brush completion |
| exhausted state | yes | normal state after extraction |
Required Fields For New Formal Ruin Types
| Field | Required | Role |
|---|---|---|
| type id | yes | stable key |
| host rule | yes | structure tag, author marker, or explicit host |
| anchor rule | yes | search radius, center resolution, and final verification |
| biome adjustment | optional | parameter adjustment only; does not define the instance key |
| activation rule | yes | limits which submit surfaces can activate the site |
| runtime parameters | yes | read by the site runtime |
| resonance config id | yes | consumed by ResonanceResolver |
Prohibited Items
- letting early discovery create
SiteRef, - letting early discovery write
SiteLedgerSavedData, - making ordinary blocks archaeology targets only through placement-time tags,
- allowing mass-producible objects to become archaeology targets,
- letting formal survey create live runtime directly.