⚙️ 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 PERSISTENCE1. 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 = trueet 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)
{
"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 :
- 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.
- Immersion & Esthétique : Immunité au piétinement, restriction joueur/familiers, terre toujours humide, bruissement et particules de vitalité.
- 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}$).
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
YaclScreenHelperpour 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.
