# Crop Boost Scenarios ## Shared setup - Use one beehive in range of a crop/farmland. - Keep distance fixed inside full-distance zone (`PlantsFullBoostDistanceToHive`) unless the scenario says otherwise. - Enable both boosts when validating both paths: `SpeedBoost=true`, `YieldBoost=true`. - Use non-zero bonuses to make differences visible: `GrowthSpeedBonus=0.2`, `YieldMultiplier=1.2`. ### Shared config commands (copy/paste) ```text /beehives YieldBoost true /beehives SpeedBoost true /beehives GrowthSpeedBonus 0.2 /beehives YieldMultiplier 1.2 /beehives BeehiveRadius 35 /beehives PlantsFullBoostDistanceToHive 20 /beehives MinBeesForPlantBoost 1000 /beehives MaxBeePopulation 50000 /beehives PopulationPercentForMaxBoost 100 /beehives MultipleBeehivesBoostCombination Max ``` ## 1) Full mode keeps legacy behavior - Config: `BoostCalculation=Full` - Set hive population below `MinBeesForPlantBoost` - Expected: no crop boost from that hive. - Raise population to `MinBeesForPlantBoost` - Expected: hive contributes full population factor (`100%`) immediately (same as old behavior). ### Commands ```text /beehives BoostCalculation Full ``` ## 2) LinearPopulation starts at 0% at min - Config: `BoostCalculation=LinearPopulation`, `PopulationPercentForMaxBoost=100`, `MaxBeePopulation=50000`, `MinBeesForPlantBoost=1000` - Set hive population to `1000` - Expected: population factor is `0%`. ### Commands ```text /beehives BoostCalculation LinearPopulation /beehives PopulationPercentForMaxBoost 100 /beehives MaxBeePopulation 50000 /beehives MinBeesForPlantBoost 1000 ``` ## 3) LinearPopulation reaches 100% at configured max percent - Same config as scenario 2 - Set hive population to `50000` (`100%` of `MaxBeePopulation`) - Expected: population factor is `100%`. ### Commands ```text /beehives BoostCalculation LinearPopulation /beehives PopulationPercentForMaxBoost 100 /beehives MaxBeePopulation 50000 /beehives MinBeesForPlantBoost 1000 ``` ## 4) LinearPopulation midpoint check - Same config as scenario 2 - Set hive population to midpoint between min and target max (`25500`) - Expected: population factor is about `50%`. ### Commands ```text /beehives BoostCalculation LinearPopulation /beehives PopulationPercentForMaxBoost 100 /beehives MaxBeePopulation 50000 /beehives MinBeesForPlantBoost 1000 ``` ## 5) NormalizedLogk10Population starts at 0% and ends at 100% - Config: `BoostCalculation=NormalizedLogk10Population`, same thresholds as scenario 2 - At `MinBeesForPlantBoost`, expected `0%`. - At configured target max, expected `100%`. ### Commands ```text /beehives BoostCalculation NormalizedLogk10Population /beehives PopulationPercentForMaxBoost 100 /beehives MaxBeePopulation 50000 /beehives MinBeesForPlantBoost 1000 ``` ## 6) NormalizedLogk10Population is front-loaded vs linear - Compare `LinearPopulation` vs `NormalizedLogk10Population` at same midpoint population - Expected: log mode gives a higher factor than linear at midpoint. - Formula reference: `f(x)=ln(1+10x)/ln(11)` where `x` is normalized `[0..1]` between min and configured max. ### Commands ```text /beehives PopulationPercentForMaxBoost 100 /beehives MaxBeePopulation 50000 /beehives MinBeesForPlantBoost 1000 ``` ## 7) PopulationPercentForMaxBoost lower than 100 - Config: `PopulationPercentForMaxBoost=50`, `MaxBeePopulation=50000` - Target max population for full factor becomes `25000`. - Expected: factor reaches `100%` at `25000` and stays clamped at `100%` above it. ### Commands ```text /beehives BoostCalculation LinearPopulation /beehives PopulationPercentForMaxBoost 50 /beehives MaxBeePopulation 50000 /beehives MinBeesForPlantBoost 1000 ``` ## 8) PopulationPercentForMaxBoost = 0 boundary - Config: `PopulationPercentForMaxBoost=0`, non-Full mode - Expected: implementation falls back to immediate full factor once min threshold is met (avoids divide-by-zero / inverted range). ### Commands ```text /beehives BoostCalculation LinearPopulation /beehives PopulationPercentForMaxBoost 0 ``` ## 9) Distance and population multiply together - Use non-Full mode with population factor around `50%`. - Move crop just outside full-distance zone so distance effectiveness is also around `50%`. - Expected: per-hive contribution is about `25%` (`0.5 * 0.5`). ### Commands ```text /beehives BoostCalculation LinearPopulation /beehives PopulationPercentForMaxBoost 100 /beehives MaxBeePopulation 50000 /beehives MinBeesForPlantBoost 1000 /beehives PlantsFullBoostDistanceToHive 20 /beehives BeehiveRadius 35 ``` ## 10) Multi-hive accumulation still clamps at 100% - Place multiple valid hives in range. - Expected: summed effectiveness does not exceed `100%` total. ### Commands ```text /beehives BoostCalculation Full /beehives YieldBoost true /beehives SpeedBoost true /beehives MultipleBeehivesBoostCombination Additive ``` ## 10b) Multi-hive combination: Max mode - Place multiple valid hives in range with noticeably different effectiveness. - Expected: final effectiveness equals the highest single-hive effectiveness (no additive stacking). ### Commands ```text /beehives MultipleBeehivesBoostCombination Max ``` ## 10c) Multi-hive combination: Additive mode - Place multiple valid hives in range with partial effectiveness. - Expected: effectiveness is additive across hives and capped at `100%`. ### Commands ```text /beehives MultipleBeehivesBoostCombination Additive ``` ## 11) Yield and speed consumers are consistent - Verify beehive info text and actual growth/drop behavior under same setup. - Expected: displayed boost trend matches runtime trend for growth speed and yield bonus when population changes. ### Commands ```text /beehives YieldBoost true /beehives SpeedBoost true /beehives GrowthSpeedBonus 0.2 /beehives YieldMultiplier 1.2 ``` ## 12) Verbosity 1 uses level words (no percentages, no parentheses) - Config: effective InformationVerbosity = `1` - Expected beehive block info line: `Crop boost effectiveness: Low|Medium|High` - Expected: no `%` and no `(...)` details. ### Commands ```text /beehives InformationVerbosityServerSideType ServerForced /beehives InformationVerbosityServer 1 /beehives YieldBoost true /beehives SpeedBoost true ``` ## 13) Verbosity > 1 shows detailed percentages and details - Config: effective InformationVerbosity = `2` (or higher) - Expected beehive block info line format: `Crop boost effectiveness: X% (+Y% yield, +Z% speed)`. ### Commands ```text /beehives InformationVerbosityServerSideType ServerForced /beehives InformationVerbosityServer 2 /beehives YieldBoost true /beehives SpeedBoost true ``` ## 14) Crop boost line hidden when boost is disabled - Config: `YieldBoost=false`, `SpeedBoost=false` - Expected on beehive block info: no `Crop boost effectiveness` line and no `Population too low for a crop boost` warning. ### Commands ```text /beehives YieldBoost false /beehives SpeedBoost false ``` ## 15) Low-population warning appears in yellow when boost is enabled - Config: boost enabled, nearby hive population below `MinBeesForPlantBoost` - Expected on beehive block info: yellow line `Population too low for a crop boost`. ### Commands ```text /beehives YieldBoost true /beehives SpeedBoost true /beehives MinBeesForPlantBoost 1000 ```