⚙️ Arquitectura de configuración de dos niveles
Agrarian Reform implementa un sistema de configuración en dos niveles que combina archivos JSON globales con GameRules en vivo.
🏗️ Resumen de la arquitectura
PLANTILLA DE CONFIGURACIÓN GLOBAL (Esquema v2)
config/agrarian-reform.json
│
▼ (Inicio del servidor / mundo integrado)
GESTOR DINÁMICO DE GAMERULES
Registra GameRules predeterminadas y detecta cultivos
│
▼ (Runtime Administration)
GUI MODMENU Y YACL v3 (3 PESTAÑAS) <---> COMANDOS /gamerule
│
▼ (Autoguardado al descargar / evento de guardado)
THREAD-SAFE DIRTY-TRACKING PERSISTENCE1. Plantilla global JSON (config/agrarian-reform.json)
El archivo JSON almacena los valores aplicados a los nuevos mundos. No modifica los mundos ya creados.
2. GameRules activas del mundo (agrarian_reform:*)
Los mundos activos se gestionan con GameRules de Minecraft. Los cambios tienen efecto de inmediato sin reiniciar.
3. Persistencia con seguimiento de cambios segura y tolerancia a mods
- Guardado asíncrono: Al detectar cultivos se marca
dirty = true. El guardado en disco se realiza durante el guardado habitual del mundo. - Seguridad ante desinstalaciones: Los cultivos se guardan como cadenas de texto, por lo que desinstalar un mod no causa errores de lectura.
📜 Archivo predeterminado 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
}
}🖥️ Integración opcional de GUI en cliente (ModMenu y YACL v3)
Con ModMenu y YACL v3 instalados, los jugadores tienen acceso a un menú de configuración con 3 pestañas:
- Opciones generales: Controles de radio de irrigación ($0 \to 32$), agua pura, lluvia ($0 \to 10$), biodiversidad, siega con clic derecho y polvo de hueso.
- Inmersión y estética: Inmunidad al pisoteo, restricción a jugadores/mascotas, tierra siempre húmeda, sonidos de follaje y partículas verdes.
- Multiplicadores de cultivos: Lista ordenada alfabéticamente con control numérico ($-1 = \text{congelado}$, $0 = \text{global}$, $\ge 100 = \text{personalizado}$).
java
public class ModMenuIntegration implements ModMenuApi {
@Override
public ConfigScreenFactory<?> getModConfigScreenFactory() {
if (FabricLoader.getInstance().isModLoaded("yet-another-config-lib")) {
return YaclScreenHelper::createScreen;
}
return parent -> null;
}
}🛡️ Seguridad en servidores dedicados: El código de pantallas YACL está aislado en
YaclScreenHelperpara evitar que el servidor cargue interfaces de cliente.
See also: Reglas de juego (GameRules), Registro de cultivos y soporte universal, and Configuración de desarrollo y compilación.
