Skip to content

🌿 Pflanzenregister und universelle Feldfrüchte

Agrarian Reform bietet ein konfigurationsfreies Pflanzen-Erkennungssystem (AgrarianCropRules.java) mit $O(1)$-Cache. Alle Vanilla- und Mod-Pflanzen werden automatisch registriert, für Offline-Wachstum vorbereitet und mit Spielregeln versehen.


🔍 Dynamische Pflanzenerkennungs-Engine

                               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

📊 Index unterstützter Pflanzen und Wachstumsstufen

KategorieJava-Klasse / TagVanilla-BeispieleDurchschnittstakt / StufeKontinuum-WachstumKnochenmehl
StandardpflanzenCropBlock, #c:cropsWeizen, Karotten, Kartoffeln, Rote Bete$\sim 6,241\text{ Ticks}$✅ Ja (Gedrosselt)Vanilla
Hohe HalmeSugarCaneBlock, CactusBlockZuckerrohr, Kaktus$1,365\text{ Ticks}$✅ Ja (Höhe max 3)✅ Erweitert
NetherfloraNetherWartBlockNetherwarze$13,650\text{ Ticks}$✅ Ja (Stufe 0 $\to$ 3)✅ Erweitert
Hülsen & BeerenCocoaBlock, SweetBerryBushBlockKakaobohnen, Süßbeeren$6,825\text{ Ticks}$✅ Ja (Stufe 0 $\to$ 2/3)✅ Erweitert
Ranken & EfeuVineBlockRankenVariabel✅ Ja (Ausbreitung abwärts)✅ Erweitert
Bäume & SetzlingeSaplingBlockEichen-, Fichten-, Birken-, Kirschsetzlinge$95,550\text{ Ticks}$✅ Ja (Baumwachstum)Vanilla
Mod-LandwirtschaftJedes #c:crops oder AgeBlockFarmer's Delight, Mystical AgricultureKonfigurierbar✅ Ja (Skaliertes Delta)Dynamisch / Erweitert

🌾 Auflösungshierarchie der Multiplikatoren

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

🔄 Dynamische Erkennung und Robustheit bei Mod-Entfernung

  1. Erkennung im Spiel: AgrarianCropRules fängt Zufallsticks, Chunk-Ladevorgänge und Aktionen ab. Neue Mod-Pflanzen werden sofort erfasst, im $O(1)$-Cache gespeichert und ohne Neustart bereitgestellt.
  2. Sicherheit bei Mod-Entfernung: Regeln und Caches nutzen reine Identifier-Strings (namespace:path). Wird eine Mod deinstalliert, werden fehlende Blöcke ignoriert – ohne Abstürze oder ClassNotFoundException.

🏷️ Datapack-Tag-Integration (AgrarianTags)

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

See also: Das Kontinuum (Offline-Wachstum), Globaler Wachstums-Multiplikator, and Zwei-Ebenen-Konfiguration.

Official documentation & web portal for Dasik Igaijinn mods.