package com.livingworld.modules.worldeffects;

/**
 * Categories of visible world changes that the ecosystem simulation can request.
 *
 * <p>These are abstract descriptions of what should happen. The platform adapter
 * (NeoForge layer) translates each type into concrete block changes or entity
 * interactions on loaded chunks.
 */
public enum WorldEffectType {

    /**
     * High pollution combined with low soil quality causes grass blocks to
     * degrade into dirt or coarse dirt.
     */
    GRASS_DEGRADES_TO_DIRT,

    /**
     * Healthy soil and good vegetation pressure allows grass, moss, and flowers
     * to spread onto adjacent bare blocks.
     */
    VEGETATION_SPREADS,

    /**
     * Sustained logging depletion slows the chance of saplings spawning from
     * leaf decay and reduces natural sapling growth rate.
     */
    SAPLING_GROWTH_SLOWED,

    /**
     * A well-recovered region at an advanced succession stage boosts the
     * chance of saplings appearing and growing.
     */
    SAPLING_GROWTH_BOOSTED,

    /**
     * A visual tint or overlay indicator applied to blocks in heavily polluted
     * regions (e.g. discoloured water, dark soil). Implementation details are
     * left to the platform layer.
     */
    POLLUTION_VISUAL_INDICATOR,

    /**
     * Drought combined with a storm triggers wildfire ignition — fire is placed
     * on flammable surface blocks and spreads naturally via Minecraft fire tick.
     */
    WILDFIRE,

    /**
     * Sustained bad conditions (low soil quality or high pollution) cause living
     * vegetation to die visibly: leaves are removed, upper log sections stripped to
     * stumps, and surface plants replaced with dead material.
     */
    VEGETATION_DIES,

    /**
     * Heavy regional rain on low-succession (barren / sparse-grass) terrain causes
     * water to pool in low-lying spots. The platform adapter places water source blocks
     * in surface depressions. Once present, the water body scan detects them and feeds
     * back a hydration boost to the region, enabling succession toward fertile land.
     */
    WATER_POOL_FORMS,

    /**
     * Sustained high-intensity water runoff erodes the river channel: the platform
     * adapter replaces natural surface blocks with water along the low-lying path
     * through the region, gradually carving a visible riverbed over many cycles.
     */
    RIVER_CARVE,

    /**
     * A groundwater spring emerges at the valley floor: a water source block is placed
     * at the lowest natural terrain point in the region. The water then flows downhill
     * under Minecraft's own fluid physics, forming a permanent river without relying on rain.
     */
    GROUND_SPRING_EMERGES,

    /**
     * Flowing water adjacent to soft terrain gradually softens and removes it: stone
     * becomes gravel, gravel becomes sand, sand and dirt are removed. Widens river
     * valleys and carves gorges independently of rainfall.
     */
    HYDRAULIC_EROSION,

    /**
     * Active volcanic eruption: lava source blocks are placed at the summit and on
     * natural rock surfaces. Lava flows downhill under Minecraft physics, permanently
     * reshaping the terrain around the volcano.
     */
    LAVA_FLOW,

    /**
     * Volcanic ash clouds deposit a grey layer over the surrounding landscape: grass
     * and soil surfaces are covered with tuff and gravel, surface plants are killed.
     * Spreads outward from the eruption epicentre.
     */
    ASH_DEPOSIT,

    /**
     * Cooling lava solidifies into new land: lava adjacent to water converts to
     * cobblestone, lava exposed to air converts to basalt. Creates permanent new
     * terrain that was not there before the eruption.
     */
    COBBLESTONE_FORMS,
}
