Skip to content

🌿 Registro de plantas e culturas universais

O Agrarian Reform possui um mecanismo universal de identificação de plantações (AgrarianCropRules.java) com cache $O(1)$. Qualquer planta vanilla ou de mods é reconhecida automaticamente, simulada offline e associada a uma GameRule.


🔍 Motor de descoberta dinâmica e classificação

                               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

📊 Índice de plantas suportadas e estágios de crescimento

CategoriaClasse Java / TagExemplos VanillaMédia de Ticks / EstágioCrescimento OfflineFarinha de Osso
Culturas ComunsCropBlock, #c:cropsTrigo, Cenouras, Batatas, Beterrabas$\sim 6,241\text{ ticks}$✅ Sim (Fila regulada)Nativo vanilla
Hastes AltasSugarCaneBlock, CactusBlockCana-de-açúcar, Cacto$1,365\text{ ticks}$✅ Sim (Altura máx 3)✅ Suporte ampliado
Flora do NetherNetherWartBlockFungo do Nether$13,650\text{ ticks}$✅ Sim (Estágios 0 $\to$ 3)✅ Suporte ampliado
Vagens e FrutasCocoaBlock, SweetBerryBushBlockCacau, Bagas Doces$6,825\text{ ticks}$✅ Sim (Estágios 0 $\to$ 2/3)✅ Suporte ampliado
Vinhas e FolhagemVineBlockVinhasVariável✅ Sim (Cresce para baixo)✅ Suporte ampliado
Árvores e MudasSaplingBlockMudas de Carvalho, Pinheiro, Bétula$95,550\text{ ticks}$✅ Sim (Vira árvore)Nativo vanilla
Agricultura de ModsQualquer #c:crops ou AgeBlockFarmer's Delight, Mystical AgricultureConfigurável✅ Sim (Delta ajustado)Dinâmico / Ampliado

🌾 Hierarquia de resolução de multiplicadores

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;
}

🔄 Detecção em Tempo Real e Tolerância a Desinstalação

  1. Detecção em Jogo: O AgrarianCropRules monitora ticks, chunks e interações. Novas culturas de mods são detectadas na hora, salvas no cache $O(1)$ e recebem GameRules sem reiniciar.
  2. Segurança ao Remover Mods: As regras utilizam strings Identifier (namespace:path). Ao remover um mod, os blocos ausentes são ignorados com segurança sem gerar erros ClassNotFoundException.

🏷️ Integração de tags de datapack (AgrarianTags)

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

See also: O Continuum (Crescimento offline), Multiplicador global de crescimento, and Configuração em dois níveis.

Official documentation & web portal for Dasik Igaijinn mods.