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 @Nullable TransportItemsBetweenContainers.ContainerInteractionStateprivate 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 floatprivate @Nullable TransportItemsBetweenContainers.TransportItemTargetstatic 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 speedModifier, Predicate<BlockState> sourceBlockType, Predicate<BlockState> destinationBlockType, int horizontalSearchDistance, int verticalSearchDistance, Map<TransportItemsBetweenContainers.ContainerInteractionState, TransportItemsBetweenContainers.OnTargetReachedInteraction> onTargetInteractionActions, Consumer<PathfinderMob> onStartTravelling, Predicate<TransportItemsBetweenContainers.TransportItemTarget> shouldQueueForTarget) -
Method Summary
Modifier and TypeMethodDescriptionprivate static ItemStackaddItemsToContainer(PathfinderMob mob, Container container) private booleancanSeeAnyTargetSide(TransportItemsBetweenContainers.TransportItemTarget target, Level level, PathfinderMob mob, Vec3 pos) protected booleancanStillUse(ServerLevel p_435408_, PathfinderMob p_435654_, long p_433103_) protected booleancheckExtraStartConditions(ServerLevel p_443051_, PathfinderMob p_443527_) protected voidprivate voiddoReachedTargetInteraction(PathfinderMob mob, Container container, BiConsumer<PathfinderMob, Container> pickupItem, BiConsumer<PathfinderMob, Container> pickupNoItem, BiConsumer<PathfinderMob, Container> placeItem, BiConsumer<PathfinderMob, Container> placeNoItem) private voidprivate Vec3private intprivate static doubleprivate Vec3getPositionToReachTargetFrom(@Nullable Path path, PathfinderMob mob) private AABBgetTransportTarget(ServerLevel level, PathfinderMob mob) private intprivate static booleanprivate static booleanhasItemMatchingHandItem(PathfinderMob mob, Container container) private booleanhasValidTarget(Level level, PathfinderMob mob) private booleanhasValidTravellingPath(Level level, TransportItemsBetweenContainers.TransportItemTarget target, PathfinderMob mob) private booleanisAnotherMobInteractingWithTarget(TransportItemsBetweenContainers.TransportItemTarget target, Level level) private booleanprivate static booleanprivate booleanisPositionAlreadyVisited(Set<GlobalPos> visitedPositions, Set<GlobalPos> unreachablePositions, TransportItemsBetweenContainers.TransportItemTarget target, Level level) private booleanprivate @Nullable TransportItemsBetweenContainers.TransportItemTargetisTargetValidToPick(PathfinderMob mob, Level level, BlockEntity blockEntity, Set<GlobalPos> visitedPositions, Set<GlobalPos> unreachablePositions, AABB searchArea) private booleanisWantedBlock(PathfinderMob mob, BlockState state) private booleanisWithinTargetDistance(double distance, TransportItemsBetweenContainers.TransportItemTarget target, Level level, PathfinderMob mob, Vec3 center) protected voidmarkVisitedBlockPosAsUnreachable(PathfinderMob mob, Level level, BlockPos pos) private static booleanmatchesGettingItemsRequirement(Container container) private static booleanmatchesLeavingItemsRequirement(PathfinderMob mob, Container container) private voidonQueuingForTarget(TransportItemsBetweenContainers.TransportItemTarget target, Level level, PathfinderMob mob) private BiConsumer<PathfinderMob, Container> protected voidonReachedTarget(TransportItemsBetweenContainers.TransportItemTarget target, Level level, PathfinderMob mob) private voidprivate voidprotected voidonTravelToTarget(TransportItemsBetweenContainers.TransportItemTarget target, Level level, PathfinderMob mob) private static ItemStackpickupItemFromContainer(Container container) private voidpickUpItems(PathfinderMob mob, Container container) private voidputDownItem(PathfinderMob mob, Container container) private voidprivate voidsetInteractionState(TransportItemsBetweenContainers.ContainerInteractionState interactionState) private Vec3setMiddleYPosition(PathfinderMob mob, Vec3 pos) private voidsetTransportingState(TransportItemsBetweenContainers.TransportItemState transportingState) protected voidsetVisitedBlockPos(PathfinderMob mob, Level level, BlockPos pos) protected voidstart(ServerLevel p_451160_, PathfinderMob p_451431_, long p_451257_) private voidstartOnReachedTargetInteraction(TransportItemsBetweenContainers.TransportItemTarget target, PathfinderMob mob) private voidprotected voidstop(ServerLevel p_434127_, PathfinderMob p_435175_, long p_433064_) private voidstopInPlace(PathfinderMob mob) protected voidprivate booleanprivate booleantargetIsReachableFromPosition(Level level, boolean withinDistance, Vec3 targetPos, TransportItemsBetweenContainers.TransportItemTarget target, PathfinderMob mob) protected voidtick(ServerLevel p_434496_, PathfinderMob p_434166_, long p_434326_) protected booleantimedOut(long p_434291_) private booleanupdateInvalidTarget(ServerLevel level, PathfinderMob mob) 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 speedModifier, Predicate<BlockState> sourceBlockType, Predicate<BlockState> destinationBlockType, int horizontalSearchDistance, int verticalSearchDistance, Map<TransportItemsBetweenContainers.ContainerInteractionState, TransportItemsBetweenContainers.OnTargetReachedInteraction> onTargetInteractionActions, Consumer<PathfinderMob> onStartTravelling, Predicate<TransportItemsBetweenContainers.TransportItemTarget> shouldQueueForTarget)
-
-
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 target, Level level, PathfinderMob mob) -
onTravelToTarget
protected void onTravelToTarget(TransportItemsBetweenContainers.TransportItemTarget target, Level level, PathfinderMob mob) -
getCenterPos
-
onReachedTarget
protected void onReachedTarget(TransportItemsBetweenContainers.TransportItemTarget target, Level level, PathfinderMob mob) -
startQueuing
-
resumeTravelling
-
walkTowardsTarget
-
startOnReachedTargetInteraction
private void startOnReachedTargetInteraction(TransportItemsBetweenContainers.TransportItemTarget target, PathfinderMob mob) -
onStartTravelling
-
onReachedInteraction
private BiConsumer<PathfinderMob,Container> onReachedInteraction(TransportItemsBetweenContainers.ContainerInteractionState interactionState) -
setTransportingState
private void setTransportingState(TransportItemsBetweenContainers.TransportItemState transportingState) -
setInteractionState
private void setInteractionState(TransportItemsBetweenContainers.ContainerInteractionState interactionState) -
onTargetInteraction
private void onTargetInteraction(TransportItemsBetweenContainers.TransportItemTarget target, PathfinderMob mob) -
doReachedTargetInteraction
private void doReachedTargetInteraction(PathfinderMob mob, Container container, BiConsumer<PathfinderMob, Container> pickupItem, BiConsumer<PathfinderMob, Container> pickupNoItem, BiConsumer<PathfinderMob, Container> placeItem, BiConsumer<PathfinderMob, Container> placeNoItem) -
getTransportTarget
private Optional<TransportItemsBetweenContainers.TransportItemTarget> getTransportTarget(ServerLevel level, PathfinderMob mob) -
isTargetValidToPick
private @Nullable TransportItemsBetweenContainers.TransportItemTarget isTargetValidToPick(PathfinderMob mob, Level level, BlockEntity blockEntity, Set<GlobalPos> visitedPositions, Set<GlobalPos> unreachablePositions, AABB searchArea) -
isContainerLocked
-
hasValidTarget
-
hasValidTravellingPath
private boolean hasValidTravellingPath(Level level, TransportItemsBetweenContainers.TransportItemTarget target, PathfinderMob mob) -
getPositionToReachTargetFrom
-
setMiddleYPosition
-
isTargetBlocked
private boolean isTargetBlocked(Level level, TransportItemsBetweenContainers.TransportItemTarget target) -
targetHasNotChanged
private boolean targetHasNotChanged(Level level, TransportItemsBetweenContainers.TransportItemTarget target) -
getConnectedTargets
private Stream<TransportItemsBetweenContainers.TransportItemTarget> getConnectedTargets(TransportItemsBetweenContainers.TransportItemTarget target, Level level) -
getTargetSearchArea
-
getHorizontalSearchDistance
-
getVerticalSearchDistance
-
getVisitedPositions
-
getUnreachablePositions
-
isPositionAlreadyVisited
-
hasFinishedPath
-
setVisitedBlockPos
-
markVisitedBlockPosAsUnreachable
-
isWantedBlock
-
getInteractionRange
-
isWithinTargetDistance
private boolean isWithinTargetDistance(double distance, TransportItemsBetweenContainers.TransportItemTarget target, Level level, PathfinderMob mob, Vec3 center) -
targetIsReachableFromPosition
private boolean targetIsReachableFromPosition(Level level, boolean withinDistance, Vec3 targetPos, TransportItemsBetweenContainers.TransportItemTarget target, PathfinderMob mob) -
canSeeAnyTargetSide
private boolean canSeeAnyTargetSide(TransportItemsBetweenContainers.TransportItemTarget target, Level level, PathfinderMob mob, Vec3 pos) -
isAnotherMobInteractingWithTarget
private boolean isAnotherMobInteractingWithTarget(TransportItemsBetweenContainers.TransportItemTarget target, Level level) -
isPickingUpItems
-
matchesGettingItemsRequirement
-
matchesLeavingItemsRequirement
-
hasItemMatchingHandItem
-
pickUpItems
-
putDownItem
-
pickupItemFromContainer
-
addItemsToContainer
-
stopTargetingCurrentTarget
-
clearMemoriesAfterMatchingTargetFound
-
enterCooldownAfterNoMatchingTargetFound
-
stop
- Overrides:
stopin classBehavior<PathfinderMob>
-
stopInPlace
-