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

5.2 KiB

title, type, weight
title type weight
Agriculture docs 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:

ComponentType<ChunkStore, TilledSoilBlock> type =
    FarmingPlugin.get().getTiledSoilBlockComponentType();

FarmingBlock

Suit la progression de croissance des cultures:

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

# 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

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

# Definition d'interaction d'item
{
  "Type": "HarvestCrop",
  "DropTable": "wheat_drops"
}

Poulaillers

FarmingCoopAsset

Definir les configurations de poulailler:

# 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:

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

// Empecher la propagation sur les chunks nouvellement generes
getEventRegistry().registerGlobal(
    EventPriority.LAST,
    ChunkPreLoadProcessEvent.class,
    FarmingPlugin::preventSpreadOnNew
);

Utilisation de l'API

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