Search in sources :

Example 61 with Colony

use of com.minecolonies.coremod.colony.Colony in project minecolonies by Minecolonies.

the class WarehouseRequestResolver method canResolve.

@Override
public boolean canResolve(@NotNull final IRequestManager manager, final IRequest<? extends IDeliverable> requestToCheck) {
    if (!manager.getColony().getWorld().isRemote) {
        final Colony colony = (Colony) manager.getColony();
        final Set<TileEntityWareHouse> wareHouses = getWareHousesInColony(colony);
        wareHouses.removeIf(Objects::isNull);
        try {
            return wareHouses.stream().anyMatch(wareHouse -> wareHouse.hasMatchinItemStackInWarehouse(itemStack -> requestToCheck.getRequest().matches(itemStack)));
        } catch (Exception e) {
            Log.getLogger().error(e);
        }
    }
    return false;
}
Also used : IRequest(com.minecolonies.api.colony.requestsystem.request.IRequest) ItemStackUtils(com.minecolonies.api.util.ItemStackUtils) IToken(com.minecolonies.api.colony.requestsystem.token.IToken) TypeToken(com.google.common.reflect.TypeToken) Log(com.minecolonies.blockout.Log) TextComponentTranslation(net.minecraft.util.text.TextComponentTranslation) IRequestManager(com.minecolonies.api.colony.requestsystem.manager.IRequestManager) ITextComponent(net.minecraft.util.text.ITextComponent) ItemStack(net.minecraft.item.ItemStack) Lists(com.google.common.collect.Lists) ImmutableList(com.google.common.collect.ImmutableList) BuildingWareHouse(com.minecolonies.coremod.colony.buildings.BuildingWareHouse) Delivery(com.minecolonies.api.colony.requestsystem.requestable.Delivery) TileEntityWareHouse(com.minecolonies.coremod.tileentities.TileEntityWareHouse) TranslationConstants(com.minecolonies.api.util.constant.TranslationConstants) IDeliverable(com.minecolonies.api.colony.requestsystem.requestable.IDeliverable) Colony(com.minecolonies.coremod.colony.Colony) ILocation(com.minecolonies.api.colony.requestsystem.location.ILocation) RequestState(com.minecolonies.api.colony.requestsystem.request.RequestState) Set(java.util.Set) BlockPos(net.minecraft.util.math.BlockPos) CONST_WAREHOUSE_RESOLVER_PRIORITY(com.minecolonies.api.util.RSConstants.CONST_WAREHOUSE_RESOLVER_PRIORITY) Collectors(java.util.stream.Collectors) Objects(java.util.Objects) Nullable(org.jetbrains.annotations.Nullable) List(java.util.List) TypeConstants(com.minecolonies.api.util.constant.TypeConstants) NotNull(org.jetbrains.annotations.NotNull) AbstractRequestResolver(com.minecolonies.coremod.colony.requestsystem.resolvers.core.AbstractRequestResolver) TileEntityWareHouse(com.minecolonies.coremod.tileentities.TileEntityWareHouse) Objects(java.util.Objects) Colony(com.minecolonies.coremod.colony.Colony)

Example 62 with Colony

use of com.minecolonies.coremod.colony.Colony in project minecolonies by Minecolonies.

the class WarehouseRequestResolver method attemptResolve.

@Nullable
@Override
@SuppressWarnings("squid:LeftCurlyBraceStartLineCheck")
public /**
 * Moving the curly braces really makes the code hard to read.
 */
List<IToken<?>> attemptResolve(@NotNull final IRequestManager manager, @NotNull final IRequest<? extends IDeliverable> request) {
    if (manager.getColony().getWorld().isRemote) {
        return null;
    }
    final Colony colony = (Colony) manager.getColony();
    final Set<TileEntityWareHouse> wareHouses = getWareHousesInColony(colony);
    for (final TileEntityWareHouse wareHouse : wareHouses) {
        ItemStack matchingStack = wareHouse.getFirstMatchingItemStackInWarehouse(itemStack -> request.getRequest().matches(itemStack));
        if (ItemStackUtils.isEmpty(matchingStack)) {
            continue;
        }
        matchingStack = matchingStack.copy();
        matchingStack.setCount(Math.min(request.getRequest().getCount(), matchingStack.getCount()));
        final ItemStack deliveryStack = matchingStack.copy();
        request.setDelivery(deliveryStack.copy());
        final BlockPos itemStackPos = wareHouse.getPositionOfChestWithItemStack(itemStack -> ItemStack.areItemsEqual(itemStack, deliveryStack));
        final ILocation itemStackLocation = manager.getFactoryController().getNewInstance(TypeConstants.ILOCATION, itemStackPos, wareHouse.getWorld().provider.getDimension());
        final Delivery delivery = new Delivery(itemStackLocation, request.getRequester().getRequesterLocation(), deliveryStack.copy());
        final IToken<?> requestToken = manager.createRequest(new WarehouseRequestResolver(request.getRequester().getRequesterLocation(), request.getToken()), delivery);
        return ImmutableList.of(requestToken);
    }
    return Lists.newArrayList();
}
Also used : ILocation(com.minecolonies.api.colony.requestsystem.location.ILocation) TileEntityWareHouse(com.minecolonies.coremod.tileentities.TileEntityWareHouse) Colony(com.minecolonies.coremod.colony.Colony) BlockPos(net.minecraft.util.math.BlockPos) Delivery(com.minecolonies.api.colony.requestsystem.requestable.Delivery) ItemStack(net.minecraft.item.ItemStack) Nullable(org.jetbrains.annotations.Nullable)

Example 63 with Colony

use of com.minecolonies.coremod.colony.Colony in project minecolonies by Minecolonies.

the class DeleteColonyCommand method execute.

@Override
public void execute(@NotNull final MinecraftServer server, @NotNull final ICommandSender sender, @NotNull final String... args) throws CommandException {
    final int colonyId;
    boolean canDestroy = true;
    boolean confirmDelete = false;
    if (args.length == 0) {
        IColony colony = null;
        if (sender instanceof EntityPlayer) {
            colony = ColonyManager.getIColonyByOwner(CompatibilityUtils.getWorld((EntityPlayer) sender), (EntityPlayer) sender);
        }
        if (colony == null) {
            sender.sendMessage(new TextComponentString(NO_COLONY_MESSAGE));
            return;
        }
        colonyId = colony.getID();
    } else {
        colonyId = getIthArgument(args, 0, -1);
        if (args.length > 1) {
            canDestroy = Boolean.parseBoolean(args[1]);
        }
        if (args.length > 2) {
            confirmDelete = Boolean.parseBoolean(args[2]);
        }
    }
    final Colony colony = ColonyManager.getColony(colonyId);
    if (colony == null) {
        final String noColonyFoundMessage = String.format(COLONY_X_NULL, colonyId);
        sender.sendMessage(new TextComponentString(noColonyFoundMessage));
        return;
    }
    executeShared(server, sender, colony, canDestroy, confirmDelete);
}
Also used : IColony(com.minecolonies.api.colony.IColony) EntityPlayer(net.minecraft.entity.player.EntityPlayer) Colony(com.minecolonies.coremod.colony.Colony) IColony(com.minecolonies.api.colony.IColony) TextComponentString(net.minecraft.util.text.TextComponentString) TextComponentString(net.minecraft.util.text.TextComponentString)

Example 64 with Colony

use of com.minecolonies.coremod.colony.Colony in project minecolonies by Minecolonies.

the class DeleteColonyCommand method execute.

@Override
public void execute(@NotNull final MinecraftServer server, @NotNull final ICommandSender sender, @NotNull final ActionMenu actionMenu) throws CommandException {
    final Colony colony = actionMenu.getColonyForArgument("colony");
    final boolean canDestroy = actionMenu.getBooleanValueForArgument("canDestroy", false);
    final boolean confirmDelete = actionMenu.getBooleanValueForArgument("confirmDelete", false);
    if (colony == null) {
        final String noColonyFoundMessage = String.format(NO_COLONY_MESSAGE);
        sender.sendMessage(new TextComponentString(noColonyFoundMessage));
        return;
    }
    executeShared(server, sender, colony, canDestroy, confirmDelete);
}
Also used : Colony(com.minecolonies.coremod.colony.Colony) IColony(com.minecolonies.api.colony.IColony) TextComponentString(net.minecraft.util.text.TextComponentString) TextComponentString(net.minecraft.util.text.TextComponentString)

Example 65 with Colony

use of com.minecolonies.coremod.colony.Colony in project minecolonies by Minecolonies.

the class DisableBarbarianSpawnsCommand method execute.

@Override
public void execute(@NotNull final MinecraftServer server, @NotNull final ICommandSender sender, @NotNull final String... args) throws CommandException {
    if (args.length == 0) {
        sender.sendMessage(new TextComponentString(NO_ARGUMENTS));
    }
    final int colonyId;
    colonyId = getIthArgument(args, 0, -1);
    final Colony colony = ColonyManager.getColony(colonyId);
    if (colony == null) {
        final String noColonyFoundMessage = String.format(NO_COLONY_WITH_ID_FOUND_MESSAGE, colonyId);
        sender.sendMessage(new TextComponentString(noColonyFoundMessage));
        return;
    }
    final boolean canHaveBarbEvents = Boolean.parseBoolean(args[1]);
    executeShared(server, sender, colony, canHaveBarbEvents);
}
Also used : Colony(com.minecolonies.coremod.colony.Colony) TextComponentString(net.minecraft.util.text.TextComponentString) TextComponentString(net.minecraft.util.text.TextComponentString)

Aggregations

Colony (com.minecolonies.coremod.colony.Colony)81 TextComponentString (net.minecraft.util.text.TextComponentString)29 IColony (com.minecolonies.api.colony.IColony)21 EntityPlayer (net.minecraft.entity.player.EntityPlayer)20 BlockPos (net.minecraft.util.math.BlockPos)19 Nullable (org.jetbrains.annotations.Nullable)16 CitizenData (com.minecolonies.coremod.colony.CitizenData)13 AbstractBuilding (com.minecolonies.coremod.colony.buildings.AbstractBuilding)13 NotNull (org.jetbrains.annotations.NotNull)11 ItemStack (net.minecraft.item.ItemStack)9 Entity (net.minecraft.entity.Entity)8 TileEntity (net.minecraft.tileentity.TileEntity)8 World (net.minecraft.world.World)6 List (java.util.List)5 UUID (java.util.UUID)5 EntityPlayerMP (net.minecraft.entity.player.EntityPlayerMP)5 ILocation (com.minecolonies.api.colony.requestsystem.location.ILocation)4 Delivery (com.minecolonies.api.colony.requestsystem.requestable.Delivery)4 IToken (com.minecolonies.api.colony.requestsystem.token.IToken)4 AbstractBlockHut (com.minecolonies.coremod.blocks.AbstractBlockHut)4