Skip to content

🌿 Реестр растений и универсальное автообнаружение культур

Agrarian Reform включает в себя движок универсального автообнаружения культур (AgrarianCropRules.java) с быстрым кэшем $O(1)$. Любая культура автоматически регистрируется для офлайн-симуляции Континуума и получает собственное игровое правило без настройки датапаков.


🔍 Движок динамического обнаружения и классификации

                               BLOCK INSPECTION

                     ┌────────────────┴────────────────┐
                     ▼                                 ▼
          Known Cached Crop (O(1))            Uncached Block Type
                     │                                 │
                     ▼                                 ▼
            Return Multiplier              3-Tier Discovery Pipeline
                                           1. Class Hierarchy: CropBlock, SaplingBlock, BonemealableBlock
                                           2. Tag Membership: #c:crops, #minecraft:crops, #farmersdelight:wild_crops
                                           3. Property Inspection: BlockState with "age" IntegerProperty

                                                       ▼ (If Match Found)
                                           DYNAMIC REGISTRATION
                                           - Cache in DYNAMIC_CROPS Set
                                           - Register GameRule: agrarian_reform:crop_growth_multiplier_<id>
                                           - Mark AgrarianConfig dirty = true

📊 Индекс поддерживаемых растений и стадии роста

КатегорияЦелевой класс Java / ТегПримеры в игреТактов на стадиюОфлайн-ростКостная мука
Обычные культурыCropBlock, #c:cropsПшеница, морковь, картофель, свекла$\sim 6,241\text{ тактов}$✅ Да (Ограниченная очередь)Ванилла
Высокие стеблиSugarCaneBlock, CactusBlockСахарный тростник, кактус$1,365\text{ тактов}$✅ Да (Высота до 3)✅ Расширенная
Флора НезераNetherWartBlockАдский нарост$13,650\text{ тактов}$✅ Да (Стадии 0 $\to$ 3)✅ Расширенная
Стручки и ягодыCocoaBlock, SweetBerryBushBlockКакао-бобы, сладкие ягоды$6,825\text{ тактов}$✅ Да (Стадии 0 $\to$ 2/3)✅ Расширенная
Лианы и вьюныVineBlockЛианыПеременное✅ Да (Рост вниз)✅ Расширенная
Деревья и саженцыSaplingBlockСаженцы дуба, ели, березы, вишни$95,550\text{ тактов}$✅ Да (Превращение в дерево)Ванилла
Модовые культурыЛюбой #c:crops или AgeBlockFarmer's Delight, Mystical AgricultureНастраивается✅ Да (Масштабируемый прирост)Динамическая

🌾 Иерархия множителей и состояние заморозки

java
public static int getEffectiveGrowthMultiplier(Level level, Block block) {
    Identifier id = BuiltInRegistries.BLOCK.getKey(block);
    // 1. Check world-specific GameRule
    GameRule<Integer> dynamicRule = DYNAMIC_GAMERULES.get(id);
    if (dynamicRule != null && level instanceof ServerLevel serverLevel) {
        int val = DynamicGameRuleManager.getInt(serverLevel, dynamicRule);
        if (val > 0) return val;       // Positive override
        if (val == -1) return 0;       // -1 = Frozen (0% growth)
    }
    // 2. Fall back to Global Multiplier
    if (level instanceof ServerLevel serverLevel) {
        return DynamicGameRuleManager.getInt(serverLevel, AgrarianGameRules.GLOBAL_GROWTH_MULTIPLIER);
    }
    return 100;
}

🔄 Автообнаружение и безопасность удаления модов

  1. Динамическое обнаружение: AgrarianCropRules отслеживает случайные такты, загрузку чанков и взаимодействие с блоками. Новые модовые культуры обнаруживаются на лету, кэшируются за $O(1)$ и сразу получают правила без перезапуска.
  2. Защита от сбоев при удалении модов: Динамические правила хранят строки Identifier (namespace:path) без прямых ссылок на классы. При удалении мода несуществующие блоки безопасно игнорируются без ошибок ClassNotFoundException.

🏷️ Интеграция тегов датапаков (AgrarianTags)

json
{
  "replace": false,
  "values": [
    "#minecraft:crops",
    "#c:crops",
    "farmersdelight:cabbage",
    "farmersdelight:tomatoes",
    "farmersdelight:onions"
  ]
}

See also: Континуум (Офлайн-рост), Глобальный множитель роста, and Двухуровневая конфигурация.

Official documentation & web portal for Dasik Igaijinn mods.