Class AbstractCraftingProductionResolver<C extends AbstractCrafting>
- All Implemented Interfaces:
IRequester,IRequestResolver<C>,IBuildingBasedRequester
- Direct Known Subclasses:
PrivateWorkerCraftingProductionResolver,PublicWorkerCraftingProductionResolver
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionattemptResolveForBuilding(@NotNull IRequestManager manager, @NotNull IRequest<? extends C> request, @NotNull AbstractBuilding building) attemptResolveForBuildingAndStack(@NotNull IRequestManager manager, @NotNull AbstractBuilding building, net.minecraft.world.item.ItemStack stack, int count, int minCount, IToken<?> recipeId) attemptResolveRequest(@NotNull IRequestManager manager, @NotNull IRequest<? extends C> request) Method used to attempt a resolving operation.protected booleancanBuildingCraftStack(@NotNull IRequestManager manager, @NotNull AbstractBuilding building, @NotNull net.minecraft.world.item.ItemStack stack) booleancanResolveRequest(@NotNull IRequestManager manager, IRequest<? extends C> requestToCheck) A PreCheck used to determine if this request resolver is able to resolve a given request.protected @Nullable IToken<?>createNewRequestForStack(@NotNull IRequestManager manager, net.minecraft.world.item.ItemStack stack, int count, int minCount, boolean matchMeta) createRequestsForRecipe(@NotNull IRequestManager manager, @NotNull AbstractBuilding building, int count, int minCount, @NotNull IRecipeStorage storage) getBuilding(@NotNull IRequestManager manager, @NotNull IToken<?> token) Get the building.Get the job entry for the production resolver.com.google.common.reflect.TypeToken<? extends C>Used to determine which type of requests can be resolved by this Resolver.booleanisValid()If this resolver has valid data in it.protected voidonAssignedToThisResolverForBuilding(@NotNull IRequestManager manager, @NotNull IRequest<? extends C> request, boolean simulation, @NotNull AbstractBuilding building) voidonRequestAssigned(@NotNull IRequestManager manager, @NotNull IRequest<? extends C> request, boolean simulation) Called by the manager given to indicate that this request has been assigned to you.voidresolveForBuilding(@NotNull IRequestManager manager, @NotNull IRequest<? extends C> request, @NotNull AbstractBuilding building) Resolve the request in a building.voidresolveRequest(@NotNull IRequestManager manager, @NotNull IRequest<? extends C> request) Method used to resolve a given request.Methods inherited from class com.minecolonies.core.colony.requestsystem.resolvers.core.AbstractRequestResolver
getId, getLocation, getPriority, getRequesterDisplayName, getSuitabilityMetricMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.minecolonies.api.colony.requestsystem.requester.IRequester
getId, getLocation, getRequesterDisplayName, onRequestedRequestCancelled, onRequestedRequestCompleteMethods inherited from interface com.minecolonies.api.colony.requestsystem.resolver.IRequestResolver
getFollowupRequestForCompletion, onAssignedRequestBeingCancelled, onAssignedRequestCancelled, onColonyUpdate
-
Constructor Details
-
AbstractCraftingProductionResolver
public AbstractCraftingProductionResolver(@NotNull @NotNull ILocation location, @NotNull @NotNull IToken<?> token, @NotNull @NotNull JobEntry jobEntry, Class<C> cClass) Constructor to initialize.- Parameters:
location- the location.token- the id.cClass- the class.
-
-
Method Details
-
getRequestType
Description copied from interface:IRequestResolverUsed to determine which type of requests can be resolved by this Resolver.- Specified by:
getRequestTypein interfaceIRequestResolver<C extends AbstractCrafting>- Returns:
- The class that represents this Type of Request this resolver can resolve.
-
getJobEntry
Get the job entry for the production resolver.- Returns:
- the entry.
-
getBuilding
public Optional<IRequester> getBuilding(@NotNull @NotNull IRequestManager manager, @NotNull @NotNull IToken<?> token) Description copied from interface:IBuildingBasedRequesterGet the building.- Specified by:
getBuildingin interfaceIBuildingBasedRequester- Parameters:
manager- the manager.token- the token.- Returns:
- the IRequester or empty.
-
canResolveRequest
public boolean canResolveRequest(@NotNull @NotNull IRequestManager manager, IRequest<? extends C> requestToCheck) Description copied from interface:IRequestResolverA PreCheck used to determine if this request resolver is able to resolve a given request. Should quickly and cheaply check if this resolver COULD resolve this request.- Specified by:
canResolveRequestin interfaceIRequestResolver<C extends AbstractCrafting>- Parameters:
manager- The manager that is checking if this resolver could resolve that request.requestToCheck- The request to check.- Returns:
- True when this resolver COULD resolve the given request, false when not.
-
attemptResolveRequest
@Nullable public @Nullable List<IToken<?>> attemptResolveRequest(@NotNull @NotNull IRequestManager manager, @NotNull @NotNull IRequest<? extends C> request) Description copied from interface:IRequestResolverMethod used to attempt a resolving operation.When this attempt was successful a List with tokens of required requests is returned. This list maybe empty. The list should indicate all sub requests that should be fullfilled before the @code{resolve(IRequest request)} method is called.
When this attempt was not successful, eg. this resolver could not schedule a crafting operation, a Null object should be returned. In that case the next resolver will be tried by the manager.
IT IS VITAL THAT THE REQUEST RETURNED ARE NOT YET ASSIGNED. SIMULATION AND OTHER STRATEGIES WILL FAIL ELSE! THE MANAGER GIVEN WILL HANDLE ASSIGNING HIMSELF!
- Specified by:
attemptResolveRequestin interfaceIRequestResolver<C extends AbstractCrafting>- Parameters:
manager- The manager that is attempting to resolve using this resolver.request- The request to resolve.- Returns:
- The tokens of required requests if the attempt was successful (an empty list is allowed to indicate no requirements), null if the attempt failed.
-
attemptResolveForBuilding
@Nullable public @Nullable List<IToken<?>> attemptResolveForBuilding(@NotNull @NotNull IRequestManager manager, @NotNull @NotNull IRequest<? extends C> request, @NotNull @NotNull AbstractBuilding building) -
attemptResolveForBuildingAndStack
@Nullable protected @Nullable List<IToken<?>> attemptResolveForBuildingAndStack(@NotNull @NotNull IRequestManager manager, @NotNull @NotNull AbstractBuilding building, net.minecraft.world.item.ItemStack stack, int count, int minCount, IToken<?> recipeId) -
canBuildingCraftStack
protected boolean canBuildingCraftStack(@NotNull @NotNull IRequestManager manager, @NotNull @NotNull AbstractBuilding building, @NotNull @NotNull net.minecraft.world.item.ItemStack stack) -
createRequestsForRecipe
@Nullable protected @Nullable List<IToken<?>> createRequestsForRecipe(@NotNull @NotNull IRequestManager manager, @NotNull @NotNull AbstractBuilding building, int count, int minCount, @NotNull @NotNull IRecipeStorage storage) -
createNewRequestForStack
@Nullable protected @Nullable IToken<?> createNewRequestForStack(@NotNull @NotNull IRequestManager manager, net.minecraft.world.item.ItemStack stack, int count, int minCount, boolean matchMeta) -
resolveRequest
public void resolveRequest(@NotNull @NotNull IRequestManager manager, @NotNull @NotNull IRequest<? extends C> request) Description copied from interface:IRequestResolverMethod used to resolve a given request. Is called the moment all Child requests are resolved.The resolver should update the state through the given manager.
When this method is called all requirements need be fullfilled for this resolver. If this is not the case it will throw a RunTimeException
- Specified by:
resolveRequestin interfaceIRequestResolver<C extends AbstractCrafting>- Parameters:
manager- The manager that is resolving this request, under normal conditions this is the colony manager.request- The request to resolve.
-
onAssignedToThisResolverForBuilding
protected void onAssignedToThisResolverForBuilding(@NotNull @NotNull IRequestManager manager, @NotNull @NotNull IRequest<? extends C> request, boolean simulation, @NotNull @NotNull AbstractBuilding building) -
onRequestAssigned
public void onRequestAssigned(@NotNull @NotNull IRequestManager manager, @NotNull @NotNull IRequest<? extends C> request, boolean simulation) Called by the manager given to indicate that this request has been assigned to you.- Specified by:
onRequestAssignedin interfaceIRequestResolver<C extends AbstractCrafting>- Parameters:
manager- The systems manager.request- The request assigned.simulation- True when simulating.
-
resolveForBuilding
public void resolveForBuilding(@NotNull @NotNull IRequestManager manager, @NotNull @NotNull IRequest<? extends C> request, @NotNull @NotNull AbstractBuilding building) Resolve the request in a building.- Parameters:
manager- the request manager.request- the request.building- the building.
-
isValid
public boolean isValid()Description copied from interface:IRequestResolverIf this resolver has valid data in it.- Specified by:
isValidin interfaceIRequestResolver<C extends AbstractCrafting>- Returns:
- true if so.
-