-
Notifications
You must be signed in to change notification settings - Fork 0
Consequence Systems
NeroTech couples throughput to two consequence axes so automation has trade-offs: heat (local, per
machine) and pollution (regional, periodic). Both are server-authoritative and fully server-config
tunable (config/nerotech.properties, managed by Core).
Every machine carries a heat value (shown as the red gauge on the right of its GUI):
- Accumulates while the machine works — generators while burning, processors each work tick.
- Dissipates passively every tick, and faster when adjacent to a coolant block (water, ice, packed/blue ice, snow block, powder snow) — the simplest cooling.
- Throttles: once heat reaches the threshold, a processing machine stalls until it cools back down. This is the counter-pressure that stops players trivially overclocking everything with Speed modules.
Heat is per-block-entity (no global scan) and persists across relog. Tuning keys: heatCapacity,
heatPerOperation, heatDissipationPerTick, heatThrottleThreshold.
Industrial activity emits pollution, aggregated regionally (a coarse 64×64-block grid), never per-block-per-tick:
- Running machines add to their region's total on a batched interval (spread across ticks per machine), so there is no per-tick hotspot. Generators and processors pollute; the Solar Array is clean (no heat, no pollution).
- A periodic server sweep decays every region's pollution and prunes emptied regions — it iterates a small map, not the world.
Tuning keys: pollutionPerOperation, pollutionContributionIntervalTicks,
pollutionDecayIntervalTicks, pollutionDecayAmount.
By default, pollution is aggregate-only — no player data is stored. A server may opt in with
pollutionPerPlayerAttribution=true, which attributes pollution to the placing player's UUID.
When (and only when) this is enabled:
- Only UUIDs are stored (never names, IPs, chat, or location) — data minimisation.
- Attribution rows are retention-pruned after
pollutionAttributionRetentionDays. - A
PlayerDataEraseris registered with Core's shareddata.PlayerDataErasure, so a single erase request (or Core's inactivity sweep) purges a player's NeroTech attribution alongside every other Nero mod.