201 lines
5.2 KiB
Markdown
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
|