📦 Componentes Principales

FarmingPlugin.java

Rol: Punto de entrada del módulo de farming

Funcionalidad Descripción
Registro de Assets GrowthModifierAsset, FarmingCoopAsset
Interacciones HarvestCrop, FertilizeSoil, UseWateringCan, UseCoop
Modificadores Fertilizer, LightLevel, Water
Tipos de Etapas BlockType, BlockState, Prefab, Spread
Componentes TilledSoilBlock, FarmingBlock, CoopBlock

FarmingBlock.java

Rol: Estado de un bloque en crecimiento

// Propiedades clave
String currentStageSet;     // Set de etapas actual ("Default")
float growthProgress;       // Progreso de crecimiento (0.0 - n.0)
Instant lastTickGameTime;   // Último tick procesado
int generation;             // Contador para aleatoriedad
float spreadRate;           // Velocidad de propagación

TilledSoilBlock.java

Rol: Estado del suelo cultivado

// Estados del suelo
boolean planted;        // ¿Tiene cultivo encima?
boolean fertilized;     // ¿Fertilizado?
boolean externalWater;  // ¿Agua externa (lluvia/bloque)?
Instant wateredUntil;   // Tiempo hasta que se seque
Instant decayTime;      // Tiempo hasta que decaiga

📈 Modificadores de Crecimiento

Los modificadores alteran la velocidad de crecimiento de los cultivos multiplicando el tiempo base:

Modificador Condición Efecto
💧 Water Bloque de agua adyacente O lluvia Multiplica velocidad
🧪 Fertilizer Suelo fertilizado Multiplica velocidad
☀️ LightLevel Nivel de luz suficiente Multiplica velocidad

🔄 Flujo de Crecimiento

El método FarmingUtil.tickFarming() contiene la lógica principal:

// Flujo de crecimiento
1. Obtener tiempo transcurrido desde último tick
2. Obtener etapa actual del cultivo
3. Calcular duración base de la etapa (min + random * (max-min))
4. Aplicar multiplicadores de crecimiento
5. Si tiempo >= duración: avanzar a siguiente etapa
6. Programar próximo tick
💡
Cálculo de Multiplicadores
Cada modificador activo multiplica el resultado del anterior. Por ejemplo: Water (1.5x) + Fertilizer (1.3x) = 1.95x velocidad total.

📁 Archivos Clave

  • 📄 FarmingPlugin.java 134 líneas - Registro del módulo
  • 📄 FarmingSystems.java 542 líneas - Lógica de tick
  • 📄 FarmingUtil.java 246 líneas - Utilidades de crecimiento
  • 📄 FarmingData.java 105 líneas - Configuración
  • 📄 FarmingBlock.java 126 líneas - Estado de cultivo
  • 📄 TilledSoilBlock.java 136 líneas - Estado de suelo
  • 📄 WaterGrowthModifierAsset.java 197 líneas - Modificador agua