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 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 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 body, Container container) private booleancanSeeAnyTargetSide(TransportItemsBetweenContainers.TransportItemTarget target, Level level, PathfinderMob body, Vec3 eyePosition) protected booleancanStillUse(ServerLevel level, PathfinderMob body, long timestamp) protected booleancheckExtraStartConditions(ServerLevel level, PathfinderMob body) protected voidprivate voiddoReachedTargetInteraction(PathfinderMob body, Container container, BiConsumer<PathfinderMob, Container> onPickupSuccess, BiConsumer<PathfinderMob, Container> onPickupFailure, BiConsumer<PathfinderMob, Container> onPlaceSuccess, BiConsumer<PathfinderMob, Container> onPlaceFailure) private voidprivate Vec3getCenterPos(PathfinderMob body) private intprivate static doubleprivate Vec3getPositionToReachTargetFrom(@Nullable Path path, PathfinderMob body) private AABBgetTransportTarget(ServerLevel level, PathfinderMob body) private intprivate static booleanhasFinishedPath(PathfinderMob body) private static booleanhasItemMatchingHandItem(PathfinderMob body, Container container) private booleanhasValidTarget(Level level, PathfinderMob body) private booleanhasValidTravellingPath(Level level, TransportItemsBetweenContainers.TransportItemTarget target, PathfinderMob body) private booleanisAnotherMobInteractingWithTarget(TransportItemsBetweenContainers.TransportItemTarget target, Level level) private booleanisContainerLocked(TransportItemsBetweenContainers.TransportItemTarget transportItemTarget) private static booleanprivate booleanisPositionAlreadyVisited(Set<GlobalPos> visitedPositions, Set<GlobalPos> unreachablePositions, TransportItemsBetweenContainers.TransportItemTarget target, Level level) private booleanprivate @Nullable TransportItemsBetweenContainers.TransportItemTargetisTargetValidToPick(PathfinderMob body, Level level, BlockEntity blockEntity, Set<GlobalPos> visitedPositions, Set<GlobalPos> unreachablePositions, AABB targetBlockSearchArea) private booleanisWantedBlock(PathfinderMob mob, BlockState block) private booleanisWithinTargetDistance(double distance, TransportItemsBetweenContainers.TransportItemTarget target, Level level, PathfinderMob body, Vec3 fromPos) protected voidmarkVisitedBlockPosAsUnreachable(PathfinderMob body, Level level, BlockPos target) private static booleanmatchesGettingItemsRequirement(Container container) private static booleanmatchesLeavingItemsRequirement(PathfinderMob body, Container container) private voidonQueuingForTarget(TransportItemsBetweenContainers.TransportItemTarget target, Level level, PathfinderMob body) private BiConsumer<PathfinderMob, Container> protected voidonReachedTarget(TransportItemsBetweenContainers.TransportItemTarget target, Level level, PathfinderMob body) private voidprivate voidprotected voidonTravelToTarget(TransportItemsBetweenContainers.TransportItemTarget target, Level level, PathfinderMob body) private static ItemStackpickupItemFromContainer(Container container) private voidpickUpItems(PathfinderMob body, Container container) private voidputDownItem(PathfinderMob body, Container container) private voidprivate voidprivate Vec3setMiddleYPosition(PathfinderMob body, Vec3 pos) private voidprotected voidsetVisitedBlockPos(PathfinderMob body, Level level, BlockPos target) protected voidstart(ServerLevel level, PathfinderMob body, long timestamp) private voidstartOnReachedTargetInteraction(TransportItemsBetweenContainers.TransportItemTarget target, PathfinderMob body) private voidstartQueuing(PathfinderMob body) protected voidstop(ServerLevel level, PathfinderMob body, long timestamp) private voidstopInPlace(PathfinderMob mob) protected voidprivate booleanprivate booleantargetIsReachableFromPosition(Level level, boolean canReachTarget, Vec3 pos, TransportItemsBetweenContainers.TransportItemTarget target, PathfinderMob body) protected voidtick(ServerLevel level, PathfinderMob body, long timestamp) protected booleantimedOut(long timestamp) private booleanupdateInvalidTarget(ServerLevel level, PathfinderMob body) private voidMethods inherited from class Behavior
debugString, doStop, getRequiredMemories, 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 timestamp) - Overrides:
timedOutin classBehavior<PathfinderMob>
-
tick
- Overrides:
tickin classBehavior<PathfinderMob>
-
updateInvalidTarget
-
onQueuingForTarget
private void onQueuingForTarget(TransportItemsBetweenContainers.TransportItemTarget target, Level level, PathfinderMob body) -
onTravelToTarget
protected void onTravelToTarget(TransportItemsBetweenContainers.TransportItemTarget target, Level level, PathfinderMob body) -
getCenterPos
-
onReachedTarget
protected void onReachedTarget(TransportItemsBetweenContainers.TransportItemTarget target, Level level, PathfinderMob body) -
startQueuing
-
resumeTravelling
-
walkTowardsTarget
-
startOnReachedTargetInteraction
private void startOnReachedTargetInteraction(TransportItemsBetweenContainers.TransportItemTarget target, PathfinderMob body) -
onStartTravelling
-
onReachedInteraction
private BiConsumer<PathfinderMob, Container> onReachedInteraction(TransportItemsBetweenContainers.ContainerInteractionState state) -
setTransportingState
-
setInteractionState
-
onTargetInteraction
private void onTargetInteraction(TransportItemsBetweenContainers.TransportItemTarget target, PathfinderMob body) -
doReachedTargetInteraction
private void doReachedTargetInteraction(PathfinderMob body, Container container, BiConsumer<PathfinderMob, Container> onPickupSuccess, BiConsumer<PathfinderMob, Container> onPickupFailure, BiConsumer<PathfinderMob, Container> onPlaceSuccess, BiConsumer<PathfinderMob, Container> onPlaceFailure) -
getTransportTarget
private Optional<TransportItemsBetweenContainers.TransportItemTarget> getTransportTarget(ServerLevel level, PathfinderMob body) -
isTargetValidToPick
private @Nullable TransportItemsBetweenContainers.TransportItemTarget isTargetValidToPick(PathfinderMob body, Level level, BlockEntity blockEntity, Set<GlobalPos> visitedPositions, Set<GlobalPos> unreachablePositions, AABB targetBlockSearchArea) -
isContainerLocked
private boolean isContainerLocked(TransportItemsBetweenContainers.TransportItemTarget transportItemTarget) -
hasValidTarget
-
hasValidTravellingPath
private boolean hasValidTravellingPath(Level level, TransportItemsBetweenContainers.TransportItemTarget target, PathfinderMob body) -
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 body, Vec3 fromPos) -
targetIsReachableFromPosition
private boolean targetIsReachableFromPosition(Level level, boolean canReachTarget, Vec3 pos, TransportItemsBetweenContainers.TransportItemTarget target, PathfinderMob body) -
canSeeAnyTargetSide
private boolean canSeeAnyTargetSide(TransportItemsBetweenContainers.TransportItemTarget target, Level level, PathfinderMob body, Vec3 eyePosition) -
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
-