Class TransportItemsBetweenContainers
java.lang.Object
net.minecraft.world.entity.ai.behavior.Behavior<PathfinderMob>
net.minecraft.world.entity.ai.behavior.TransportItemsBetweenContainers
- All Implemented Interfaces:
BehaviorControl<PathfinderMob>
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumstatic interfacestatic enumstatic final recordNested classes/interfaces inherited from class net.minecraft.world.entity.ai.behavior.Behavior
Behavior.Status -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final doubleprivate static final doubleprivate static final doubleprivate static final doubleprivate final Predicate<BlockState> private final intprivate static final intprivate static final intprivate static final intprivate final Consumer<PathfinderMob> private final Map<TransportItemsBetweenContainers.ContainerInteractionState, TransportItemsBetweenContainers.OnTargetReachedInteraction> private static final intprivate final Predicate<TransportItemsBetweenContainers.TransportItemTarget> private final Predicate<BlockState> private final floatstatic final intprivate intprivate static final intprivate final intprivate static final intFields inherited from class net.minecraft.world.entity.ai.behavior.Behavior
DEFAULT_DURATION, entryCondition -
Constructor Summary
ConstructorsConstructorDescriptionTransportItemsBetweenContainers(float pSpeedModifier, Predicate<BlockState> pSourceBlockType, Predicate<BlockState> pDestinationBlockType, int pHorizontalSearchDistance, int pVerticalSearchDistance, Map<TransportItemsBetweenContainers.ContainerInteractionState, TransportItemsBetweenContainers.OnTargetReachedInteraction> pOnTargetInteractionActions, Consumer<PathfinderMob> pOnStartTravelling, Predicate<TransportItemsBetweenContainers.TransportItemTarget> pShouldQueueForTarget) -
Method Summary
Modifier and TypeMethodDescriptionprivate static ItemStackaddItemsToContainer(PathfinderMob pMob, Container pContainer) private booleancanSeeAnyTargetSide(TransportItemsBetweenContainers.TransportItemTarget pTarget, Level pLevel, PathfinderMob pMob, Vec3 pPos) protected booleancanStillUse(ServerLevel p_435408_, PathfinderMob p_435654_, long p_433103_) protected booleancheckExtraStartConditions(ServerLevel p_443051_, PathfinderMob p_443527_) protected voidprivate voiddoReachedTargetInteraction(PathfinderMob pMob, Container pContainer, BiConsumer<PathfinderMob, Container> pPickupItem, BiConsumer<PathfinderMob, Container> pPickupNoItem, BiConsumer<PathfinderMob, Container> pPlaceItem, BiConsumer<PathfinderMob, Container> pPlaceNoItem) private voidprivate Vec3getCenterPos(PathfinderMob pMob) getConnectedTargets(TransportItemsBetweenContainers.TransportItemTarget pTarget, Level pLevel) private intprivate static doubleprivate Vec3getPositionToReachTargetFrom(Path pPath, PathfinderMob pMob) private AABBgetTransportTarget(ServerLevel pLevel, PathfinderMob pMob) private intprivate static booleanhasFinishedPath(PathfinderMob pMob) private static booleanhasItemMatchingHandItem(PathfinderMob pMob, Container pContainer) private booleanhasValidTarget(Level pLevel, PathfinderMob pMob) private booleanhasValidTravellingPath(Level pLevel, TransportItemsBetweenContainers.TransportItemTarget pTarget, PathfinderMob pMob) private booleanisAnotherMobInteractingWithTarget(TransportItemsBetweenContainers.TransportItemTarget pTarget, Level pLevel) private booleanprivate static booleanprivate booleanisPositionAlreadyVisited(Set<GlobalPos> pVisited, Set<GlobalPos> pUnreachable, TransportItemsBetweenContainers.TransportItemTarget pTarget, Level pLevel) private booleanisTargetBlocked(Level pLevel, TransportItemsBetweenContainers.TransportItemTarget pTarget) isTargetValidToPick(PathfinderMob pMob, Level pLevel, BlockEntity pBlockEntity, Set<GlobalPos> pVisited, Set<GlobalPos> pUnreachable, AABB pSearchArea) private booleanisWantedBlock(PathfinderMob pMob, BlockState pState) private booleanisWithinTargetDistance(double pDistance, TransportItemsBetweenContainers.TransportItemTarget pTarget, Level pLevel, PathfinderMob pMob, Vec3 pCenter) protected voidmarkVisitedBlockPosAsUnreachable(PathfinderMob pMob, Level pLevel, BlockPos pPos) private static booleanmatchesGettingItemsRequirement(Container pContainer) private static booleanmatchesLeavingItemsRequirement(PathfinderMob pMob, Container pContainer) private voidonQueuingForTarget(TransportItemsBetweenContainers.TransportItemTarget pTarget, Level pLevel, PathfinderMob pMob) private BiConsumer<PathfinderMob, Container> onReachedInteraction(TransportItemsBetweenContainers.ContainerInteractionState pInteractionState) protected voidonReachedTarget(TransportItemsBetweenContainers.TransportItemTarget pTarget, Level pLevel, PathfinderMob pMob) private voidprivate voidonTargetInteraction(TransportItemsBetweenContainers.TransportItemTarget pTarget, PathfinderMob pMob) protected voidonTravelToTarget(TransportItemsBetweenContainers.TransportItemTarget pTarget, Level pLevel, PathfinderMob pMob) private static ItemStackpickupItemFromContainer(Container pContainer) private voidpickUpItems(PathfinderMob pMob, Container pContainer) private voidputDownItem(PathfinderMob pMob, Container pContainer) private voidprivate voidsetInteractionState(TransportItemsBetweenContainers.ContainerInteractionState pInteractionState) private Vec3setMiddleYPosition(PathfinderMob pMob, Vec3 pPos) private voidsetTransportingState(TransportItemsBetweenContainers.TransportItemState pTransportingState) protected voidsetVisitedBlockPos(PathfinderMob pMob, Level pLevel, BlockPos pPos) protected voidstart(ServerLevel p_451160_, PathfinderMob p_451431_, long p_451257_) private voidstartOnReachedTargetInteraction(TransportItemsBetweenContainers.TransportItemTarget pTarget, PathfinderMob pMob) private voidstartQueuing(PathfinderMob pMob) protected voidstop(ServerLevel p_434127_, PathfinderMob p_435175_, long p_433064_) private voidstopInPlace(PathfinderMob pMob) protected voidprivate booleantargetHasNotChanged(Level pLevel, TransportItemsBetweenContainers.TransportItemTarget pTarget) private booleantargetIsReachableFromPosition(Level pLevel, boolean pWithinDistance, Vec3 pTargetPos, TransportItemsBetweenContainers.TransportItemTarget pTarget, PathfinderMob pMob) protected voidtick(ServerLevel p_434496_, PathfinderMob p_434166_, long p_434326_) protected booleantimedOut(long p_434291_) private booleanupdateInvalidTarget(ServerLevel pLevel, PathfinderMob pMob) private voidMethods inherited from class net.minecraft.world.entity.ai.behavior.Behavior
debugString, doStop, getStatus, hasRequiredMemories, tickOrStop, tryStart
-
Field Details
-
TARGET_INTERACTION_TIME
public static final int TARGET_INTERACTION_TIME- See Also:
-
VISITED_POSITIONS_MEMORY_TIME
private static final int VISITED_POSITIONS_MEMORY_TIME- See Also:
-
TRANSPORTED_ITEM_MAX_STACK_SIZE
private static final int TRANSPORTED_ITEM_MAX_STACK_SIZE- See Also:
-
MAX_VISITED_POSITIONS
private static final int MAX_VISITED_POSITIONS- See Also:
-
MAX_UNREACHABLE_POSITIONS
private static final int MAX_UNREACHABLE_POSITIONS- See Also:
-
PASSENGER_MOB_TARGET_SEARCH_DISTANCE
private static final int PASSENGER_MOB_TARGET_SEARCH_DISTANCE- See Also:
-
IDLE_COOLDOWN
private static final int IDLE_COOLDOWN- See Also:
-
CLOSE_ENOUGH_TO_START_QUEUING_DISTANCE
private static final double CLOSE_ENOUGH_TO_START_QUEUING_DISTANCE- See Also:
-
CLOSE_ENOUGH_TO_START_INTERACTING_WITH_TARGET_DISTANCE
private static final double CLOSE_ENOUGH_TO_START_INTERACTING_WITH_TARGET_DISTANCE- See Also:
-
CLOSE_ENOUGH_TO_START_INTERACTING_WITH_TARGET_PATH_END_DISTANCE
private static final double CLOSE_ENOUGH_TO_START_INTERACTING_WITH_TARGET_PATH_END_DISTANCE- See Also:
-
CLOSE_ENOUGH_TO_CONTINUE_INTERACTING_WITH_TARGET
private static final double CLOSE_ENOUGH_TO_CONTINUE_INTERACTING_WITH_TARGET- See Also:
-
speedModifier
private final float speedModifier -
horizontalSearchDistance
private final int horizontalSearchDistance -
verticalSearchDistance
private final int verticalSearchDistance -
sourceBlockType
-
destinationBlockType
-
shouldQueueForTarget
-
onStartTravelling
-
onTargetInteractionActions
private final Map<TransportItemsBetweenContainers.ContainerInteractionState,TransportItemsBetweenContainers.OnTargetReachedInteraction> onTargetInteractionActions -
target
-
state
-
interactionState
-
ticksSinceReachingTarget
private int ticksSinceReachingTarget
-
-
Constructor Details
-
TransportItemsBetweenContainers
public TransportItemsBetweenContainers(float pSpeedModifier, Predicate<BlockState> pSourceBlockType, Predicate<BlockState> pDestinationBlockType, int pHorizontalSearchDistance, int pVerticalSearchDistance, Map<TransportItemsBetweenContainers.ContainerInteractionState, TransportItemsBetweenContainers.OnTargetReachedInteraction> pOnTargetInteractionActions, Consumer<PathfinderMob> pOnStartTravelling, Predicate<TransportItemsBetweenContainers.TransportItemTarget> pShouldQueueForTarget)
-
-
Method Details
-
start
- Overrides:
startin classBehavior<PathfinderMob>
-
checkExtraStartConditions
- Overrides:
checkExtraStartConditionsin classBehavior<PathfinderMob>
-
canStillUse
- Overrides:
canStillUsein classBehavior<PathfinderMob>
-
timedOut
protected boolean timedOut(long p_434291_) - Overrides:
timedOutin classBehavior<PathfinderMob>
-
tick
- Overrides:
tickin classBehavior<PathfinderMob>
-
updateInvalidTarget
-
onQueuingForTarget
private void onQueuingForTarget(TransportItemsBetweenContainers.TransportItemTarget pTarget, Level pLevel, PathfinderMob pMob) -
onTravelToTarget
protected void onTravelToTarget(TransportItemsBetweenContainers.TransportItemTarget pTarget, Level pLevel, PathfinderMob pMob) -
getCenterPos
-
onReachedTarget
protected void onReachedTarget(TransportItemsBetweenContainers.TransportItemTarget pTarget, Level pLevel, PathfinderMob pMob) -
startQueuing
-
resumeTravelling
-
walkTowardsTarget
-
startOnReachedTargetInteraction
private void startOnReachedTargetInteraction(TransportItemsBetweenContainers.TransportItemTarget pTarget, PathfinderMob pMob) -
onStartTravelling
-
onReachedInteraction
private BiConsumer<PathfinderMob,Container> onReachedInteraction(TransportItemsBetweenContainers.ContainerInteractionState pInteractionState) -
setTransportingState
private void setTransportingState(TransportItemsBetweenContainers.TransportItemState pTransportingState) -
setInteractionState
private void setInteractionState(TransportItemsBetweenContainers.ContainerInteractionState pInteractionState) -
onTargetInteraction
private void onTargetInteraction(TransportItemsBetweenContainers.TransportItemTarget pTarget, PathfinderMob pMob) -
doReachedTargetInteraction
private void doReachedTargetInteraction(PathfinderMob pMob, Container pContainer, BiConsumer<PathfinderMob, Container> pPickupItem, BiConsumer<PathfinderMob, Container> pPickupNoItem, BiConsumer<PathfinderMob, Container> pPlaceItem, BiConsumer<PathfinderMob, Container> pPlaceNoItem) -
getTransportTarget
private Optional<TransportItemsBetweenContainers.TransportItemTarget> getTransportTarget(ServerLevel pLevel, PathfinderMob pMob) -
isTargetValidToPick
@Nullable private TransportItemsBetweenContainers.TransportItemTarget isTargetValidToPick(PathfinderMob pMob, Level pLevel, BlockEntity pBlockEntity, Set<GlobalPos> pVisited, Set<GlobalPos> pUnreachable, AABB pSearchArea) -
isContainerLocked
-
hasValidTarget
-
hasValidTravellingPath
private boolean hasValidTravellingPath(Level pLevel, TransportItemsBetweenContainers.TransportItemTarget pTarget, PathfinderMob pMob) -
getPositionToReachTargetFrom
-
setMiddleYPosition
-
isTargetBlocked
private boolean isTargetBlocked(Level pLevel, TransportItemsBetweenContainers.TransportItemTarget pTarget) -
targetHasNotChanged
private boolean targetHasNotChanged(Level pLevel, TransportItemsBetweenContainers.TransportItemTarget pTarget) -
getConnectedTargets
private Stream<TransportItemsBetweenContainers.TransportItemTarget> getConnectedTargets(TransportItemsBetweenContainers.TransportItemTarget pTarget, Level pLevel) -
getTargetSearchArea
-
getHorizontalSearchDistance
-
getVerticalSearchDistance
-
getVisitedPositions
-
getUnreachablePositions
-
isPositionAlreadyVisited
-
hasFinishedPath
-
setVisitedBlockPos
-
markVisitedBlockPosAsUnreachable
-
isWantedBlock
-
getInteractionRange
-
isWithinTargetDistance
private boolean isWithinTargetDistance(double pDistance, TransportItemsBetweenContainers.TransportItemTarget pTarget, Level pLevel, PathfinderMob pMob, Vec3 pCenter) -
targetIsReachableFromPosition
private boolean targetIsReachableFromPosition(Level pLevel, boolean pWithinDistance, Vec3 pTargetPos, TransportItemsBetweenContainers.TransportItemTarget pTarget, PathfinderMob pMob) -
canSeeAnyTargetSide
private boolean canSeeAnyTargetSide(TransportItemsBetweenContainers.TransportItemTarget pTarget, Level pLevel, PathfinderMob pMob, Vec3 pPos) -
isAnotherMobInteractingWithTarget
private boolean isAnotherMobInteractingWithTarget(TransportItemsBetweenContainers.TransportItemTarget pTarget, Level pLevel) -
isPickingUpItems
-
matchesGettingItemsRequirement
-
matchesLeavingItemsRequirement
-
hasItemMatchingHandItem
-
pickUpItems
-
putDownItem
-
pickupItemFromContainer
-
addItemsToContainer
-
stopTargetingCurrentTarget
-
clearMemoriesAfterMatchingTargetFound
-
enterCooldownAfterNoMatchingTargetFound
-
stop
- Overrides:
stopin classBehavior<PathfinderMob>
-
stopInPlace
-