Skip to content

⚙️ Architecture de configuration à deux niveaux

Agrarian Reform dispose d'un système de configuration à deux niveaux reliant un modèle JSON global et les règles en jeu.


🏗️ Aperçu de l'architecture

                      MODÈLE DE CONFIGURATION GLOBAL (Schéma v2)
                         config/agrarian-reform.json

                                     ▼ (Démarrage Serveur / Monde Intégré)
                         GESTIONNAIRE DYNAMIQUE DE GAMERULES
                   Enregistre les règles et découvre les nouvelles cultures

                                     ▼ (Runtime Administration)
        INTERFACE CLIENT MODMENU & YACL v3 (3 ONGLETS) <---> COMMANDES /gamerule EN JEU

                                     ▼ (Sauvegarde automatique au déchargement)
                       THREAD-SAFE DIRTY-TRACKING PERSISTENCE

1. Modèle JSON global (config/agrarian-reform.json)

Ce fichier stocke les valeurs par défaut appliquées aux nouveaux mondes générés sans affecter les mondes existants.

2. Règles actives du monde (agrarian_reform:*)

Les mondes actifs appliquent directement les règles Minecraft. Les ajustements via l'interface ou /gamerule sont immédiats.

3. Persistance avec suivi des modifications et sécurité anti-désinstallation

  • Sauvegarde asynchrone régulée : Les nouvelles cultures découvertes passent en état dirty = true et sont enregistrées lors des points de sauvegarde.
  • Sécurité lors du retrait de mod : Les cultures étant stockées sous forme de clés textuelles, la suppression d'un mod ne génère aucune erreur.

📜 Fichier par défaut 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
  }
}

🖥️ Intégration GUI client optionnelle (ModMenu & YACL v3)

Lorsque ModMenu et YetAnotherConfigLib v3 (YACL) sont installés, les joueurs bénéficient d'un menu complet à 3 onglets :

  1. Options générales : Curseurs de rayons d'irrigation ($0 \to 32$), eau pure, pluie ($0 \to 10$), biodiversité, récolte au clic droit et poudre d'os.
  2. Immersion & Esthétique : Immunité au piétinement, restriction joueur/familiers, terre toujours humide, bruissement et particules de vitalité.
  3. Multiplicateurs par culture : Liste alphabétique dynamique de toutes les cultures avec champs numériques ($-1 = \text{gelé}$, $0 = \text{global}$, $\ge 100 = \text{vitesse custom}$).
java
public class ModMenuIntegration implements ModMenuApi {
    @Override
    public ConfigScreenFactory<?> getModConfigScreenFactory() {
        if (FabricLoader.getInstance().isModLoaded("yet-another-config-lib")) {
            return YaclScreenHelper::createScreen;
        }
        return parent -> null;
    }
}

🛡️ Protection des serveurs dédiés : Les écrans YACL sont strictement cantonnés dans YaclScreenHelper pour ne jamais charger de bytecode client sur serveur !


See also: Règles de jeu (GameRules), Registre des plantes et cultures universelles, and Environnement de développement et compilation.

Official documentation & web portal for Dasik Igaijinn mods.