Search in sources :

Example 1 with ITag

use of net.minecraft.tags.ITag in project minecolonies by Minecolonies.

the class Tag method deserialize.

/**
 * Deserialize the deliverable.
 *
 * @param controller the controller.
 * @param compound   the compound.
 * @return the deliverable.
 */
public static Tag deserialize(final IFactoryController controller, final CompoundNBT compound) {
    final ITag<Item> theTag = ItemTags.bind(compound.getString(NBT_TAG));
    final ItemStack result = compound.getAllKeys().contains(NBT_RESULT) ? ItemStackUtils.deserializeFromNBT(compound.getCompound(NBT_RESULT)) : ItemStackUtils.EMPTY;
    int count = compound.getInt("size");
    int minCount = count;
    if (compound.getAllKeys().contains(NBT_COUNT)) {
        count = compound.getInt(NBT_COUNT);
        minCount = compound.getInt(NBT_MINCOUNT);
    }
    return new Tag(theTag, result, count, minCount);
}
Also used : Item(net.minecraft.item.Item) ITag(net.minecraft.tags.ITag) ItemStack(net.minecraft.item.ItemStack)

Example 2 with ITag

use of net.minecraft.tags.ITag in project minecolonies by Minecolonies.

the class AbstractEntityAIBasic method checkIfRequestForTagExistOrCreateAsynch.

/**
 * Check if a tag has been requested already or is in the inventory. If not in the inventory and not requested already, create request
 *
 * @param tag the requested tag.
 * @return true if in the inventory, else false.
 */
public boolean checkIfRequestForTagExistOrCreateAsynch(@NotNull final ITag<Item> tag, final int count) {
    if (InventoryUtils.hasItemInItemHandler(worker.getInventoryCitizen(), stack -> stack.getItem().is(tag) && stack.getCount() >= count)) {
        return true;
    }
    if (InventoryUtils.getCountFromBuilding(getOwnBuilding(), itemStack -> itemStack.getItem().is(tag)) >= count && InventoryUtils.transferXOfFirstSlotInProviderWithIntoNextFreeSlotInItemHandler(getOwnBuilding(), itemStack -> itemStack.getItem().is(tag), count, worker.getInventoryCitizen())) {
        return true;
    }
    if (getOwnBuilding().getOpenRequestsOfTypeFiltered(worker.getCitizenData(), TypeConstants.TAG_REQUEST, (IRequest<? extends com.minecolonies.api.colony.requestsystem.requestable.Tag> r) -> r.getRequest().getTag().equals(tag)).isEmpty() && getOwnBuilding().getCompletedRequestsOfTypeFiltered(worker.getCitizenData(), TypeConstants.TAG_REQUEST, (IRequest<? extends com.minecolonies.api.colony.requestsystem.requestable.Tag> r) -> r.getRequest().getTag().equals(tag)).isEmpty()) {
        final IDeliverable tagRequest = new com.minecolonies.api.colony.requestsystem.requestable.Tag(tag, count);
        worker.getCitizenData().createRequestAsync(tagRequest);
    }
    return false;
}
Also used : IItemHandler(net.minecraftforge.items.IItemHandler) IRequest(com.minecolonies.api.colony.requestsystem.request.IRequest) Item(net.minecraft.item.Item) Direction(net.minecraft.util.Direction) AbstractJob(com.minecolonies.coremod.colony.jobs.AbstractJob) TranslationTextComponent(net.minecraft.util.text.TranslationTextComponent) JobDeliveryman(com.minecolonies.coremod.colony.jobs.JobDeliveryman) IAIState(com.minecolonies.api.entity.ai.statemachine.states.IAIState) BlockTags(net.minecraft.tags.BlockTags) JobEntry(com.minecolonies.api.colony.jobs.registry.JobEntry) AITarget(com.minecolonies.api.entity.ai.statemachine.AITarget) BlockState(net.minecraft.block.BlockState) CitizenConstants(com.minecolonies.api.util.constant.CitizenConstants) Constants(com.minecolonies.api.util.constant.Constants) TranslationConstants(com.minecolonies.api.util.constant.TranslationConstants) AIEventTarget(com.minecolonies.api.entity.ai.statemachine.AIEventTarget) EntityCitizenWalkToProxy(com.minecolonies.coremod.entity.pathfinding.EntityCitizenWalkToProxy) TOOL_LEVEL_WOOD_OR_GOLD(com.minecolonies.api.util.constant.ToolLevelConstants.TOOL_LEVEL_WOOD_OR_GOLD) Predicate(java.util.function.Predicate) Collection(java.util.Collection) RequestState(com.minecolonies.api.colony.requestsystem.request.RequestState) ChatPriority(com.minecolonies.api.colony.interactionhandling.ChatPriority) AbstractBuilding(com.minecolonies.coremod.colony.buildings.AbstractBuilding) StandardInteraction(com.minecolonies.coremod.colony.interactionhandling.StandardInteraction) Nullable(org.jetbrains.annotations.Nullable) List(java.util.List) IRequestResolver(com.minecolonies.api.colony.requestsystem.resolver.IRequestResolver) WorkerBuildingModule(com.minecolonies.coremod.colony.buildings.modules.WorkerBuildingModule) WorkerUtil(com.minecolonies.coremod.util.WorkerUtil) FMLEnvironment(net.minecraftforge.fml.loading.FMLEnvironment) CapabilityItemHandler(net.minecraftforge.items.CapabilityItemHandler) ItemStorage(com.minecolonies.api.crafting.ItemStorage) IToolType(com.minecolonies.api.util.constant.IToolType) NotNull(org.jetbrains.annotations.NotNull) TileEntityRack(com.minecolonies.api.tileentities.TileEntityRack) ICapabilityProvider(net.minecraftforge.common.capabilities.ICapabilityProvider) ICitizenData(com.minecolonies.api.colony.ICitizenData) TypeToken(com.google.common.reflect.TypeToken) AbstractDeliverymanRequestable.getMaxBuildingPriority(com.minecolonies.api.colony.requestsystem.requestable.deliveryman.AbstractDeliverymanRequestable.getMaxBuildingPriority) PosBasedInteraction(com.minecolonies.coremod.colony.interactionhandling.PosBasedInteraction) ArrayList(java.util.ArrayList) ItemStack(net.minecraft.item.ItemStack) Lists(com.google.common.collect.Lists) ImmutableList(com.google.common.collect.ImmutableList) Tool(com.minecolonies.api.colony.requestsystem.requestable.Tool) StationRequestResolver(com.minecolonies.coremod.colony.requestsystem.resolvers.StationRequestResolver) Hand(net.minecraft.util.Hand) ITEM_HANDLER_CAPABILITY(net.minecraftforge.items.CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) com.minecolonies.api.util(com.minecolonies.api.util) Stack(com.minecolonies.api.colony.requestsystem.requestable.Stack) IDeliverable(com.minecolonies.api.colony.requestsystem.requestable.IDeliverable) IWalkToProxy(com.minecolonies.api.entity.ai.pathfinding.IWalkToProxy) ILocation(com.minecolonies.api.colony.requestsystem.location.ILocation) ChestTileEntity(net.minecraft.tileentity.ChestTileEntity) AIBlockingEventType(com.minecolonies.api.entity.ai.statemachine.states.AIBlockingEventType) ITag(net.minecraft.tags.ITag) BlockPos(net.minecraft.util.math.BlockPos) AIWorkerState(com.minecolonies.api.entity.ai.statemachine.states.AIWorkerState) TypeConstants(com.minecolonies.api.util.constant.TypeConstants) InventoryCitizen(com.minecolonies.api.inventory.InventoryCitizen) IBuilding(com.minecolonies.api.colony.buildings.IBuilding) TileEntity(net.minecraft.tileentity.TileEntity) ToolType(com.minecolonies.api.util.constant.ToolType) AbstractDeliverymanRequestable.scaledPriority(com.minecolonies.api.colony.requestsystem.requestable.deliveryman.AbstractDeliverymanRequestable.scaledPriority) IJob(com.minecolonies.api.colony.jobs.IJob) IRequest(com.minecolonies.api.colony.requestsystem.request.IRequest) ITag(net.minecraft.tags.ITag) IDeliverable(com.minecolonies.api.colony.requestsystem.requestable.IDeliverable)

Example 3 with ITag

use of net.minecraft.tags.ITag in project minecolonies by ldtteam.

the class AbstractEntityAIBasic method checkIfRequestForTagExistOrCreateAsynch.

/**
 * Check if a tag has been requested already or is in the inventory. If not in the inventory and not requested already, create request
 *
 * @param tag the requested tag.
 * @return true if in the inventory, else false.
 */
public boolean checkIfRequestForTagExistOrCreateAsynch(@NotNull final ITag<Item> tag, final int count) {
    if (InventoryUtils.hasItemInItemHandler(worker.getInventoryCitizen(), stack -> stack.getItem().is(tag) && stack.getCount() >= count)) {
        return true;
    }
    if (InventoryUtils.getCountFromBuilding(getOwnBuilding(), itemStack -> itemStack.getItem().is(tag)) >= count && InventoryUtils.transferXOfFirstSlotInProviderWithIntoNextFreeSlotInItemHandler(getOwnBuilding(), itemStack -> itemStack.getItem().is(tag), count, worker.getInventoryCitizen())) {
        return true;
    }
    if (getOwnBuilding().getOpenRequestsOfTypeFiltered(worker.getCitizenData(), TypeConstants.TAG_REQUEST, (IRequest<? extends com.minecolonies.api.colony.requestsystem.requestable.Tag> r) -> r.getRequest().getTag().equals(tag)).isEmpty() && getOwnBuilding().getCompletedRequestsOfTypeFiltered(worker.getCitizenData(), TypeConstants.TAG_REQUEST, (IRequest<? extends com.minecolonies.api.colony.requestsystem.requestable.Tag> r) -> r.getRequest().getTag().equals(tag)).isEmpty()) {
        final IDeliverable tagRequest = new com.minecolonies.api.colony.requestsystem.requestable.Tag(tag, count);
        worker.getCitizenData().createRequestAsync(tagRequest);
    }
    return false;
}
Also used : IItemHandler(net.minecraftforge.items.IItemHandler) IRequest(com.minecolonies.api.colony.requestsystem.request.IRequest) Item(net.minecraft.item.Item) Direction(net.minecraft.util.Direction) AbstractJob(com.minecolonies.coremod.colony.jobs.AbstractJob) TranslationTextComponent(net.minecraft.util.text.TranslationTextComponent) JobDeliveryman(com.minecolonies.coremod.colony.jobs.JobDeliveryman) IAIState(com.minecolonies.api.entity.ai.statemachine.states.IAIState) BlockTags(net.minecraft.tags.BlockTags) JobEntry(com.minecolonies.api.colony.jobs.registry.JobEntry) AITarget(com.minecolonies.api.entity.ai.statemachine.AITarget) BlockState(net.minecraft.block.BlockState) CitizenConstants(com.minecolonies.api.util.constant.CitizenConstants) Constants(com.minecolonies.api.util.constant.Constants) TranslationConstants(com.minecolonies.api.util.constant.TranslationConstants) AIEventTarget(com.minecolonies.api.entity.ai.statemachine.AIEventTarget) EntityCitizenWalkToProxy(com.minecolonies.coremod.entity.pathfinding.EntityCitizenWalkToProxy) TOOL_LEVEL_WOOD_OR_GOLD(com.minecolonies.api.util.constant.ToolLevelConstants.TOOL_LEVEL_WOOD_OR_GOLD) Predicate(java.util.function.Predicate) Collection(java.util.Collection) RequestState(com.minecolonies.api.colony.requestsystem.request.RequestState) ChatPriority(com.minecolonies.api.colony.interactionhandling.ChatPriority) AbstractBuilding(com.minecolonies.coremod.colony.buildings.AbstractBuilding) StandardInteraction(com.minecolonies.coremod.colony.interactionhandling.StandardInteraction) Nullable(org.jetbrains.annotations.Nullable) List(java.util.List) IRequestResolver(com.minecolonies.api.colony.requestsystem.resolver.IRequestResolver) WorkerBuildingModule(com.minecolonies.coremod.colony.buildings.modules.WorkerBuildingModule) WorkerUtil(com.minecolonies.coremod.util.WorkerUtil) FMLEnvironment(net.minecraftforge.fml.loading.FMLEnvironment) CapabilityItemHandler(net.minecraftforge.items.CapabilityItemHandler) ItemStorage(com.minecolonies.api.crafting.ItemStorage) IToolType(com.minecolonies.api.util.constant.IToolType) NotNull(org.jetbrains.annotations.NotNull) TileEntityRack(com.minecolonies.api.tileentities.TileEntityRack) ICapabilityProvider(net.minecraftforge.common.capabilities.ICapabilityProvider) ICitizenData(com.minecolonies.api.colony.ICitizenData) TypeToken(com.google.common.reflect.TypeToken) AbstractDeliverymanRequestable.getMaxBuildingPriority(com.minecolonies.api.colony.requestsystem.requestable.deliveryman.AbstractDeliverymanRequestable.getMaxBuildingPriority) PosBasedInteraction(com.minecolonies.coremod.colony.interactionhandling.PosBasedInteraction) ArrayList(java.util.ArrayList) ItemStack(net.minecraft.item.ItemStack) Lists(com.google.common.collect.Lists) ImmutableList(com.google.common.collect.ImmutableList) Tool(com.minecolonies.api.colony.requestsystem.requestable.Tool) StationRequestResolver(com.minecolonies.coremod.colony.requestsystem.resolvers.StationRequestResolver) Hand(net.minecraft.util.Hand) ITEM_HANDLER_CAPABILITY(net.minecraftforge.items.CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) com.minecolonies.api.util(com.minecolonies.api.util) Stack(com.minecolonies.api.colony.requestsystem.requestable.Stack) IDeliverable(com.minecolonies.api.colony.requestsystem.requestable.IDeliverable) IWalkToProxy(com.minecolonies.api.entity.ai.pathfinding.IWalkToProxy) ILocation(com.minecolonies.api.colony.requestsystem.location.ILocation) ChestTileEntity(net.minecraft.tileentity.ChestTileEntity) AIBlockingEventType(com.minecolonies.api.entity.ai.statemachine.states.AIBlockingEventType) ITag(net.minecraft.tags.ITag) BlockPos(net.minecraft.util.math.BlockPos) AIWorkerState(com.minecolonies.api.entity.ai.statemachine.states.AIWorkerState) TypeConstants(com.minecolonies.api.util.constant.TypeConstants) InventoryCitizen(com.minecolonies.api.inventory.InventoryCitizen) IBuilding(com.minecolonies.api.colony.buildings.IBuilding) TileEntity(net.minecraft.tileentity.TileEntity) ToolType(com.minecolonies.api.util.constant.ToolType) AbstractDeliverymanRequestable.scaledPriority(com.minecolonies.api.colony.requestsystem.requestable.deliveryman.AbstractDeliverymanRequestable.scaledPriority) IJob(com.minecolonies.api.colony.jobs.IJob) IRequest(com.minecolonies.api.colony.requestsystem.request.IRequest) ITag(net.minecraft.tags.ITag) IDeliverable(com.minecolonies.api.colony.requestsystem.requestable.IDeliverable)

Example 4 with ITag

use of net.minecraft.tags.ITag in project minecolonies by Minecolonies.

the class Tag method deserialize.

public static Tag deserialize(final IFactoryController controller, final PacketBuffer buffer) {
    final ITag<Item> theTag = ItemTags.getAllTags().getTag(ResourceLocation.tryParse(buffer.readUtf(32767)));
    final ItemStack result = buffer.readBoolean() ? buffer.readItem() : ItemStack.EMPTY;
    final int count = buffer.readInt();
    final int minCount = buffer.readInt();
    return new Tag(theTag, result, count, minCount);
}
Also used : Item(net.minecraft.item.Item) ITag(net.minecraft.tags.ITag) ItemStack(net.minecraft.item.ItemStack)

Example 5 with ITag

use of net.minecraft.tags.ITag in project Mekanism by mekanism.

the class ChemicalCrystallizerRecipeCategory method setRecipe.

@Override
public void setRecipe(IRecipeLayout recipeLayout, ChemicalCrystallizerRecipe recipe, IIngredients ingredients) {
    IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks();
    initItem(itemStacks, 0, false, output, recipe.getOutputDefinition());
    IChemicalStackIngredient<?, ?> input = recipe.getInput();
    if (input instanceof GasStackIngredient) {
        initChemical(recipeLayout, recipe, MekanismJEI.TYPE_GAS, (GasStackIngredient) input, null);
    } else if (input instanceof InfusionStackIngredient) {
        initChemical(recipeLayout, recipe, MekanismJEI.TYPE_INFUSION, (InfusionStackIngredient) input, null);
    } else if (input instanceof PigmentStackIngredient) {
        initChemical(recipeLayout, recipe, MekanismJEI.TYPE_PIGMENT, (PigmentStackIngredient) input, null);
    } else if (input instanceof SlurryStackIngredient) {
        SlurryStackIngredient slurryInput = (SlurryStackIngredient) input;
        Set<ITag<Item>> tags = new HashSet<>();
        for (SlurryStack slurryStack : slurryInput.getRepresentations()) {
            Slurry slurry = slurryStack.getType();
            if (!slurry.isIn(MekanismTags.Slurries.DIRTY)) {
                ITag<Item> oreTag = slurry.getOreTag();
                if (oreTag != null) {
                    tags.add(oreTag);
                }
            }
        }
        if (tags.size() == 1) {
            initChemical(recipeLayout, recipe, MekanismJEI.TYPE_SLURRY, slurryInput, itemStacks);
            // TODO: Eventually come up with a better way to do this to allow for if there outputs based on the input and multiple input types
            tags.stream().findFirst().ifPresent(tag -> initItem(itemStacks, 1, false, slurryOreSlot, tag.getValues().stream().map(ItemStack::new).collect(Collectors.toList())));
        } else {
            initChemical(recipeLayout, recipe, MekanismJEI.TYPE_SLURRY, slurryInput, null);
        }
    }
}
Also used : IOreInfo(mekanism.client.gui.machine.GuiChemicalCrystallizer.IOreInfo) ChemicalStack(mekanism.api.chemical.ChemicalStack) Item(net.minecraft.item.Item) IIngredients(mezz.jei.api.ingredients.IIngredients) ChemicalCrystallizerRecipe(mekanism.api.recipes.ChemicalCrystallizerRecipe) GuiGasGauge(mekanism.client.gui.element.gauge.GuiGasGauge) IGuiHelper(mezz.jei.api.helpers.IGuiHelper) SlurryStack(mekanism.api.chemical.slurry.SlurryStack) HashSet(java.util.HashSet) GuiGauge(mekanism.client.gui.element.gauge.GuiGauge) ItemStack(net.minecraft.item.ItemStack) Map(java.util.Map) Slurry(mekanism.api.chemical.slurry.Slurry) Nonnull(javax.annotation.Nonnull) MekanismBlocks(mekanism.common.registries.MekanismBlocks) IRecipeLayout(mezz.jei.api.gui.IRecipeLayout) MatrixStack(com.mojang.blaze3d.matrix.MatrixStack) WeakHashMap(java.util.WeakHashMap) Nullable(javax.annotation.Nullable) BaseRecipeCategory(mekanism.client.jei.BaseRecipeCategory) SlotOverlay(mekanism.common.inventory.container.slot.SlotOverlay) SlotType(mekanism.client.gui.element.slot.SlotType) DataType(mekanism.common.tile.component.config.DataType) Set(java.util.Set) ITag(net.minecraft.tags.ITag) PigmentStackIngredient(mekanism.api.recipes.inputs.chemical.PigmentStackIngredient) GuiChemicalCrystallizer(mekanism.client.gui.machine.GuiChemicalCrystallizer) Collectors(java.util.stream.Collectors) MekanismJEI(mekanism.client.jei.MekanismJEI) IGuiItemStackGroup(mezz.jei.api.gui.ingredient.IGuiItemStackGroup) GuiInnerScreen(mekanism.client.gui.element.GuiInnerScreen) IGuiIngredient(mezz.jei.api.gui.ingredient.IGuiIngredient) ProgressType(mekanism.client.gui.element.progress.ProgressType) SlurryStackIngredient(mekanism.api.recipes.inputs.chemical.SlurryStackIngredient) GasStackIngredient(mekanism.api.recipes.inputs.chemical.GasStackIngredient) IIngredientType(mezz.jei.api.ingredients.IIngredientType) GaugeType(mekanism.client.gui.element.gauge.GaugeType) IGuiIngredientGroup(mezz.jei.api.gui.ingredient.IGuiIngredientGroup) MekanismTags(mekanism.common.tags.MekanismTags) VanillaTypes(mezz.jei.api.constants.VanillaTypes) Collections(java.util.Collections) IChemicalStackIngredient(mekanism.api.recipes.inputs.chemical.IChemicalStackIngredient) BoxedChemicalStack(mekanism.api.chemical.merged.BoxedChemicalStack) InfusionStackIngredient(mekanism.api.recipes.inputs.chemical.InfusionStackIngredient) GuiSlot(mekanism.client.gui.element.slot.GuiSlot) HashSet(java.util.HashSet) Set(java.util.Set) PigmentStackIngredient(mekanism.api.recipes.inputs.chemical.PigmentStackIngredient) IGuiItemStackGroup(mezz.jei.api.gui.ingredient.IGuiItemStackGroup) GasStackIngredient(mekanism.api.recipes.inputs.chemical.GasStackIngredient) Item(net.minecraft.item.Item) ITag(net.minecraft.tags.ITag) Slurry(mekanism.api.chemical.slurry.Slurry) SlurryStackIngredient(mekanism.api.recipes.inputs.chemical.SlurryStackIngredient) ItemStack(net.minecraft.item.ItemStack) SlurryStack(mekanism.api.chemical.slurry.SlurryStack) InfusionStackIngredient(mekanism.api.recipes.inputs.chemical.InfusionStackIngredient)

Aggregations

ITag (net.minecraft.tags.ITag)8 Item (net.minecraft.item.Item)7 ItemStack (net.minecraft.item.ItemStack)7 ImmutableList (com.google.common.collect.ImmutableList)2 Lists (com.google.common.collect.Lists)2 TypeToken (com.google.common.reflect.TypeToken)2 ICitizenData (com.minecolonies.api.colony.ICitizenData)2 IBuilding (com.minecolonies.api.colony.buildings.IBuilding)2 ChatPriority (com.minecolonies.api.colony.interactionhandling.ChatPriority)2 IJob (com.minecolonies.api.colony.jobs.IJob)2 JobEntry (com.minecolonies.api.colony.jobs.registry.JobEntry)2 ILocation (com.minecolonies.api.colony.requestsystem.location.ILocation)2 IRequest (com.minecolonies.api.colony.requestsystem.request.IRequest)2 RequestState (com.minecolonies.api.colony.requestsystem.request.RequestState)2 IDeliverable (com.minecolonies.api.colony.requestsystem.requestable.IDeliverable)2 Stack (com.minecolonies.api.colony.requestsystem.requestable.Stack)2 Tool (com.minecolonies.api.colony.requestsystem.requestable.Tool)2 AbstractDeliverymanRequestable.getMaxBuildingPriority (com.minecolonies.api.colony.requestsystem.requestable.deliveryman.AbstractDeliverymanRequestable.getMaxBuildingPriority)2 AbstractDeliverymanRequestable.scaledPriority (com.minecolonies.api.colony.requestsystem.requestable.deliveryman.AbstractDeliverymanRequestable.scaledPriority)2 IRequestResolver (com.minecolonies.api.colony.requestsystem.resolver.IRequestResolver)2