--- title: Agriculture type: docs weight: 2 --- Le systeme d'agriculture fournit la croissance des cultures, la recolte et les mecaniques de poulaillers. **Package:** `com.hypixel.hytale.builtin.adventure.farming` ## Architecture ``` FarmingPlugin ├── Composants de Bloc (ChunkStore) │ ├── TilledSoilBlock - Etat de la terre labouree │ ├── FarmingBlock - Suivi de croissance │ ├── FarmingBlockState - Etat de croissance du bloc │ └── CoopBlock - Etat du poulailler ├── Composants d'Entite (EntityStore) │ └── CoopResidentComponent - Animaux dans les poulaillers ├── Modificateurs de Croissance │ ├── FertilizerGrowthModifier │ ├── WaterGrowthModifier │ └── LightLevelGrowthModifier └── Etapes d'Agriculture ├── BlockTypeFarmingStageData ├── BlockStateFarmingStageData ├── PrefabFarmingStageData └── SpreadFarmingStageData ``` ## Composants de Bloc ### TilledSoilBlock Suit l'etat du sol laboure sur ChunkStore: ```java ComponentType type = FarmingPlugin.get().getTiledSoilBlockComponentType(); ``` ### FarmingBlock Suit la progression de croissance des cultures: ```java public class FarmingBlock { // Modificateur de taux de croissance (0 = pas de propagation sur nouveau) public void setSpreadRate(float rate); } ``` ### FarmingBlockState Etat actuel d'agriculture pour une position de bloc. ### CoopBlock Etat du bloc poulailler pour heberger des creatures. ## Modificateurs de Croissance Les modificateurs de croissance affectent le taux de croissance: | Modificateur | ID Type | Description | |--------------|---------|-------------| | `FertilizerGrowthModifierAsset` | `Fertilizer` | Boost avec engrais | | `WaterGrowthModifierAsset` | `Water` | Bonus proximite eau | | `LightLevelGrowthModifierAsset` | `LightLevel` | Croissance basee sur lumiere | ### Configuration d'Asset ```yaml # Farming/Modifiers/bone_meal.json { "Id": "bone_meal", "Type": "Fertilizer", "GrowthMultiplier": 2.0 } ``` ## Etapes d'Agriculture Les cultures progressent a travers des etapes definies comme assets: | Type d'Etape | ID Type | Description | |--------------|---------|-------------| | `BlockTypeFarmingStageData` | `BlockType` | Change le type de bloc | | `BlockStateFarmingStageData` | `BlockState` | Change l'etat du bloc | | `PrefabFarmingStageData` | `Prefab` | Place une structure prefab | | `SpreadFarmingStageData` | `Spread` | Se propage aux blocs adjacents | ### Comportement de Propagation ```java public interface SpreadGrowthBehaviour { // Croissance directionnelle (vignes, etc.) } public class DirectionalGrowthBehaviour implements SpreadGrowthBehaviour { // Pousse dans la direction specifiee } ``` ## Interactions Interactions d'agriculture enregistrees: | Interaction | ID Type | Description | |-------------|---------|-------------| | `HarvestCropInteraction` | `HarvestCrop` | Recolter les cultures matures | | `FertilizeSoilInteraction` | `FertilizeSoil` | Appliquer de l'engrais | | `ChangeFarmingStageInteraction` | `ChangeFarmingStage` | Forcer changement d'etape | | `UseWateringCanInteraction` | `UseWateringCan` | Arroser les cultures | | `UseCoopInteraction` | `UseCoop` | Interagir avec le poulailler | | `UseCaptureCrateInteraction` | `UseCaptureCrate` | Capturer des animaux | ### Exemple d'Interaction ```yaml # Definition d'interaction d'item { "Type": "HarvestCrop", "DropTable": "wheat_drops" } ``` ## Poulaillers ### FarmingCoopAsset Definir les configurations de poulailler: ```yaml # Farming/Coops/chicken_coop.json { "Id": "chicken_coop", "Capacity": 4, "NPCGroups": ["chickens"], "Drops": "egg_drops" } ``` ### CoopResidentComponent Composant d'entite pour les animaux vivant dans les poulaillers: ```java ComponentType type = FarmingPlugin.get().getCoopResidentComponentType(); ``` ## Systemes Le plugin d'agriculture enregistre ces systemes ECS: | Systeme | Description | |---------|-------------| | `OnSoilAdded` | Initialiser le sol quand laboure | | `OnFarmBlockAdded` | Initialiser la culture quand plantee | | `Ticking` | Traiter la croissance chaque tick | | `MigrateFarming` | Migration pour anciennes donnees | | `OnCoopAdded` | Initialiser les blocs poulailler | | `CoopResidentEntitySystem` | Gerer les residents du poulailler | | `CoopResidentTicking` | Ticking de production du poulailler | ## Evenements ```java // Empecher la propagation sur les chunks nouvellement generes getEventRegistry().registerGlobal( EventPriority.LAST, ChunkPreLoadProcessEvent.class, FarmingPlugin::preventSpreadOnNew ); ``` ## Utilisation de l'API ```java FarmingPlugin farming = FarmingPlugin.get(); // Obtenir les types de composants pour les requetes ComponentType farmingType = farming.getFarmingBlockComponentType(); // Verifier l'etat d'agriculture FarmingBlock block = holder.getComponent(farmingType); if (block != null) { block.setSpreadRate(1.0f); } ``` ## Configuration Assets charges depuis le repertoire `Farming/`: - `Farming/Modifiers/` - Definitions des modificateurs de croissance - `Farming/Coops/` - Definitions des poulaillers