{
  "Description": "Settings for where water is placed and how entitys are pushed downstream by the stream water.",
  "WaterBelowStreamBed": 6,
  "WaterBelowStreamBedDescription": "The distance in blocks below the center of the stream bed, that air blocks turns to water.<br>This fills in water when there are indents around the center of the stream. For example if one side of the river is deeper than the center.<br>If the center of the river is on a bump and to the side the bed is deeper, this needs to be large enough to make up the difference.",
  "WaterAboveStreamBedMaximum": 30,
  "WaterAboveStreamBedMaximumDescription": "Maximum water height above the stream bed.<br>Its still capped by the heights of the stream banks, so you can't make it go super high.<br>You can lower this to make the river water shallower, or higher if you make the rivers larger and deeper to make the water still reach the banks.",
  "PercentOfStreamBedAsCoreArea": 0.9,
  "PercentOfStreamBedAsCoreAreaDescription": "Threshold for determining the core streambed area (a stream bed opacity above this is considered core).<br>Used to placing water blocks 1 high on the streambed center/core area even when there isn't enough bank height,<br>ensuring the water stream is continuous, even if the banks are busted up.<br>If you make this too low there will be water on the banks of streams.<br>If you make this too high streams with broken banks will also have a broken stream.",
  "StreamBedWaterPlacementThreshold": 0.3,
  "StreamBedWaterPlacementThresholdDescription": "Minimum stream bed opacity value required for water block placement.<br>With lower resolution stream maps where blockColumnsPerPixel is over 1, the bilerp blur<br>causes bed opacity to blur onto bank areas. This threshold filters out those blurred values.<br>This threshold should be >= StreamBedBlockPlacementThreshold.",
  "StreamBedBlockPlacementThreshold": 0.2,
  "StreamBedBlockPlacementThresholdDescription": "Minimum bedAlpha value required for streambed block placement (gravel, sand, clay, etc).<br>Set this lower than StreamBedWaterPlacementThreshold to place streambed blocks on<br>old/weak streambeds (like braided stream channels) without flooding them with water.<br>This allows dry gravel bars and exposed streambed areas in braided stream systems.",
  "WaterForwardOffset": 3,
  "WaterForwardOffsetDescription": "Forward offset for water placement along the stream curve.<br>Pushes water placement forward by this many curve points to help create the impression that the water is flowing downstream.<br>Higher values make water bulge out foward more, lower values keep it closer to the streambed.",
  "UpstreamBankHeightSampling": {
    "Enabled": true,
    "EnabledDescription": "Enable upstream bank height sampling for smoother water levels.<br>When enabled, water height is constrained by the median of multiple upstream bank heights, instead of just the immediate left/right bank points.<br>This prevents sudden water level jumps when a single bank point has a terrain bump.",
    "SampleIntervalBlocks": 3.0,
    "SampleIntervalBlocksDescription": "Distance in blocks between each upstream bank height sample.<br>Smaller values mean more samples but since sampling is expensive for performance, it could slow down generation if set too low.",
    "TotalDistanceBlocks": 500.0,
    "TotalDistanceBlocksDescription": "When deciding water height for a position on the stream based on the banks, this is the total distance in blocks to sample upstream from that position.<br>The number of samples is the TotalDistanceBlocks divided by the SampleIntervalBlocks."
  },
  "UpstreamBankHeightSamplingDescription": "Configuration for sampling the upstream bank heights.<br>These sampled heights constrain the water height from exceeding the banks.<br>The water placement samples upstream from each position to help prevent water from being higher than water upstream.<br>Uses the median of multiple upstream bank heights to prevent sudden water level changes from terrain bumps on individual bank points.",
  "StreamWaterPush": {
    "PushMagnitude": 0.0008,
    "PushMagnitudeDescription": "The base magnitude of the push vector applied to entities in stream water.<br>This is scaled by the stream's width factor (wider streams push harder).",
    "DownstreamSampleDistance": 5,
    "DownstreamSampleDistanceDescription": "Number of curve points away downstream to use as the vector target sample when calculating flow direction.<br>The push vector aims from the upstream sample towards the downstream sample.<br>This direction causes entities to drift more towards the outer bank of bends instead of towards the center of the stream (when this is at 0).",
    "UpstreamSampleDistance": 12,
    "UpstreamSampleDistanceDescription": "Number of curve points away upstream to use as the vector origin sample for push direction calculation.<br>The push vector aims from the upstream sample towards the downstream sample.<br>This direction causes entities to drift more towards the outer bank of bends instead of towards the center of the stream (when this is at 0).",
    "BankSpeedFactor": 0.0,
    "BankSpeedFactorDescription": "How fast the push is near the stream banks compared to the center (0.0 to 1.0). Should be lower than PushMagnitude, the shallow water on the banks shouldn't push you downstream as much as the center of a flowing stream.",
    "Enabled": true
  },
  "StreamWaterPushDescription": "Configuration for stream water push mechanics that push entities (like players and animals) downstream."
}