Search in sources :

Example 6 with IToken

use of com.minecolonies.api.colony.requestsystem.token.IToken in project minecolonies by Minecolonies.

the class RequestHandler method processInternalCancellation.

/**
 * Method used to handle cancellation internally without notifying the requester that the request has been cancelled.
 *
 * @param manager The manager for which the cancellation is internally processed.
 * @param token   The token which is internally processed.
 */
@SuppressWarnings(UNCHECKED)
public static void processInternalCancellation(final IStandardRequestManager manager, final IToken<?> token) {
    @SuppressWarnings(RAWTYPES) final IRequest request = getRequest(manager, token);
    if (manager.getRequestResolverRequestAssignmentDataStore().getAssignmentForValue(token) == null) {
        return;
    }
    // Lets cancel all our children first, else this would make a big fat mess.
    if (request.hasChildren()) {
        final ImmutableCollection<IToken<?>> currentChildren = request.getChildren();
        currentChildren.forEach(t -> onRequestCancelled(manager, t));
    }
    // Now lets get ourselfs a clean up.
    final IRequestResolver<?> targetResolver = ResolverHandler.getResolverForRequest(manager, request);
    processParentReplacement(manager, request, targetResolver.onRequestCancelled(manager, request));
    manager.updateRequestState(token, RequestState.FINALIZING);
}
Also used : IToken(com.minecolonies.api.colony.requestsystem.token.IToken) IRequest(com.minecolonies.api.colony.requestsystem.request.IRequest)

Example 7 with IToken

use of com.minecolonies.api.colony.requestsystem.token.IToken in project minecolonies by Minecolonies.

the class BuildingBasedRequesterFactory method getNewInstance.

@NotNull
@Override
public BuildingBasedRequester getNewInstance(@NotNull final IFactoryController factoryController, @NotNull final AbstractBuilding building, @NotNull final Object... context) throws IllegalArgumentException {
    if (context.length != 0) {
        throw new IllegalArgumentException("To many context elements. Only 0 supported.");
    }
    final ILocation location = factoryController.getNewInstance(TypeConstants.ILOCATION, building.getLocation(), building.getColony().getWorld().provider.getDimension());
    final IToken token = factoryController.getNewInstance(TypeConstants.ITOKEN);
    return new BuildingBasedRequester(location, token);
}
Also used : BuildingBasedRequester(com.minecolonies.coremod.colony.requestsystem.requesters.BuildingBasedRequester) ILocation(com.minecolonies.api.colony.requestsystem.location.ILocation) IToken(com.minecolonies.api.colony.requestsystem.token.IToken) NotNull(org.jetbrains.annotations.NotNull)

Example 8 with IToken

use of com.minecolonies.api.colony.requestsystem.token.IToken in project minecolonies by Minecolonies.

the class StandardRequestFactories method deserializeFromNBT.

public static <T extends IRequestable, R extends IRequest<T>> R deserializeFromNBT(final IFactoryController controller, final NBTTagCompound compound, final INBTToObjectConverter<T> typeDeserialization, final IObjectConstructor<T, R> objectConstructor) {
    final IRequester requester = controller.deserialize(compound.getCompoundTag(NBT_REQUESTER));
    final IToken token = controller.deserialize(compound.getCompoundTag(NBT_TOKEN));
    final RequestState state = RequestState.deserializeNBT((NBTTagInt) compound.getTag(NBT_STATE));
    final T requested = typeDeserialization.apply(controller, compound.getCompoundTag(NBT_REQUESTED));
    final List<IToken> childTokens = new ArrayList<>();
    final NBTTagList childCompound = compound.getTagList(NBT_CHILDREN, Constants.NBT.TAG_COMPOUND);
    for (int i = 0; i < childCompound.tagCount(); i++) {
        childTokens.add(controller.deserialize(childCompound.getCompoundTagAt(i)));
    }
    @SuppressWarnings(Suppression.LEFT_CURLY_BRACE) final R request = objectConstructor.construct(requested, token, requester, state);
    request.addChildren(childTokens);
    if (compound.hasKey(NBT_PARENT)) {
        request.setParent(controller.deserialize(compound.getCompoundTag(NBT_PARENT)));
    }
    if (compound.hasKey(NBT_RESULT)) {
        request.setResult(typeDeserialization.apply(controller, compound.getCompoundTag(NBT_RESULT)));
    }
    return request;
}
Also used : NBTTagList(net.minecraft.nbt.NBTTagList) RequestState(com.minecolonies.api.colony.requestsystem.request.RequestState) IToken(com.minecolonies.api.colony.requestsystem.token.IToken) ArrayList(java.util.ArrayList) IRequester(com.minecolonies.api.colony.requestsystem.requester.IRequester)

Example 9 with IToken

use of com.minecolonies.api.colony.requestsystem.token.IToken in project minecolonies by Minecolonies.

the class StandardFactoryControllerTest method testGetNewInstance.

@Test
public void testGetNewInstance() {
    final UUID id = UUID.randomUUID();
    final IToken token = new StandardToken(id);
    final IToken output = StandardFactoryController.getInstance().getNewInstance(TypeConstants.ITOKEN, id);
    assertEquals(output, token);
}
Also used : StandardToken(com.minecolonies.api.colony.requestsystem.token.StandardToken) IToken(com.minecolonies.api.colony.requestsystem.token.IToken) UUID(java.util.UUID) Test(org.junit.Test)

Example 10 with IToken

use of com.minecolonies.api.colony.requestsystem.token.IToken in project minecolonies by Minecolonies.

the class StandardFactoryControllerTest method testDeserialize.

@Test
public void testDeserialize() {
    final StandardToken standardToken = new StandardToken(UUID.randomUUID());
    final IToken token = standardToken;
    final NBTTagCompound compound = StandardFactoryController.getInstance().serialize(token);
    final IToken deserialize = StandardFactoryController.getInstance().deserialize(compound);
    assertEquals(token, deserialize);
}
Also used : StandardToken(com.minecolonies.api.colony.requestsystem.token.StandardToken) IToken(com.minecolonies.api.colony.requestsystem.token.IToken) NBTTagCompound(net.minecraft.nbt.NBTTagCompound) Test(org.junit.Test)

Aggregations

IToken (com.minecolonies.api.colony.requestsystem.token.IToken)25 NotNull (org.jetbrains.annotations.NotNull)12 ILocation (com.minecolonies.api.colony.requestsystem.location.ILocation)7 NBTTagCompound (net.minecraft.nbt.NBTTagCompound)7 IRequest (com.minecolonies.api.colony.requestsystem.request.IRequest)6 TypeToken (com.google.common.reflect.TypeToken)5 Collectors (java.util.stream.Collectors)5 MineColonies (com.minecolonies.coremod.MineColonies)4 NBTTagList (net.minecraft.nbt.NBTTagList)4 ImmutableList (com.google.common.collect.ImmutableList)3 IRequestManager (com.minecolonies.api.colony.requestsystem.manager.IRequestManager)3 RequestState (com.minecolonies.api.colony.requestsystem.request.RequestState)3 IRequester (com.minecolonies.api.colony.requestsystem.requester.IRequester)3 StandardToken (com.minecolonies.api.colony.requestsystem.token.StandardToken)3 NBTUtils (com.minecolonies.api.util.NBTUtils)3 TypeConstants (com.minecolonies.api.util.constant.TypeConstants)3 CitizenData (com.minecolonies.coremod.colony.CitizenData)3 Colony (com.minecolonies.coremod.colony.Colony)3 java.util (java.util)3 Nullable (org.jetbrains.annotations.Nullable)3