Files
Documentation/content/gameplay-systems/farming.fr.md
2026-01-20 20:33:59 +01:00

201 lines
5.2 KiB
Markdown

---
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<ChunkStore, TilledSoilBlock> 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<EntityStore, CoopResidentComponent> 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<ChunkStore, FarmingBlock> 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