⚙️ 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 PERSISTENCE1. 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:
- Allgemein: Schieberegler für Bewässerungsradien ($0 \to 32$), reines Wasser, Regenbeschleunigung ($0 \to 10$), Mischkultur, Rechtsklick-Ernte und Knochenmehl.
- Immersion & Grafik: Trampelschutz, Spieler/Haustier-Beschränkung, feuchter Ackerboden, Raschelsounds und Glückspartikel.
- 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
YaclScreenHelperisoliert und werden auf dedizierten Servern niemals geladen!
See also: Spielregeln (GameRules), Pflanzenregister und universelle Feldfrüchte, and Entwickler-Setup und Kompilierung.
