Class PercentageHarvestPlantModule
java.lang.Object
com.minecolonies.core.colony.buildingextensions.modules.AbstractBuildingExtensionModule
com.minecolonies.core.colony.buildings.workerbuildings.plantation.AbstractPlantationModule
com.minecolonies.core.colony.buildings.workerbuildings.plantation.modules.generic.PercentageHarvestPlantModule
- All Implemented Interfaces:
IBuildingExtensionModule,IPlantationModule
- Direct Known Subclasses:
VinePlantModule
Plantation module for plants that should always keep an X amount of plants on the ground in order to keep spreading, similar to mushrooms.
Requirements:
Requirements:
- These plants generally have a random growth logic, mushrooms can spread in any direction, not even attached to next to the other mushroom. Vines can spread into any direction, etc.
- All the positions you expect the plants to appear have to be tagged.
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.minecolonies.api.colony.buildingextensions.plantation.IPlantationModule
IPlantationModule.ActionToPerform, IPlantationModule.PlantationModuleResult, IPlantationModule.PlanterAIModuleResultResetState -
Field Summary
Fields inherited from class com.minecolonies.core.colony.buildings.workerbuildings.plantation.AbstractPlantationModule
DEFAULT_MAX_PLANTSFields inherited from class com.minecolonies.core.colony.buildingextensions.modules.AbstractBuildingExtensionModule
extension -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedPercentageHarvestPlantModule(IBuildingExtension field, String fieldTag, String workTag, net.minecraft.world.item.Item item) Default constructor. -
Method Summary
Modifier and TypeMethodDescriptiondecideFieldWork(net.minecraft.world.level.Level world, @NotNull net.minecraft.core.BlockPos workingPosition) Core function for the planter module, is responsible for telling the AI what to do on the specific field.intReturns the maximum amount of actions that can be performed on a field, before the planter must forcefully switch to a new field.protected abstract intThe percentage of positions the planter should always leave present at the bare minimum.@Nullable net.minecraft.core.BlockPosgetNextWorkingPosition(net.minecraft.world.level.Level world) Obtains the next working position for the given field, if any.net.minecraft.core.BlockPosgetPositionToWalkTo(net.minecraft.world.level.Level world, net.minecraft.core.BlockPos workingPosition) Determines where the planter should walk to, in order to most effectively work on the given working position.List<net.minecraft.world.item.ItemStack>Returns a list of items that are mandatory for this module to function.protected booleanisValidClearingBlock(net.minecraft.world.level.block.state.BlockState blockState) Check if the block is a correct block for clearing.protected abstract booleanisValidHarvestBlock(net.minecraft.world.level.block.state.BlockState blockState) Check if the block is a correct block for harvesting.protected booleanisValidPlantingBlock(net.minecraft.world.level.block.state.BlockState blockState) Check if the block is a correct block for planting.Methods inherited from class com.minecolonies.core.colony.buildings.workerbuildings.plantation.AbstractPlantationModule
applyBonemeal, equals, getFieldTag, getItem, getMaxWorkingPositions, getPlantingBlockState, getPlantsToRequest, getRequiredResearchEffect, getValidBonemeal, getValidWorkingPositions, getWorkingPositions, getWorkTag, hashCodeMethods inherited from class com.minecolonies.core.colony.buildingextensions.modules.AbstractBuildingExtensionModule
getBuildingExtensionMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.minecolonies.api.colony.buildingextensions.modules.IBuildingExtensionModule
getBuildingExtensionMethods inherited from interface com.minecolonies.api.colony.buildingextensions.plantation.IPlantationModule
getRequiredTool
-
Constructor Details
-
PercentageHarvestPlantModule
protected PercentageHarvestPlantModule(IBuildingExtension field, String fieldTag, String workTag, net.minecraft.world.item.Item item) Default constructor.- Parameters:
field- the field instance this module is working on.fieldTag- the tag of the field anchor block.workTag- the tag of the working positions.item- the item which is harvested.
-
-
Method Details
-
decideFieldWork
public IPlantationModule.PlantationModuleResult.Builder decideFieldWork(net.minecraft.world.level.Level world, @NotNull @NotNull net.minecraft.core.BlockPos workingPosition) Description copied from interface:IPlantationModuleCore function for the planter module, is responsible for telling the AI what to do on the specific field.- Parameters:
world- the world reference that can be used for block state lookups.workingPosition- the position that has been chosen for work.- Returns:
- a basic enum state telling the planter AI what the AI should be doing next.
-
isValidPlantingBlock
protected boolean isValidPlantingBlock(net.minecraft.world.level.block.state.BlockState blockState) Check if the block is a correct block for planting. Defaults to being any air block.- Parameters:
blockState- the block state.- Returns:
- whether the block can be planted.
-
isValidClearingBlock
protected boolean isValidClearingBlock(net.minecraft.world.level.block.state.BlockState blockState) Check if the block is a correct block for clearing.- Parameters:
blockState- the block state.- Returns:
- whether the block can be cleared.
-
isValidHarvestBlock
protected abstract boolean isValidHarvestBlock(net.minecraft.world.level.block.state.BlockState blockState) Check if the block is a correct block for harvesting.- Parameters:
blockState- the block state.- Returns:
- whether the block can be harvested.
-
getNextWorkingPosition
@Nullable public @Nullable net.minecraft.core.BlockPos getNextWorkingPosition(net.minecraft.world.level.Level world) Description copied from interface:IPlantationModuleObtains the next working position for the given field, if any.- Parameters:
world- the world reference that can be used for block state lookups.- Returns:
- the next position to work on, or null.
-
getActionLimit
public int getActionLimit()Description copied from interface:IPlantationModuleReturns the maximum amount of actions that can be performed on a field, before the planter must forcefully switch to a new field.- Returns:
- the maximum of actions the planter can perform on the field per cycle.
-
getRequiredItemsForOperation
Description copied from interface:IPlantationModuleReturns a list of items that are mandatory for this module to function.- Returns:
- a list of items.
-
getMinimumPlantPercentage
protected abstract int getMinimumPlantPercentage()The percentage of positions the planter should always leave present at the bare minimum. If this is not reached the planter will plant additional plants to reach this minimum.- Returns:
- a percentage of plants to always leave be.
-
getPositionToWalkTo
public net.minecraft.core.BlockPos getPositionToWalkTo(net.minecraft.world.level.Level world, net.minecraft.core.BlockPos workingPosition) Description copied from interface:IPlantationModuleDetermines where the planter should walk to, in order to most effectively work on the given working position. Defaults to the same block.- Specified by:
getPositionToWalkToin interfaceIPlantationModule- Overrides:
getPositionToWalkToin classAbstractPlantationModule- Parameters:
world- the world reference that can be used for block state lookups.workingPosition- the original working position.- Returns:
- the position for the planter to walk to.
-