Skip to content

⚙️ Zwei-Ebenen-Konfigurationsarchitektur

Agrarian Reform implementiert ein zweistufiges Konfigurationssystem aus globaler JSON-Vorlage und Live-Spielregeln.


🏗️ Architekturüberblick

                      GLOBALE KONFIGURATIONSVORLAGE (Schema v2)
                         config/agrarian-reform.json

                                     ▼ (Start von Server / Integrierter Welt)
                         DYNAMISCHER SPIELREGEL-MANAGER
                   Registriert Standardregeln und erkennt Nutzpflanzen

                                     ▼ (Runtime Administration)
        MODMENU & YACL v3 GUI (3 REITER) <---> /gamerule-BEFEHLE IM SPIEL

                                     ▼ (Automatisches Speichern beim Entladen)
                       THREAD-SAFE DIRTY-TRACKING PERSISTENCE

1. Globale JSON-Vorlage (config/agrarian-reform.json)

Die Datei speichert Standardwerte für neue Welten. Bestehende Welten bleiben unberührt.

2. Aktive Welt-Spielregeln (agrarian_reform:*)

Laufende Welten nutzen echte Minecraft-Spielregeln. Änderungen über das Menü oder /gamerule greifen sofort.

3. Threadsichere Speicherung & Robustheit bei Mod-Entfernung

  • Gedrosseltes Speichern: Neue Sorten markieren den Status im Speicher als dirty = true. Das Schreiben erfolgt bei regulären Speicherpunkten.
  • Sicherheit bei Deinstallation: Pflanzendaten werden als Textschlüssel gespeichert, sodass Mod-Entfernungen keine Fehler verursachen.

📜 Standarddatei config/agrarian-reform.json (Schema v2)

json
{
  "configVersion": 2,
  "hydrationSourceRange": 8,
  "hydrationFlowingRange": 4,
  "pureWaterHydrationOnly": false,
  "rainGrowthAcceleration": 1,
  "growthBiodiversityBonus": true,
  "totalTrampleImmunity": false,
  "trampleImmunityPlayersOnly": false,
  "alwaysWetFarmland": false,
  "seedsGrowGrass": true,
  "rightClickHarvest": true,
  "universalBonemeal": true,
  "globalGrowthMultiplier": 100,
  "ambientCropRustle": true,
  "ambientVitalityParticles": true,
  "forcedCrops": [
    "minecraft:wheat",
    "minecraft:carrots",
    "minecraft:potatoes",
    "minecraft:beetroots"
  ],
  "forcedGrowthMultipliers": {
    "minecraft:wheat": 0,
    "minecraft:carrots": 0,
    "minecraft:potatoes": 0,
    "minecraft:beetroots": 0
  }
}

🖥️ Optionale Client-GUI-Integration (ModMenu & YACL v3)

Mit ModMenu und YACL v3 steht ein 3-teiliges Konfigurationsmenü zur Verfügung:

  1. Allgemein: Schieberegler für Bewässerungsradien ($0 \to 32$), reines Wasser, Regenbeschleunigung ($0 \to 10$), Mischkultur, Rechtsklick-Ernte und Knochenmehl.
  2. Immersion & Grafik: Trampelschutz, Spieler/Haustier-Beschränkung, feuchter Ackerboden, Raschelsounds und Glückspartikel.
  3. Pflanzenfaktoren: Alphabetische Übersicht aller Sorten mit Zahlenfeldern ($-1 = \text{eingefroren}$, $0 = \text{global}$, $\ge 100 = \text{angepasst}$).
java
public class ModMenuIntegration implements ModMenuApi {
    @Override
    public ConfigScreenFactory<?> getModConfigScreenFactory() {
        if (FabricLoader.getInstance().isModLoaded("yet-another-config-lib")) {
            return YaclScreenHelper::createScreen;
        }
        return parent -> null;
    }
}

🛡️ Server-Sicherheit: Alle YACL-Klassen sind in YaclScreenHelper isoliert und werden auf dedizierten Servern niemals geladen!


See also: Spielregeln (GameRules), Pflanzenregister und universelle Feldfrüchte, and Entwickler-Setup und Kompilierung.

Official documentation & web portal for Dasik Igaijinn mods.