5.2 KiB
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 croissanceFarming/Coops/- Definitions des poulaillers