⚡ 全域生長倍率與獨立作物調諧
生長倍率引擎允许服务器管理员与玩家对全球作物的生長速度進行微調,或為特定作物定制專屬生長曲線。
📊 生長倍率資訊框
| Property | Specification |
|---|---|
| Global GameRule | agrarian_reform:global_growth_multiplier |
| Dynamic Crop Rule | agrarian_reform:crop_growth_multiplier_<crop_id> |
| 預設全局值 | 100(100% 原版基准速度) |
| 有效數值範圍 | -1(凍結),0(繼承全局/关闭),1 至 2147483647 |
| 性能最佳化 | 最大阶段提前退出(成熟后立即中止額外刻循環) |
📐 倍率計算數學模型與解析
隨機刻循環通過 BlockStateBaseMixin 与 GrowthHelper.handleRandomTick 拦截植物生長判定:
1. Hierarchy Resolution
- 动态特定覆蓋 ($> 0$):若設定了特定作物規則,則优先覆蓋全局倍率。
- 凍結/停用 ($-1$ 或全局 $0$):徹底取消隨機刻与時空連續體離線增量 ($0%$ 生長)。
- 繼承全局 ($0$):回退至全局倍率 $M$。
2. 減速生長 ($0 < M < 100$)
当 $M < 100$ 時,隨機刻按 $\frac{M}{100}$ 的概率執行。例如在 $M = 50$ 時,作物隨機生長刻以原版速度的 50% 發生。
3. Accelerated Growth ($M > 100$)
当 $M > 100$ 時,引擎会計算保底的額外隨機刻運行次數 $E$:
$$E = \left\lfloor \frac{M}{100} \right\rfloor - 1$$
以 $\text{rem} = M \pmod{100}$ 的概率進行餘數检查,成功時再獎勵 1 次額外刻運行。
4. Max-Age Early-Break Optimization
在加速循環中(如 $M = 500$ 執行 5 次運行),handleRandomTick 在每次運行后都会查询 AgrarianCropRules.isMaxAge(currentState)。一旦作物達到完全成熟(例如小麥達到 7 阶段),循環立即終止,避免多餘的方塊計算開銷。
⚠️ 設定與指令範例
bash
# 設定全局生長速度為 200%(雙倍速度)
/gamerule agrarian_reform:global_growth_multiplier 200
# 單獨覆蓋小麥以 400% 速度生長
/gamerule agrarian_reform:crop_growth_multiplier_wheat 400
# 完全凍結甘蔗的生長
/gamerule agrarian_reform:crop_growth_multiplier_sugar_cane -1See also: 效能最佳化與佇列節流, 作物註冊表與通用作物, and 時空連續體 (離線生長模擬).
