Init
This commit is contained in:
200
content/gameplay-systems/farming.fr.md
Normal file
200
content/gameplay-systems/farming.fr.md
Normal file
@@ -0,0 +1,200 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user