Search in sources :

Example 1 with PosBasedInteraction

use of com.minecolonies.coremod.colony.interactionhandling.PosBasedInteraction in project minecolonies by Minecolonies.

the class AbstractEntityAIBasic method requestTool.

/**
 * Request the appropriate tool for this block.
 *
 * @param target the blockstate to mine
 * @param pos    the pos to mine
 */
private void requestTool(@NotNull final BlockState target, final BlockPos pos) {
    final IToolType toolType = WorkerUtil.getBestToolForBlock(target, target.getDestroySpeed(world, pos));
    final int required = WorkerUtil.getCorrectHarvestLevelForBlock(target);
    if (getOwnBuilding().getMaxToolLevel() < required && worker.getCitizenData() != null) {
        worker.getCitizenData().triggerInteraction(new PosBasedInteraction(new TranslationTextComponent(BUILDING_LEVEL_TOO_LOW, new ItemStack(target.getBlock()).getHoverName(), pos.getX(), pos.getY(), pos.getZ()), ChatPriority.IMPORTANT, new TranslationTextComponent(BUILDING_LEVEL_TOO_LOW), pos));
    }
    updateToolFlag(toolType, required);
}
Also used : IToolType(com.minecolonies.api.util.constant.IToolType) TranslationTextComponent(net.minecraft.util.text.TranslationTextComponent) PosBasedInteraction(com.minecolonies.coremod.colony.interactionhandling.PosBasedInteraction) ItemStack(net.minecraft.item.ItemStack)

Example 2 with PosBasedInteraction

use of com.minecolonies.coremod.colony.interactionhandling.PosBasedInteraction in project minecolonies by ldtteam.

the class EntityAIWorkDeliveryman method deliver.

/**
 * Deliver the items to the hut. TODO: Current precondition: The dman's inventory may only consist of the requested itemstack.
 *
 * @return the next state.
 */
private IAIState deliver() {
    final IRequest<? extends IDeliverymanRequestable> currentTask = job.getCurrentTask();
    if (!(currentTask instanceof DeliveryRequest)) {
        // Since prepareDelivery() was called earlier, go dumping first and then restart.
        return DUMPING;
    }
    worker.getCitizenData().setVisibleStatus(DELIVERING);
    worker.getCitizenStatusHandler().setLatestStatus(new TranslationTextComponent("com.minecolonies.coremod.status.delivering"));
    final ILocation targetBuildingLocation = ((Delivery) currentTask.getRequest()).getTarget();
    if (!targetBuildingLocation.isReachableFromLocation(worker.getLocation())) {
        Log.getLogger().info(worker.getCitizenColonyHandler().getColony().getName() + ": " + worker.getName() + ": Can't inter dimension yet: ");
        return START_WORKING;
    }
    if (!worker.isWorkerAtSiteWithMove(targetBuildingLocation.getInDimensionLocation(), MIN_DISTANCE_TO_WAREHOUSE)) {
        setDelay(WALK_DELAY);
        return DELIVERY;
    }
    final TileEntity tileEntity = world.getBlockEntity(targetBuildingLocation.getInDimensionLocation());
    if (!(tileEntity instanceof TileEntityColonyBuilding)) {
        // TODO: Non-Colony deliveries are unsupported yet. Fix that at some point in time.
        job.finishRequest(true);
        return START_WORKING;
    }
    final IBuilding targetBuilding = ((AbstractTileEntityColonyBuilding) tileEntity).getBuilding();
    boolean success = true;
    boolean extracted = false;
    final IItemHandler workerInventory = worker.getInventoryCitizen();
    for (int i = 0; i < workerInventory.getSlots(); i++) {
        if (workerInventory.getStackInSlot(i).isEmpty()) {
            continue;
        }
        final ItemStack stack = workerInventory.extractItem(i, Integer.MAX_VALUE, false);
        if (ItemStackUtils.isEmpty(stack)) {
            continue;
        }
        extracted = true;
        final ItemStack insertionResultStack;
        // TODO: Please only push items into the target that were actually requested.
        if (targetBuilding instanceof AbstractBuilding) {
            insertionResultStack = InventoryUtils.forceItemStackToItemHandler(targetBuilding.getCapability(ITEM_HANDLER_CAPABILITY, null).orElseGet(null), stack, ((IBuilding) targetBuilding)::isItemStackInRequest);
        } else {
            // Buildings that are not inherently part of the request system, but just receive a delivery, cannot have their items replaced.
            // Therefore, the keep-predicate always returns true.
            insertionResultStack = InventoryUtils.forceItemStackToItemHandler(targetBuilding.getCapability(ITEM_HANDLER_CAPABILITY, null).orElseGet(null), stack, itemStack -> true);
        }
        if (!ItemStackUtils.isEmpty(insertionResultStack)) {
            if (ItemStack.matches(insertionResultStack, stack) && worker.getCitizenData() != null) {
                // The replaced stack is the same as the one we tried to put into the inventory.
                // Meaning, replacing failed.
                success = false;
                if (targetBuilding.hasModule(WorkerBuildingModule.class)) {
                    worker.getCitizenData().triggerInteraction(new PosBasedInteraction(new TranslationTextComponent(COM_MINECOLONIES_COREMOD_JOB_DELIVERYMAN_NAMEDCHESTFULL, targetBuilding.getFirstModuleOccurance(WorkerBuildingModule.class).getFirstCitizen().getName()), ChatPriority.IMPORTANT, new TranslationTextComponent(COM_MINECOLONIES_COREMOD_JOB_DELIVERYMAN_CHESTFULL), targetBuilding.getID()));
                } else {
                    worker.getCitizenData().triggerInteraction(new PosBasedInteraction(new TranslationTextComponent(COM_MINECOLONIES_COREMOD_JOB_DELIVERYMAN_CHESTFULL, new StringTextComponent(" :" + targetBuilding.getSchematicName())), ChatPriority.IMPORTANT, new TranslationTextComponent(COM_MINECOLONIES_COREMOD_JOB_DELIVERYMAN_CHESTFULL), targetBuildingLocation.getInDimensionLocation()));
                }
            }
            // Insert the result back into the inventory so we do not lose it.
            workerInventory.insertItem(i, insertionResultStack, false);
        }
    }
    if (!extracted) {
        // This can only happen if the dman's inventory was completely empty.
        // Let the retry-system handle this case.
        worker.decreaseSaturationForContinuousAction();
        worker.getCitizenItemHandler().setHeldItem(Hand.MAIN_HAND, SLOT_HAND);
        job.finishRequest(false);
        // No need to go dumping in this case.
        return START_WORKING;
    }
    worker.getCitizenExperienceHandler().addExperience(1.5D);
    worker.decreaseSaturationForContinuousAction();
    worker.getCitizenItemHandler().setHeldItem(Hand.MAIN_HAND, SLOT_HAND);
    job.finishRequest(true);
    return success ? START_WORKING : DUMPING;
}
Also used : TileEntityRack(com.minecolonies.api.tileentities.TileEntityRack) IItemHandler(net.minecraftforge.items.IItemHandler) IRequest(com.minecolonies.api.colony.requestsystem.request.IRequest) ItemStackUtils(com.minecolonies.api.util.ItemStackUtils) AbstractTileEntityColonyBuilding(com.minecolonies.api.tileentities.AbstractTileEntityColonyBuilding) DeliveryRequest(com.minecolonies.coremod.colony.requestsystem.requests.StandardRequests.DeliveryRequest) IWareHouse(com.minecolonies.api.colony.buildings.workerbuildings.IWareHouse) PickupRequest(com.minecolonies.coremod.colony.requestsystem.requests.StandardRequests.PickupRequest) TileEntityColonyBuilding(com.minecolonies.api.tileentities.TileEntityColonyBuilding) PosBasedInteraction(com.minecolonies.coremod.colony.interactionhandling.PosBasedInteraction) TranslationTextComponent(net.minecraft.util.text.TranslationTextComponent) ArrayList(java.util.ArrayList) JobDeliveryman(com.minecolonies.coremod.colony.jobs.JobDeliveryman) ItemStack(net.minecraft.item.ItemStack) IDeliverymanRequestable(com.minecolonies.api.colony.requestsystem.requestable.deliveryman.IDeliverymanRequestable) IAIState(com.minecolonies.api.entity.ai.statemachine.states.IAIState) StringTextComponent(net.minecraft.util.text.StringTextComponent) Hand(net.minecraft.util.Hand) ITEM_HANDLER_CAPABILITY(net.minecraftforge.items.CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) Delivery(com.minecolonies.api.colony.requestsystem.requestable.deliveryman.Delivery) AITarget(com.minecolonies.api.entity.ai.statemachine.AITarget) Log(com.minecolonies.api.util.Log) TICKS_SECOND(com.minecolonies.api.util.constant.Constants.TICKS_SECOND) Constants(com.minecolonies.api.util.constant.Constants) AbstractEntityAIInteract(com.minecolonies.coremod.entity.ai.basic.AbstractEntityAIInteract) TranslationConstants(com.minecolonies.api.util.constant.TranslationConstants) ILocation(com.minecolonies.api.colony.requestsystem.location.ILocation) VisibleCitizenStatus(com.minecolonies.api.entity.citizen.VisibleCitizenStatus) ChatPriority(com.minecolonies.api.colony.interactionhandling.ChatPriority) AbstractBuilding(com.minecolonies.coremod.colony.buildings.AbstractBuilding) StandardInteraction(com.minecolonies.coremod.colony.interactionhandling.StandardInteraction) BlockPos(net.minecraft.util.math.BlockPos) IRequestable(com.minecolonies.api.colony.requestsystem.requestable.IRequestable) AIWorkerState(com.minecolonies.api.entity.ai.statemachine.states.AIWorkerState) Nullable(org.jetbrains.annotations.Nullable) List(java.util.List) WorkerBuildingModule(com.minecolonies.coremod.colony.buildings.modules.WorkerBuildingModule) BuildingDeliveryman(com.minecolonies.coremod.colony.buildings.workerbuildings.BuildingDeliveryman) IBuilding(com.minecolonies.api.colony.buildings.IBuilding) InventoryUtils(com.minecolonies.api.util.InventoryUtils) ResourceLocation(net.minecraft.util.ResourceLocation) TileEntity(net.minecraft.tileentity.TileEntity) ItemStorage(com.minecolonies.api.crafting.ItemStorage) NotNull(org.jetbrains.annotations.NotNull) DeliveryRequest(com.minecolonies.coremod.colony.requestsystem.requests.StandardRequests.DeliveryRequest) IItemHandler(net.minecraftforge.items.IItemHandler) IBuilding(com.minecolonies.api.colony.buildings.IBuilding) AbstractTileEntityColonyBuilding(com.minecolonies.api.tileentities.AbstractTileEntityColonyBuilding) TileEntityColonyBuilding(com.minecolonies.api.tileentities.TileEntityColonyBuilding) WorkerBuildingModule(com.minecolonies.coremod.colony.buildings.modules.WorkerBuildingModule) PosBasedInteraction(com.minecolonies.coremod.colony.interactionhandling.PosBasedInteraction) TileEntity(net.minecraft.tileentity.TileEntity) ILocation(com.minecolonies.api.colony.requestsystem.location.ILocation) AbstractTileEntityColonyBuilding(com.minecolonies.api.tileentities.AbstractTileEntityColonyBuilding) TranslationTextComponent(net.minecraft.util.text.TranslationTextComponent) StringTextComponent(net.minecraft.util.text.StringTextComponent) Delivery(com.minecolonies.api.colony.requestsystem.requestable.deliveryman.Delivery) ItemStack(net.minecraft.item.ItemStack) AbstractBuilding(com.minecolonies.coremod.colony.buildings.AbstractBuilding)

Example 3 with PosBasedInteraction

use of com.minecolonies.coremod.colony.interactionhandling.PosBasedInteraction in project minecolonies by ldtteam.

the class EntityAIWorkFarmer method canGoPlanting.

/**
 * Checks if the farmer is ready to plant.
 *
 * @param currentField   the field to plant.
 * @param buildingFarmer the farmer building.
 * @return true if he is ready.
 */
private IAIState canGoPlanting(@NotNull final ScarecrowTileEntity currentField, @NotNull final BuildingFarmer buildingFarmer) {
    if (currentField.getSeed() == null || currentField.getSeed().isEmpty()) {
        worker.getCitizenData().triggerInteraction(new PosBasedInteraction(new TranslationTextComponent(NO_SEED_SET, currentField.getBlockPos()), ChatPriority.BLOCKING, new TranslationTextComponent(NO_SEED_SET), currentField.getBlockPos()));
        final FarmerFieldModule module = buildingFarmer.getFirstModuleOccurance(FarmerFieldModule.class);
        module.setCurrentField(null);
        worker.getCitizenData().setIdleAtJob(true);
        return PREPARING;
    }
    worker.getCitizenData().setIdleAtJob(false);
    final ItemStack seeds = currentField.getSeed().copy();
    final int slot = worker.getCitizenInventoryHandler().findFirstSlotInInventoryWith(seeds.getItem());
    if (slot != -1) {
        return FARMER_PLANT;
    }
    if (walkToBuilding()) {
        return PREPARING;
    }
    seeds.setCount(seeds.getMaxStackSize());
    checkIfRequestForItemExistOrCreateAsynch(seeds, seeds.getMaxStackSize(), 1);
    currentField.nextState();
    return PREPARING;
}
Also used : TranslationTextComponent(net.minecraft.util.text.TranslationTextComponent) PosBasedInteraction(com.minecolonies.coremod.colony.interactionhandling.PosBasedInteraction) FarmerFieldModule(com.minecolonies.coremod.colony.buildings.modules.FarmerFieldModule) ItemStack(net.minecraft.item.ItemStack)

Example 4 with PosBasedInteraction

use of com.minecolonies.coremod.colony.interactionhandling.PosBasedInteraction in project minecolonies by Minecolonies.

the class EntityAIWorkFarmer method canGoPlanting.

/**
 * Checks if the farmer is ready to plant.
 *
 * @param currentField   the field to plant.
 * @param buildingFarmer the farmer building.
 * @return true if he is ready.
 */
private IAIState canGoPlanting(@NotNull final ScarecrowTileEntity currentField, @NotNull final BuildingFarmer buildingFarmer) {
    if (currentField.getSeed() == null || currentField.getSeed().isEmpty()) {
        worker.getCitizenData().triggerInteraction(new PosBasedInteraction(new TranslationTextComponent(NO_SEED_SET, currentField.getBlockPos()), ChatPriority.BLOCKING, new TranslationTextComponent(NO_SEED_SET), currentField.getBlockPos()));
        final FarmerFieldModule module = buildingFarmer.getFirstModuleOccurance(FarmerFieldModule.class);
        module.setCurrentField(null);
        worker.getCitizenData().setIdleAtJob(true);
        return PREPARING;
    }
    worker.getCitizenData().setIdleAtJob(false);
    final ItemStack seeds = currentField.getSeed().copy();
    final int slot = worker.getCitizenInventoryHandler().findFirstSlotInInventoryWith(seeds.getItem());
    if (slot != -1) {
        return FARMER_PLANT;
    }
    if (walkToBuilding()) {
        return PREPARING;
    }
    seeds.setCount(seeds.getMaxStackSize());
    checkIfRequestForItemExistOrCreateAsynch(seeds, seeds.getMaxStackSize(), 1);
    currentField.nextState();
    return PREPARING;
}
Also used : TranslationTextComponent(net.minecraft.util.text.TranslationTextComponent) PosBasedInteraction(com.minecolonies.coremod.colony.interactionhandling.PosBasedInteraction) FarmerFieldModule(com.minecolonies.coremod.colony.buildings.modules.FarmerFieldModule) ItemStack(net.minecraft.item.ItemStack)

Example 5 with PosBasedInteraction

use of com.minecolonies.coremod.colony.interactionhandling.PosBasedInteraction in project minecolonies by Minecolonies.

the class EntityAIWorkDeliveryman method deliver.

/**
 * Deliver the items to the hut. TODO: Current precondition: The dman's inventory may only consist of the requested itemstack.
 *
 * @return the next state.
 */
private IAIState deliver() {
    final IRequest<? extends IDeliverymanRequestable> currentTask = job.getCurrentTask();
    if (!(currentTask instanceof DeliveryRequest)) {
        // Since prepareDelivery() was called earlier, go dumping first and then restart.
        return DUMPING;
    }
    worker.getCitizenData().setVisibleStatus(DELIVERING);
    worker.getCitizenStatusHandler().setLatestStatus(new TranslationTextComponent("com.minecolonies.coremod.status.delivering"));
    final ILocation targetBuildingLocation = ((Delivery) currentTask.getRequest()).getTarget();
    if (!targetBuildingLocation.isReachableFromLocation(worker.getLocation())) {
        Log.getLogger().info(worker.getCitizenColonyHandler().getColony().getName() + ": " + worker.getName() + ": Can't inter dimension yet: ");
        return START_WORKING;
    }
    if (!worker.isWorkerAtSiteWithMove(targetBuildingLocation.getInDimensionLocation(), MIN_DISTANCE_TO_WAREHOUSE)) {
        setDelay(WALK_DELAY);
        return DELIVERY;
    }
    final TileEntity tileEntity = world.getBlockEntity(targetBuildingLocation.getInDimensionLocation());
    if (!(tileEntity instanceof TileEntityColonyBuilding)) {
        // TODO: Non-Colony deliveries are unsupported yet. Fix that at some point in time.
        job.finishRequest(true);
        return START_WORKING;
    }
    final IBuilding targetBuilding = ((AbstractTileEntityColonyBuilding) tileEntity).getBuilding();
    boolean success = true;
    boolean extracted = false;
    final IItemHandler workerInventory = worker.getInventoryCitizen();
    for (int i = 0; i < workerInventory.getSlots(); i++) {
        if (workerInventory.getStackInSlot(i).isEmpty()) {
            continue;
        }
        final ItemStack stack = workerInventory.extractItem(i, Integer.MAX_VALUE, false);
        if (ItemStackUtils.isEmpty(stack)) {
            continue;
        }
        extracted = true;
        final ItemStack insertionResultStack;
        // TODO: Please only push items into the target that were actually requested.
        if (targetBuilding instanceof AbstractBuilding) {
            insertionResultStack = InventoryUtils.forceItemStackToItemHandler(targetBuilding.getCapability(ITEM_HANDLER_CAPABILITY, null).orElseGet(null), stack, ((IBuilding) targetBuilding)::isItemStackInRequest);
        } else {
            // Buildings that are not inherently part of the request system, but just receive a delivery, cannot have their items replaced.
            // Therefore, the keep-predicate always returns true.
            insertionResultStack = InventoryUtils.forceItemStackToItemHandler(targetBuilding.getCapability(ITEM_HANDLER_CAPABILITY, null).orElseGet(null), stack, itemStack -> true);
        }
        if (!ItemStackUtils.isEmpty(insertionResultStack)) {
            if (ItemStack.matches(insertionResultStack, stack) && worker.getCitizenData() != null) {
                // The replaced stack is the same as the one we tried to put into the inventory.
                // Meaning, replacing failed.
                success = false;
                if (targetBuilding.hasModule(WorkerBuildingModule.class)) {
                    worker.getCitizenData().triggerInteraction(new PosBasedInteraction(new TranslationTextComponent(COM_MINECOLONIES_COREMOD_JOB_DELIVERYMAN_NAMEDCHESTFULL, targetBuilding.getFirstModuleOccurance(WorkerBuildingModule.class).getFirstCitizen().getName()), ChatPriority.IMPORTANT, new TranslationTextComponent(COM_MINECOLONIES_COREMOD_JOB_DELIVERYMAN_CHESTFULL), targetBuilding.getID()));
                } else {
                    worker.getCitizenData().triggerInteraction(new PosBasedInteraction(new TranslationTextComponent(COM_MINECOLONIES_COREMOD_JOB_DELIVERYMAN_CHESTFULL, new StringTextComponent(" :" + targetBuilding.getSchematicName())), ChatPriority.IMPORTANT, new TranslationTextComponent(COM_MINECOLONIES_COREMOD_JOB_DELIVERYMAN_CHESTFULL), targetBuildingLocation.getInDimensionLocation()));
                }
            }
            // Insert the result back into the inventory so we do not lose it.
            workerInventory.insertItem(i, insertionResultStack, false);
        }
    }
    if (!extracted) {
        // This can only happen if the dman's inventory was completely empty.
        // Let the retry-system handle this case.
        worker.decreaseSaturationForContinuousAction();
        worker.getCitizenItemHandler().setHeldItem(Hand.MAIN_HAND, SLOT_HAND);
        job.finishRequest(false);
        // No need to go dumping in this case.
        return START_WORKING;
    }
    worker.getCitizenExperienceHandler().addExperience(1.5D);
    worker.decreaseSaturationForContinuousAction();
    worker.getCitizenItemHandler().setHeldItem(Hand.MAIN_HAND, SLOT_HAND);
    job.finishRequest(true);
    return success ? START_WORKING : DUMPING;
}
Also used : TileEntityRack(com.minecolonies.api.tileentities.TileEntityRack) IItemHandler(net.minecraftforge.items.IItemHandler) IRequest(com.minecolonies.api.colony.requestsystem.request.IRequest) ItemStackUtils(com.minecolonies.api.util.ItemStackUtils) AbstractTileEntityColonyBuilding(com.minecolonies.api.tileentities.AbstractTileEntityColonyBuilding) DeliveryRequest(com.minecolonies.coremod.colony.requestsystem.requests.StandardRequests.DeliveryRequest) IWareHouse(com.minecolonies.api.colony.buildings.workerbuildings.IWareHouse) PickupRequest(com.minecolonies.coremod.colony.requestsystem.requests.StandardRequests.PickupRequest) TileEntityColonyBuilding(com.minecolonies.api.tileentities.TileEntityColonyBuilding) PosBasedInteraction(com.minecolonies.coremod.colony.interactionhandling.PosBasedInteraction) TranslationTextComponent(net.minecraft.util.text.TranslationTextComponent) ArrayList(java.util.ArrayList) JobDeliveryman(com.minecolonies.coremod.colony.jobs.JobDeliveryman) ItemStack(net.minecraft.item.ItemStack) IDeliverymanRequestable(com.minecolonies.api.colony.requestsystem.requestable.deliveryman.IDeliverymanRequestable) IAIState(com.minecolonies.api.entity.ai.statemachine.states.IAIState) StringTextComponent(net.minecraft.util.text.StringTextComponent) Hand(net.minecraft.util.Hand) ITEM_HANDLER_CAPABILITY(net.minecraftforge.items.CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) Delivery(com.minecolonies.api.colony.requestsystem.requestable.deliveryman.Delivery) AITarget(com.minecolonies.api.entity.ai.statemachine.AITarget) Log(com.minecolonies.api.util.Log) TICKS_SECOND(com.minecolonies.api.util.constant.Constants.TICKS_SECOND) Constants(com.minecolonies.api.util.constant.Constants) AbstractEntityAIInteract(com.minecolonies.coremod.entity.ai.basic.AbstractEntityAIInteract) TranslationConstants(com.minecolonies.api.util.constant.TranslationConstants) ILocation(com.minecolonies.api.colony.requestsystem.location.ILocation) VisibleCitizenStatus(com.minecolonies.api.entity.citizen.VisibleCitizenStatus) ChatPriority(com.minecolonies.api.colony.interactionhandling.ChatPriority) AbstractBuilding(com.minecolonies.coremod.colony.buildings.AbstractBuilding) StandardInteraction(com.minecolonies.coremod.colony.interactionhandling.StandardInteraction) BlockPos(net.minecraft.util.math.BlockPos) IRequestable(com.minecolonies.api.colony.requestsystem.requestable.IRequestable) AIWorkerState(com.minecolonies.api.entity.ai.statemachine.states.AIWorkerState) Nullable(org.jetbrains.annotations.Nullable) List(java.util.List) WorkerBuildingModule(com.minecolonies.coremod.colony.buildings.modules.WorkerBuildingModule) BuildingDeliveryman(com.minecolonies.coremod.colony.buildings.workerbuildings.BuildingDeliveryman) IBuilding(com.minecolonies.api.colony.buildings.IBuilding) InventoryUtils(com.minecolonies.api.util.InventoryUtils) ResourceLocation(net.minecraft.util.ResourceLocation) TileEntity(net.minecraft.tileentity.TileEntity) ItemStorage(com.minecolonies.api.crafting.ItemStorage) NotNull(org.jetbrains.annotations.NotNull) DeliveryRequest(com.minecolonies.coremod.colony.requestsystem.requests.StandardRequests.DeliveryRequest) IItemHandler(net.minecraftforge.items.IItemHandler) IBuilding(com.minecolonies.api.colony.buildings.IBuilding) AbstractTileEntityColonyBuilding(com.minecolonies.api.tileentities.AbstractTileEntityColonyBuilding) TileEntityColonyBuilding(com.minecolonies.api.tileentities.TileEntityColonyBuilding) WorkerBuildingModule(com.minecolonies.coremod.colony.buildings.modules.WorkerBuildingModule) PosBasedInteraction(com.minecolonies.coremod.colony.interactionhandling.PosBasedInteraction) TileEntity(net.minecraft.tileentity.TileEntity) ILocation(com.minecolonies.api.colony.requestsystem.location.ILocation) AbstractTileEntityColonyBuilding(com.minecolonies.api.tileentities.AbstractTileEntityColonyBuilding) TranslationTextComponent(net.minecraft.util.text.TranslationTextComponent) StringTextComponent(net.minecraft.util.text.StringTextComponent) Delivery(com.minecolonies.api.colony.requestsystem.requestable.deliveryman.Delivery) ItemStack(net.minecraft.item.ItemStack) AbstractBuilding(com.minecolonies.coremod.colony.buildings.AbstractBuilding)

Aggregations

PosBasedInteraction (com.minecolonies.coremod.colony.interactionhandling.PosBasedInteraction)6 ItemStack (net.minecraft.item.ItemStack)6 TranslationTextComponent (net.minecraft.util.text.TranslationTextComponent)6 IBuilding (com.minecolonies.api.colony.buildings.IBuilding)2 IWareHouse (com.minecolonies.api.colony.buildings.workerbuildings.IWareHouse)2 ChatPriority (com.minecolonies.api.colony.interactionhandling.ChatPriority)2 ILocation (com.minecolonies.api.colony.requestsystem.location.ILocation)2 IRequest (com.minecolonies.api.colony.requestsystem.request.IRequest)2 IRequestable (com.minecolonies.api.colony.requestsystem.requestable.IRequestable)2 Delivery (com.minecolonies.api.colony.requestsystem.requestable.deliveryman.Delivery)2 IDeliverymanRequestable (com.minecolonies.api.colony.requestsystem.requestable.deliveryman.IDeliverymanRequestable)2 ItemStorage (com.minecolonies.api.crafting.ItemStorage)2 AITarget (com.minecolonies.api.entity.ai.statemachine.AITarget)2 AIWorkerState (com.minecolonies.api.entity.ai.statemachine.states.AIWorkerState)2 IAIState (com.minecolonies.api.entity.ai.statemachine.states.IAIState)2 VisibleCitizenStatus (com.minecolonies.api.entity.citizen.VisibleCitizenStatus)2 AbstractTileEntityColonyBuilding (com.minecolonies.api.tileentities.AbstractTileEntityColonyBuilding)2 TileEntityColonyBuilding (com.minecolonies.api.tileentities.TileEntityColonyBuilding)2 TileEntityRack (com.minecolonies.api.tileentities.TileEntityRack)2 InventoryUtils (com.minecolonies.api.util.InventoryUtils)2