Skip to content

🌿 Registri Tanaman & Tanaman Universal

Agrarian Reform menghadirkan mesin penemuan tanaman universal (AgrarianCropRules.java) dengan cache $O(1)$. Seluruh tanaman vanilla maupun mod otomatis terdeteksi, didukung dalam pertumbuhan offline, dan diberikan GameRule tersendiri.


🔍 Mesin Penemuan & Klasifikasi Tanaman Dinamis

                               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

📊 Indeks Tanaman yang Didukung & Tahapan Pertumbuhan

KategoriTarget Class Java / TagContoh VanillaRata-rata Tick / TahapPertumbuhan OfflineTepung Tulang
Tanaman StandarCropBlock, #c:cropsGandum, Wortel, Kentang, Bit Merah$\sim 6,241\text{ tick}$✅ Ya (Antrean Bertahap)Standar Vanilla
Batang TinggiSugarCaneBlock, CactusBlockTebu, Kaktus$1,365\text{ tick}$✅ Ya (Tinggi Maks 3)✅ Dukungan Ekstra
Flora NetherNetherWartBlockNether Wart$13,650\text{ tick}$✅ Ya (Tahap 0 $\to$ 3)✅ Dukungan Ekstra
Polong & BuahCocoaBlock, SweetBerryBushBlockBiji Kakao, Buah Beri$6,825\text{ tick}$✅ Ya (Tahap 0 $\to$ 2/3)✅ Dukungan Ekstra
Sulur TanamanVineBlockSulurFleksibel✅ Ya (Tumbuh ke Bawah)✅ Dukungan Ekstra
Pohon & BibitSaplingBlockBibit Ek, Spruce, Birch, Ceri$95,550\text{ tick}$✅ Ya (Menjadi Pohon)Standar Vanilla
Tanaman ModSemua #c:crops atau AgeBlockFarmer's Delight, Mystical AgricultureDapat Diatur✅ Ya (Delta Seimbang)Dinamis / Ekstra

🌾 Resolusi Hierarki Pengali & Status Beku

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

🔄 Deteksi Saat Bermain & Ketahanan Hapus Mod

  1. Deteksi Dinamis: AgrarianCropRules mencegat random tick dan pemuatan chunk. Tanaman mod baru langsung dikenali seketika, disimpan di cache $O(1)$, dan langsung memiliki GameRule tanpa perlu restart.
  2. Keamanan Saat Mod Dihapus: Aturan dinamis hanya menyimpan teks Identifier (namespace:path). Saat mod dicopot, blok yang hilang diabaikan dengan aman tanpa menyebabkan crash atau ClassNotFoundException.

🏷️ Integrasi Tag Datapack (AgrarianTags)

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

See also: The Continuum (Pertumbuhan Luar Jaringan), Pengali Pertumbuhan Global, and Konfigurasi Dua Tingkat.

Official documentation & web portal for Dasik Igaijinn mods.