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 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(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> visited, Set<GlobalPos> unreachable, TransportItemsBetweenContainers.TransportItemTarget target, Level level) private booleanisTargetValidToPick(PathfinderMob mob, Level level, BlockEntity blockEntity, Set<GlobalPos> visited, Set<GlobalPos> unreachable, 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
@Nullable private TransportItemsBetweenContainers.TransportItemTarget isTargetValidToPick(PathfinderMob mob, Level level, BlockEntity blockEntity, Set<GlobalPos> visited, Set<GlobalPos> unreachable, 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
-